org.datanucleus.enhancer.asm.method
Class JdoCopyKeyFieldsFromObjectId2
java.lang.Object
org.datanucleus.enhancer.ClassMethod
org.datanucleus.enhancer.asm.ASMClassMethod
org.datanucleus.enhancer.asm.method.JdoCopyKeyFieldsFromObjectId2
public class JdoCopyKeyFieldsFromObjectId2
- extends ASMClassMethod
Method to generate the method "jdoCopyKeyFieldsFromObjectId" using ASM.
For datastore/nondurable identity
protected void jdoCopyKeyFieldsFromObjectId(Object object)
{
}
and for SingleFieldIdentity
protected void jdoCopyKeyFieldsFromObjectId(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 jdoCopyKeyFieldsFromObjectId(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 jdoCopyKeyFieldsFromObjectId(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.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.
- Version:
- $Revision: 1.21 $
JdoCopyKeyFieldsFromObjectId2
public JdoCopyKeyFieldsFromObjectId2(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 JdoCopyKeyFieldsFromObjectId2 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.