void setupTag(Object tag,
Map args,
ObjectWrapper wrapper) throws InvocationTargetException, TemplateModelException, IllegalAccessException {
BeansWrapper bwrapper =
wrapper instanceof BeansWrapper
? (BeansWrapper)wrapper
: BeansWrapper.getDefaultInstance();
if(args != null && !args.isEmpty()) {
Object[] aarg = new Object[1];
for (Iterator iter = args.entrySet().iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry) iter.next();
Object arg = bwrapper.unwrap((TemplateModel)entry.getValue());
aarg[0] = arg;
Method m = (Method)propertySetters.get(entry.getKey());
if (m == null) {
if (dynaSetter == null) {
throw new TemplateModelException("Unknown property "
+ StringUtil.jQuote(entry.getKey().toString())
+ " on instance of " + tagClass.getName());
}
else {
dynaSetter.invoke(tag, new Object[] {null, entry.getKey(), aarg[0]});
}
}
else {
if(arg instanceof BigDecimal) {
aarg[0] = BeansWrapper.coerceBigDecimal(
(BigDecimal)arg, m.getParameterTypes()[0]);
}
m.invoke(tag, aarg);
}
}
}
}
|