Hi,

>>> changing a method call from ellipsis signature to the other. I introduced 
>>> UtilMisc.toMap for the
>>> last argument because I had 2
>>> values and changed for one only, hence ellipsis could not be used. I did 
>>> that in a hurry, not
>>> thinking about the argument swap.
> 
> Let me try to explain from your example:
> 
> delegator.findOne("Entity", true, "field1", value1, "field2", value2);
> and tried to change it to:
> delegator.findOne("Entity", true, UtilMisc.toMap("field1", value1));

Now that Scott has told us that UtilMisc.toMap() supports the case where there 
is only one param and
it already is a map, I don't see any reason to change the signature.

I just tried it out. All three those lines found the right entity for me:

delegator.findOne("Product", true, "productId", testProductId);
delegator.findOne("Product", UtilMisc.toMap("productId", testProductId), true);
delegator.findOne("Product", true, UtilMisc.toMap("productId", testProductId));

I'm against changing the signature. I like the decreasing importance structure 
of the parameters
(what-which-how/entityname-conditions-useCache) the find* methods have. And we 
would have quite some
code to migrate.

BTW, we usually would write the statement in Groovy like that:

delegator.findOne("Product", [productId: testProductId], true)

We changed the ant tasks so we can use Groovy also for the compiled code -- 
service and event
classes -- not only for action scripts. Maybe this is something the OFBiz 
project wants to consider.
I think it makes most of the code easier to write and read.
A disadvantage is, that the compile times are significantly higher. But it 
isn't often that one
needs to do a clean build. :-)

Martin

Reply via email to