On 5/18/2012 5:50 AM, Adam Heath wrote:
On 05/17/2012 12:23 PM, Jacopo Cappellato wrote:
file are attached; that bug tracker is really awful.

This is all becoming very troubling.

== example methods
String a(String name, List list) {}
String a(String name, Map map) {}
String a(Object[] args) {}

String b(String name, List list) {}
String b(String name, Map map) {}
String b(Object... args) {}

== example templates
${object.a(string, null)}
${object.b(string, null)}

==

In 2.3.18, freemarker can't find any methods at all. In 2.3.19, it can find the b vararg method. In either situation, that is wrong.

The correct situation for both is to say there are 2 matching methods, the List and Map variants. Without my patch, when a null is used, any non-primitive method will never be considered as a possible candidate.

I'm still discussing with freemarker upstream, but I get the feeling that they won't provide a fix for the 2.3 branch, and a true, correct fix for 2.4 will be long in coming.

This means we need to come up with a workaround for ofbiz. I'm up for suggestions. We really can't undo the change, that just doesn't seem right to me.
.

In my experience with FreeMarker, there are a lot of things that are replaceable - like TemplateLoader and TemplateExceptionHandler. Does FreeMarker have a "Object Method Resolver" that we can replace? Would a custom BeansWrapper help?

-Adrian

Reply via email to