/** * Wraps the given object for the given type into a OpenJPA specific * application identity object wrapper instance (i.e. ObjectId) if all of * the following is true: * the given type is not using built-in OpenJPA identity types * the given type is using a shared OpenJPA identity type * the given object is not already a wrapper identity type */ public static Object wrap(ClassMetaData meta, Object oid) { if (!meta.isOpenJPAIdentity() && meta.isObjectIdTypeShared() && !(oid instanceof ObjectId)) { return new ObjectId(meta.getDescribedType(), oid); } return oid; }
/** * Check if object id is set or not. */ public static boolean isIdSet(Object id, ClassMetaData meta, String mappedByIdFieldName) { Object key = null; if (meta.isOpenJPAIdentity()) key = ApplicationIds.getKey(id, meta); else key = ((ObjectId)id).getId(); Object val = null; if (mappedByIdFieldName.length() != 0) { if (((ObjectId)id).getId() == null) return false; Class<?> idClass = ((ObjectId)id).getId().getClass(); val = Reflection.get(key, Reflection.findField(idClass, mappedByIdFieldName, true)); } else val = key; boolean notSet = (val == null || (val instanceof String && ((String)val).length() == 0) || (val instanceof Number && ((Number)val).longValue() == 0)); return !notSet; }
/** * Sets the underlying id of an ObjectId. Should only * be used with simple (idclass) types. */ public static void setAppId(ObjectId id, Object newId) { id.setId(newId); }
if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: return new ObjectId(cls, koid.getIdObject(), koid.hasSubclasses()); case JavaTypes.DATE: : ((ObjectId) oid).getId(); copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy, ((OpenJPAId) oid).hasSubclasses()); return copy;
/** * Generate an application id based on the current primary key field state * of the given instance. */ public static Object create(PersistenceCapable pc, ClassMetaData meta) { if (pc == null) return null; Object oid = pc.pcNewObjectIdInstance(); if (oid == null) return null; if (!meta.isOpenJPAIdentity()) { pc.pcCopyKeyFieldsToObjectId(oid); return oid; } FieldMetaData pk = meta.getPrimaryKeyFields()[0]; if (pk.getDeclaredTypeCode() != JavaTypes.OID) return oid; // always copy oid object in case field value mutates or becomes // managed ObjectId objid = (ObjectId) oid; ClassMetaData embed = pk.getEmbeddedMetaData(); objid.setId(copy(objid.getId(), embed, embed.getFields())); return objid; }
if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: return new ObjectId(cls, koid.getIdObject(), koid.hasSubclasses()); case JavaTypes.DATE: : ((ObjectId) oid).getId(); copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy, ((OpenJPAId) oid).hasSubclasses()); return copy;
/** * Generate an application id based on the current primary key field state * of the given instance. */ public static Object create(PersistenceCapable pc, ClassMetaData meta) { if (pc == null) return null; Object oid = pc.pcNewObjectIdInstance(); if (oid == null) return null; if (!meta.isOpenJPAIdentity()) { pc.pcCopyKeyFieldsToObjectId(oid); return oid; } FieldMetaData pk = meta.getPrimaryKeyFields()[0]; if (pk.getDeclaredTypeCode() != JavaTypes.OID) return oid; // always copy oid object in case field value mutates or becomes // managed ObjectId objid = (ObjectId) oid; ClassMetaData embed = pk.getEmbeddedMetaData(); objid.setId(copy(objid.getId(), embed, embed.getFields())); return objid; }
/** * Check if object id is set or not. */ public static boolean isIdSet(Object id, ClassMetaData meta, String mappedByIdFieldName) { Object key = null; if (meta.isOpenJPAIdentity()) key = ApplicationIds.getKey(id, meta); else key = ((ObjectId)id).getId(); Object val = null; if (mappedByIdFieldName.length() != 0) { if (((ObjectId)id).getId() == null) return false; Class<?> idClass = ((ObjectId)id).getId().getClass(); val = Reflection.get(key, Reflection.findField(idClass, mappedByIdFieldName, true)); } else val = key; boolean notSet = (val == null || (val instanceof String && ((String)val).length() == 0) || (val instanceof Number && ((Number)val).longValue() == 0)); return !notSet; }
if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: return new ObjectId(cls, koid.getIdObject(), koid.hasSubclasses()); case JavaTypes.DATE: : ((ObjectId) oid).getId(); copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy, ((OpenJPAId) oid).hasSubclasses()); return copy;
/** * Wraps the given object for the given type into a OpenJPA specific * application identity object wrapper instance (i.e. ObjectId) if all of * the following is true: * the given type is not using built-in OpenJPA identity types * the given type is using a shared OpenJPA identity type * the given object is not already a wrapper identity type */ public static Object wrap(ClassMetaData meta, Object oid) { if (!meta.isOpenJPAIdentity() && meta.isObjectIdTypeShared() && !(oid instanceof ObjectId)) { return new ObjectId(meta.getDescribedType(), oid); } return oid; }
/** * Generate an application id based on the current primary key field state * of the given instance. */ public static Object create(PersistenceCapable pc, ClassMetaData meta) { if (pc == null) return null; Object oid = pc.pcNewObjectIdInstance(); if (oid == null) return null; if (!meta.isOpenJPAIdentity()) { pc.pcCopyKeyFieldsToObjectId(oid); return oid; } FieldMetaData pk = meta.getPrimaryKeyFields()[0]; if (pk.getDeclaredTypeCode() != JavaTypes.OID) return oid; // always copy oid object in case field value mutates or becomes // managed ObjectId objid = (ObjectId) oid; ClassMetaData embed = pk.getEmbeddedMetaData(); objid.setId(copy(objid.getId(), embed, embed.getFields())); return objid; }
/** * Sets the underlying id of an ObjectId. Should only * be used with simple (idclass) types. */ public static void setAppId(ObjectId id, Object newId) { id.setId(newId); }
/** * Check if object id is set or not. */ public static boolean isIdSet(Object id, ClassMetaData meta, String mappedByIdFieldName) { Object key = null; if (meta.isOpenJPAIdentity()) key = ApplicationIds.getKey(id, meta); else key = ((ObjectId)id).getId(); Object val = null; if (mappedByIdFieldName.length() != 0) { if (((ObjectId)id).getId() == null) return false; Class<?> idClass = ((ObjectId)id).getId().getClass(); val = Reflection.get(key, Reflection.findField(idClass, mappedByIdFieldName, true)); } else val = key; boolean notSet = (val == null || (val instanceof String && ((String)val).length() == 0) || (val instanceof Number && ((Number)val).longValue() == 0)); return !notSet; }
if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: return new ObjectId(cls, koid.getIdObject(), koid.hasSubclasses()); case JavaTypes.DATE: : ((ObjectId) oid).getId(); copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy, ((OpenJPAId) oid).hasSubclasses()); return copy;
/** * Wraps the given object for the given type into a OpenJPA specific * application identity object wrapper instance (i.e. ObjectId) if all of * the following is true: * the given type is not using built-in OpenJPA identity types * the given type is using a shared OpenJPA identity type * the given object is not already a wrapper identity type */ public static Object wrap(ClassMetaData meta, Object oid) { if (!meta.isOpenJPAIdentity() && meta.isObjectIdTypeShared() && !(oid instanceof ObjectId)) { return new ObjectId(meta.getDescribedType(), oid); } return oid; }
/** * Generate an application id based on the current primary key field state * of the given instance. */ public static Object create(PersistenceCapable pc, ClassMetaData meta) { if (pc == null) return null; Object oid = pc.pcNewObjectIdInstance(); if (oid == null) return null; if (!meta.isOpenJPAIdentity()) { pc.pcCopyKeyFieldsToObjectId(oid); return oid; } FieldMetaData pk = meta.getPrimaryKeyFields()[0]; if (pk.getDeclaredTypeCode() != JavaTypes.OID) return oid; // always copy oid object in case field value mutates or becomes // managed ObjectId objid = (ObjectId) oid; ClassMetaData embed = pk.getEmbeddedMetaData(); objid.setId(copy(objid.getId(), embed, embed.getFields())); return objid; }
/** * Sets the underlying id of an ObjectId. Should only * be used with simple (idclass) types. */ public static void setAppId(ObjectId id, Object newId) { id.setId(newId); }
/** * Check if object id is set or not. */ public static boolean isIdSet(Object id, ClassMetaData meta, String mappedByIdFieldName) { Object key = null; if (meta.isOpenJPAIdentity()) key = ApplicationIds.getKey(id, meta); else key = ((ObjectId)id).getId(); Object val = null; if (mappedByIdFieldName.length() != 0) { if (((ObjectId)id).getId() == null) return false; Class<?> idClass = ((ObjectId)id).getId().getClass(); val = Reflection.get(key, Reflection.findField(idClass, mappedByIdFieldName, true)); } else val = key; boolean notSet = (val == null || (val instanceof String && ((String)val).length() == 0) || (val instanceof Number && ((Number)val).longValue() == 0)); return !notSet; }
if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: return new ObjectId(cls, koid.getIdObject(), koid.hasSubclasses()); case JavaTypes.DATE: : ((ObjectId) oid).getId(); copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy, ((OpenJPAId) oid).hasSubclasses()); return copy;
/** * Wraps the given object for the given type into a OpenJPA specific * application identity object wrapper instance (i.e. ObjectId) if all of * the following is true: * the given type is not using built-in OpenJPA identity types * the given type is using a shared OpenJPA identity type * the given object is not already a wrapper identity type */ public static Object wrap(ClassMetaData meta, Object oid) { if (!meta.isOpenJPAIdentity() && meta.isObjectIdTypeShared() && !(oid instanceof ObjectId)) { return new ObjectId(meta.getDescribedType(), oid); } return oid; }