Remove test specific code in the GeneralDelegator
-------------------------------------------------

                 Key: OFBIZ-3748
                 URL: https://issues.apache.org/jira/browse/OFBIZ-3748
             Project: OFBiz
          Issue Type: Bug
          Components: framework
    Affects Versions: SVN trunk
            Reporter: Bob Morley
         Attachments: OFBIZ-3748_TestGenericDelegator.patch

Adam -- This is the results from our conversation on consistent rolling back of 
unit testers.  We talked about moving the logic that is in the GenericDelegator 
that is specific to testing into a sub-class.  This patch is NOT meant to be 
merged at this time, I wanted to put it up for review before I continue down 
this path ...

Here are the key pieces:

- TestGenericDelegator - test version of a generic delegator that contains the 
ability to record the list of database operations and then programmatically 
roll them back in reverse order.  This was from existing code in 
GenericDelegator.

- TestDelegatorFactoryImpl - a new service implementation of DelegatoryFactor 
that will construct instances of TestGenericDelegator.

Things to consider:

- Should rollback be on the Delegator interface?  I sort of field it should not 
be there; but I left it there for now with GenericDelegator reporting an error 
if it is called.

- Since there are two implementations of the DelegatorFactory there needs to be 
a way to determine which one to use; the way I have done this in the past is 
through configuration.  Usually something like ... 
service.org.ofbiz.entity.DelegatorFactory=org.ofbiz.entity.DelegatorFactoryImpl 
that could (for Ofbiz) be placed in the start.properties or test.properties 
file.  However, looking at the factory unit tester it looks like each factory 
should be able to determine if it is applicable based on the incoming 
parameters.  As a result (until more discussion) I have made a choice based on 
the delegator name -- I know this is clearly NOT the go forward method.  But 
would like some suggestions here ... was considering a new attribute on the 
entityengine.xml delegator definition, but there should be some mechanism to be 
able to provide control over which implementation is used I would think ...

- I got an inkling that "base delegator name" may not be required anymore.  
This is because I no longer create the standard delegator and then "clone" to a 
test version.  I simply instantiate the proper version right up front ... 
Moreover, I let the delegator / dispatcher names be as they are (not adding a 
random alpha-numeric suffix).  Not sure about this, did not research further.

Go forward plan --

- If there are agreement on these changes and a resolution for things to 
consider point #2 above, I would then re-code my standalone rollback base class 
for unit tests to leverage this functionality.  This would ensure we 
consistently rollback regardless of executing the test directly or through the 
test infrastructure.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to