sub); else if (_meta.isOpenJPAIdentity()) _oid = ApplicationIds.copy(_oid, sub); else if (sub.getObjectIdType() != _meta.getObjectIdType()) { Object[] pkFields = ApplicationIds.toPKValues(_oid, _meta); _oid = ApplicationIds.fromPKValues(pkFields, sub);
public boolean assignObjectId(OpenJPAStateManager sm, boolean preFlush) { ClassMetaData meta = sm.getMetaData(); if (meta.getIdentityType() == ClassMetaData.ID_APPLICATION) return ApplicationIds.assign(sm, this, preFlush); // datastore identity Object val = ImplHelper.generateIdentityValue(ctx, meta, JavaTypes.LONG); return assignDataStoreId(sm, val); }
public boolean isDetached(Object obj) { if (!(ImplHelper.isManageable(obj))) return false; PersistenceCapable pc = ImplHelper.toPersistenceCapable(obj, _conf); Boolean detached = pc.pcIsDetached(); if (detached != null) return detached.booleanValue(); // last resort: instance is detached if it has a store record ClassMetaData meta = _conf.getMetaDataRepositoryInstance(). getMetaData(ImplHelper.getManagedInstance(pc).getClass(), _loader, true); Object oid = ApplicationIds.create(pc, meta); if (oid == null) return false; return find(oid, null, EXCLUDE_ALL, null, 0) != null; }
public Object getPCPrimaryKey(Object oid, int field) { FieldMetaData fmd = _meta.getField(field); Object pk = ApplicationIds.get(oid, fmd); if (pk == null) return null; ClassMetaData relmeta = fmd.getDeclaredTypeMetaData(); pk = ApplicationIds.wrap(relmeta, pk); if (relmeta.getIdentityType() == ClassMetaData.ID_DATASTORE && fmd.getObjectIdFieldTypeCode() == JavaTypes.LONG) pk = _broker.getStoreManager().newDataStoreId(pk, relmeta); else if (relmeta.getIdentityType() == ClassMetaData.ID_APPLICATION && fmd.getObjectIdFieldType() != relmeta.getObjectIdType()) pk = ApplicationIds.fromPKValues(new Object[] { pk }, relmeta); return _broker.find(pk, false, null); }
public Object getPCPrimaryKey(Object oid, int field) { FieldMetaData fmd = _meta.getField(field); Object pk = ApplicationIds.get(oid, fmd); if (pk == null) return null; ClassMetaData relmeta = fmd.getDeclaredTypeMetaData(); if (relmeta.getIdentityType() == ClassMetaData.ID_DATASTORE && fmd.getObjectIdFieldTypeCode() == JavaTypes.LONG) pk = _broker.getStoreManager().newDataStoreId(pk, relmeta); else if (relmeta.getIdentityType() == ClassMetaData.ID_APPLICATION && fmd.getObjectIdFieldType() != relmeta.getObjectIdType()) pk = ApplicationIds.fromPKValues(new Object[] { pk }, relmeta); return _broker.find(pk, false, null); }
/** * Assign an application identity object to the given state, or return * false if determining the application identity requires a flush. */ public static boolean assign(OpenJPAStateManager sm, StoreManager store, boolean preFlush) { ClassMetaData meta = sm.getMetaData(); if (meta.getIdentityType() != ClassMetaData.ID_APPLICATION) throw new InternalException(); boolean ret; FieldMetaData[] pks = meta.getPrimaryKeyFields(); if (meta.isOpenJPAIdentity() && pks[0].getDeclaredTypeCode() == JavaTypes.OID) { OpenJPAStateManager oidsm = new ObjectIdStateManager (sm.fetchObjectField(pks[0].getIndex()), sm, pks[0]); ret = assign(oidsm, store, pks[0].getEmbeddedMetaData(). getFields(), preFlush); sm.storeObjectField(pks[0].getIndex(), oidsm.getManagedInstance()); } else ret = assign(sm, store, meta.getPrimaryKeyFields(), preFlush); if (!ret) return false; // base oid on field values sm.setObjectId(create(sm.getPersistenceCapable(), meta)); return true; }
private Object[] getPKValues(OpenJPAStateManager sm, JDBCStore store) { Object[] pks = null; Object oid = sm.getObjectId(); if (_mapping.getIdentityType() == ClassMapping.ID_APPLICATION) pks = ApplicationIds.toPKValues(oid, _mapping); Object[] val = new Object[_pkCols.length]; int count = 0; for (int i = 0; i < _pkCols.length; i++, count++) { if (pks == null) val[0] = (oid == null) ? null : ((Id) oid).getId(); else { val[i] = _joins[i].getJoinValue(pks[_pkIndices[i]], _pkCols[i], store); } } return val; }
public Object pcNewObjectIdInstance() { FieldMetaData[] pkFields = meta.getPrimaryKeyFields(); Object[] pks = new Object[pkFields.length]; for (int i = 0; i < pkFields.length; i++) pks[i] = getValue(pkFields[i].getIndex(), o); return ApplicationIds.fromPKValues(pks, meta); }
Object inner = koid.getIdObject(); if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: && !hasPCPrimaryKeyFields(meta)) { Class<?> type = meta.getDescribedType(); PersistenceCapable pc = PCRegistry.newInstance(type, null, oid, copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy,
public Object fetchObjectId() { try { assignObjectId(true); if (_oid == null || !_broker.getConfiguration(). getCompatibilityInstance().getCopyObjectIds()) return _oid; if (_meta.getIdentityType() == ClassMetaData.ID_DATASTORE) return _broker.getStoreManager().copyDataStoreId(_oid, _meta); return ApplicationIds.copy(_oid, _meta); } catch (RuntimeException re) { throw translate(re); } }
private Object getPKValue(StateManagerImpl pkSm) { ClassMetaData pkMeta = pkSm.getMetaData(); FieldMetaData[] fmds = pkMeta.getPrimaryKeyFields(); // MappedById is for single value primary key or embeddable id if (fmds.length == 0) return null; else return ApplicationIds.getKey(pkSm.getObjectId(), pkMeta); }
PCRegistry.copyKeyFieldsToObjectId(meta.getDescribedType(), producer, oid); return ApplicationIds.wrap(meta, oid);
public Object getPCPrimaryKey(Object oid, int field) { FieldMetaData fmd = _meta.getField(field); Object pk = ApplicationIds.get(oid, fmd); if (pk == null) return null; ClassMetaData relmeta = fmd.getDeclaredTypeMetaData(); pk = ApplicationIds.wrap(relmeta, pk); if (relmeta.getIdentityType() == ClassMetaData.ID_DATASTORE && fmd.getObjectIdFieldTypeCode() == JavaTypes.LONG) pk = _broker.getStoreManager().newDataStoreId(pk, relmeta); else if (relmeta.getIdentityType() == ClassMetaData.ID_APPLICATION && fmd.getObjectIdFieldType() != relmeta.getObjectIdType()) pk = ApplicationIds.fromPKValues(new Object[] { pk }, relmeta); return _broker.find(pk, false, null); }
/** * Assign an application identity object to the given state, or return * false if determining the application identity requires a flush. */ public static boolean assign(OpenJPAStateManager sm, StoreManager store, boolean preFlush) { ClassMetaData meta = sm.getMetaData(); if (meta.getIdentityType() != ClassMetaData.ID_APPLICATION) throw new InternalException(); boolean ret; FieldMetaData[] pks = meta.getPrimaryKeyFields(); if (meta.isOpenJPAIdentity() && pks[0].getDeclaredTypeCode() == JavaTypes.OID) { OpenJPAStateManager oidsm = new ObjectIdStateManager (sm.fetchObjectField(pks[0].getIndex()), sm, pks[0]); ret = assign(oidsm, store, pks[0].getEmbeddedMetaData(). getFields(), preFlush); sm.storeObjectField(pks[0].getIndex(), oidsm.getManagedInstance()); } else ret = assign(sm, store, meta.getPrimaryKeyFields(), preFlush); if (!ret) return false; // base oid on field values sm.setObjectId(create(sm.getPersistenceCapable(), meta)); return true; }
private Object[] getPKValues(OpenJPAStateManager sm, JDBCStore store) { Object[] pks = null; Object oid = sm.getObjectId(); if (_mapping.getIdentityType() == ClassMapping.ID_APPLICATION) pks = ApplicationIds.toPKValues(oid, _mapping); Object[] val = new Object[_pkCols.length]; int count = 0; for (int i = 0; i < _pkCols.length; i++, count++) { if (pks == null) val[0] = (oid == null) ? null : ((Id) oid).getId(); else { val[i] = _joins[i].getJoinValue(pks[_pkIndices[i]], _pkCols[i], store); } } return val; }
public Object pcNewObjectIdInstance() { FieldMetaData[] pkFields = meta.getPrimaryKeyFields(); Object[] pks = new Object[pkFields.length]; for (int i = 0; i < pkFields.length; i++) pks[i] = getValue(pkFields[i].getIndex(), o); return ApplicationIds.fromPKValues(pks, meta); }
Object inner = koid.getIdObject(); if (embed != null) inner = copy(inner, embed, embed.getFields()); return new ObjectId(cls, inner, koid.hasSubclasses()); case JavaTypes.OBJECT: && !hasPCPrimaryKeyFields(meta)) { Class<?> type = meta.getDescribedType(); PersistenceCapable pc = PCRegistry.newInstance(type, null, oid, copy = copy(copy, meta, meta.getPrimaryKeyFields()); if (meta.isObjectIdTypeShared()) copy = new ObjectId(meta.getDescribedType(), copy,
public Object fetchObjectId() { try { if (hasGeneratedKey() && _state instanceof PNewState && _oid == null) return _oid; assignObjectId(true); if (_oid == null || !_broker.getConfiguration(). getCompatibilityInstance().getCopyObjectIds()) return _oid; if (_meta.getIdentityType() == ClassMetaData.ID_DATASTORE) return _broker.getStoreManager().copyDataStoreId(_oid, _meta); return ApplicationIds.copy(_oid, _meta); } catch (RuntimeException re) { throw translate(re); } }
private Object getPKValue(StateManagerImpl pkSm) { ClassMetaData pkMeta = pkSm.getMetaData(); FieldMetaData[] fmds = pkMeta.getPrimaryKeyFields(); // MappedById is for single value primary key or embeddable id if (fmds.length == 0) return null; else return ApplicationIds.getKey(pkSm.getObjectId(), pkMeta); }
PCRegistry.copyKeyFieldsToObjectId(meta.getDescribedType(), producer, oid); return ApplicationIds.wrap(meta, oid);