enhancer generates invalid code if fetch-groups is activated
------------------------------------------------------------

                 Key: OPENJPA-1912
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1912
             Project: OpenJPA
          Issue Type: Bug
          Components: Enhance
    Affects Versions: 2.0.1, 2.0.0, 2.1.0
            Reporter: Mark Struberg
            Priority: Critical


If openjpa.DetachState =fetch-groups is used, the enhancer will add a 
'implements Externalizable' + writeExternal + readExternal.

The problem is, that writeExternal and readExternal will also try to 
externalize the private members of any given superclass. Thus we get a runtime 
Exception that we are not allowed to access those fields.

Example:

@Entity
public abstract class AbstractGroup {
   ...
    @Temporal(TemporalType.TIMESTAMP)
    @TrackChanges
    private Date applicationBegin;
 ...
}

and 

@Entity
public class Group extends AbstractGroup {
...
}

will result in the following code (decompiled with jad):

    public void writeExternal(ObjectOutput objectoutput)
        throws IOException
    {
        pcWriteUnmanaged(objectoutput);
        if(pcStateManager != null)
        {
            if(pcStateManager.writeDetached(objectoutput))
                return;
        } else
        {
            objectoutput.writeObject(pcGetDetachedState());
            objectoutput.writeObject(null);
        }
        objectoutput.writeObject(applicationBegin);
        objectoutput.writeObject(applicationEnd);
        objectoutput.writeObject(applicationLocked);
        objectoutput.writeObject(approvalRequired);
 ...



-- 
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