Adrian Crum wrote:
> Adam Heath wrote:
>> [email protected] wrote:
>>> Author: adrianc
>>> Date: Sun Aug  9 18:04:26 2009
>>> New Revision: 802567
>>>
>>> URL: http://svn.apache.org/viewvc?rev=802567&view=rev
>>> Log:
>>> Refactored GenericDelegator:
>>>
>>> 1. Converted GenericDelegator to an interface. We already have
>>> DelegatorInterface, but it isn't being used anywhere. Removed
>>> DelegatorInterface.java.
>>>
>>> 2. Extracted the static, cached data from the GenericDelegator
>>> implementation and put it in its own class - DelegatorData. The
>>> GenericDelegator implementation holds a reference to the
>>> DelegatorData instance. This makes it possible to have per-thread
>>> instances of GenericDelegator.
>>>
>>> 3. Replaced the ThreadLocal variables with regular variables.
>>> ThreadLocal variables are no longer needed. Client code doesn't need
>>> to be concerned with pushing and popping the GenericDelegator state.
>>>
>>> This commit paves the way for the forthcoming ExecutionContext.
>>>
>>> User modifications will have to replace
>>> GenericDelegator.getGenericDelegator(...) with
>>> DelegatorFactory.getGenericDelegator(...). Also, replace the push
>>> code with the new setXxx methods, and remove the pop code. If
>>> modifications used DelegatorInterface, replace that with
>>> GenericDelegator.
>>>
>>> Aside from those changes, this commit is backwards compatible.
>>
>> No, it is not backwards compatible.
>>
>> When a java class is compiled, the bytecode requests an interface
>> named 'foo', or a class named 'foo'.  If 'foo' changes from class to
>> interface, then pre-compiled classes will *not* load.
>>
>> Please, change GenericDelegator back to a class.
>>
>> If DelegatorInterface wasn't used, and was just not uptodate with the
>> method signatures, wouldn't the simpler thing have been to improve
>> DelegatorInterface, then to change the class itself?  It seems more
>> work to change the class to an interface.
>>
>> I have external code(webslinger) that needs to support multiple
>> versions of ofbiz(one all the way back to 512946).  This change makes
>> that impossible.  I have to have multiple versions of ofbiz
>> installed(pre/post this change), and compile the class once for each
>> ofbiz version.
> 
> Which is easier: rewrite all your Webslinger code to reference
> DelegatorInterface instead of GenericDelegator, or just recompile your
> existing code without making any changes?

That's just it, I wouldn't have to recompile *at all*, if
GenericDelegator stayed a class.  Nor would anyone else.

Reply via email to