From: "Adam Heath" <doo...@brainfood.com>
Why do SimpleMethod.java and ModelScreen.java both do
context.put("null", GenericEntity.NULL_FIELD)?

For ModelScreen.java.renderScreenString(), and SimpleMethod.exec()
I just can say that it's there for age, at least since we came out of ASF 
incubation.

ModelScreen.java.renderScreenString(), the comment says
// make sure the "null" object is in there for entity ops

in SimpleMethod.exec(), I read
// always put the null field object in as "null"
methodContext.putEnv("null", GenericEntity.NULL_FIELD);
methodContext.putEnv("nullField", GenericEntity.NULL_FIELD);

I guess it's also related to entity ops.

I agree that the use of GenericEntity.NULL_FIELD in relation with null is not 
consistent in OFBiz and that's an issue. I already
crossed it working on
https://issues.apache.org/jira/browse/OFBIZ-4602 (totally unrelated though; 
there is a discrepancy between entitysync and services)

That changes *all* null
values in freemarker into that static instance, even when the target
type of the variable is *not* going to be part of some entity-like map.

If I remove both of those calls(actually, remove one, change the other
to place it as "nullField"), then the broken ordermgr link given earlier
starts to finally work.  And, I think that even the nullField constant
should not be removed, as NullField should only be used internally by
the entity engine.

From ScreenRenderer.populateBasicContext(), where I read
// make sure the "nullField" object is in there for entity ops; note this is 
nullField and not null because as null causes problems
in FreeMarker and such...
context.put("nullField", GenericEntity.NULL_FIELD);

I think you are heading in the right direction. But I wonder if you will not 
discover other issues (like I did with OFBIZ-4602)

HTH

Jacques

Reply via email to