org.datanucleus.enhancer.asm.method
Class JdoCopyKeyFieldsFromObjectId
java.lang.Object
org.datanucleus.enhancer.ClassMethod
org.datanucleus.enhancer.asm.ASMClassMethod
org.datanucleus.enhancer.asm.method.JdoCopyKeyFieldsFromObjectId
public class JdoCopyKeyFieldsFromObjectId
- extends ASMClassMethod
Method to generate the method "jdoCopyKeyFieldsFromObjectId" using ASM.
For datastore/nondurable identity this is
public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
{
}
and for SingleFieldIdentity it is
public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
{
if (fc == null)
throw new IllegalArgumentException("ObjectIdFieldConsumer is null");
if (!(oid instanceof YYYIdentity))
throw new ClassCastException("oid is not instanceof YYYIdentity");
YYYIdentity o = (YYYIdentity) oid;
fc.storeYYYField(1, o.getKey());
}
and for user-defined primary keys
public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
{
if (fc == null)
throw new IllegalArgumentException("ObjectIdFieldConsumer is null");
if (!(oid instanceof UserPrimaryKey))
throw new ClassCastException("oid is not instanceof mydomain.UserPrimaryKey");
UserPrimaryKey o = (UserPrimaryKey) oid;
try
{
fc.storeYYYField(1, o.id);
fc.storeZZZField(2, o.name);
}
catch(Exception e) {}
}
and for CompoundIdentity
public void jdoCopyKeyFieldsFromObjectId(PersistenceCapable.ObjectIdFieldConsumer fc, Object oid)
{
if (fc == null)
throw new IllegalArgumentException("ObjectIdFieldConsumer is null");
if (!(oid instanceof UserPrimaryKey))
throw new ClassCastException("oid is not instanceof mydomain.UserPrimaryKey");
UserPrimaryKey o = (UserPrimaryKey) oid;
try
{
fc.storeYYYField(1, o.id);
fc.storeZZZField(2, jdoGetPersistenceManager().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.
JdoCopyKeyFieldsFromObjectId
public JdoCopyKeyFieldsFromObjectId(ClassEnhancer enhancer,
String name,
int access,
Object returnType,
Object[] argTypes,
String[] argNames)
- Constructor.
- Parameters:
enhancer - ClassEnhancername - Name of methodaccess - Access typereturnType - Return typeargTypes - Argument typesargNames - Argument names
getInstance
public static JdoCopyKeyFieldsFromObjectId getInstance(ASMClassEnhancer enhancer)
execute
public void execute()
- Method to add the contents of the class method.
- Specified by:
execute in class ClassMethod
Copyright © 2012. All Rights Reserved.