Class CopyKeyFieldsFromObjectId2

java.lang.Object
org.datanucleus.enhancer.ClassMethod
org.datanucleus.enhancer.methods.CopyKeyFieldsFromObjectId2

public class CopyKeyFieldsFromObjectId2 extends ClassMethod
Method to generate the method "dnCopyKeyFieldsFromObjectId" using ASM. For datastore/nondurable identity
 protected void dnCopyKeyFieldsFromObjectId(Object object)
 {
 }
 
and for SingleFieldIdentity
 protected void dnCopyKeyFieldsFromObjectId(Object oid)
 {
     if (!(oid instanceof YYYIdentity))
         throw new ClassCastException("key class is not YYYIdentity or null");
     YYYIdentity o = (YYYIdentity) oid;
     id = o.getKey();
 }
 
and for user-supplied app identity
 protected void dnCopyKeyFieldsFromObjectId(Object oid)
 {
     if (!(oid instanceof UserPrimaryKey))
         throw new ClassCastException("key class is not mydomain.UserPrimarKey or null");
     UserPrimaryKey o = (UserPrimaryKey) oid;
     try
     {
         zzz1 = o.zzz1;
         zzz2 = o.zzz2;
     }
     catch(Exception e) {}
 }
 
and for CompoundIdentity
 protected void dnCopyKeyFieldsFromObjectId(Object oid)
 {
     if (!(oid instanceof UserPrimaryKey))
         throw new ClassCastException("key class is not mydomain.UserPrimarKey or null");
     UserPrimaryKey o = (UserPrimaryKey) oid;
     try
     {
         zzz1 = o.zzz1;
         zzz2 = (ZZZ) this.dnGetPersistenceManager().getObjectById(o.zzz, false);
     }
     catch (Exception e) {}
 }
 
(the try-catch is for cases where we set the fields with reflection and it can throw an exception). There are some differences for fields .v. properties and also if fields in the PK are private.
Version:
$Revision: 1.21 $
  • Constructor Details

    • CopyKeyFieldsFromObjectId2

      public CopyKeyFieldsFromObjectId2(ClassEnhancer enhancer, String name, int access, Object returnType, Object[] argTypes, String[] argNames)
      Constructor.
      Parameters:
      enhancer - ClassEnhancer
      name - Name of method
      access - Access type
      returnType - Return type
      argTypes - Argument types
      argNames - Argument names
  • Method Details