void processIdChange(Object nodeId, Object newId) { Persistent object = objectMap.remove(nodeId); if (object != null) { object.setObjectId((ObjectId) newId); objectMap.put(newId, object); ObjectDiff change = changes.remove(nodeId); if (change != null) { changes.put(newId, change); } } }
void processIdChange(Object nodeId, Object newId) { Persistent object = (Persistent) objectMap.remove(nodeId); if (object != null) { object.setObjectId((ObjectId) newId); objectMap.put(newId, object); Object change = changes.remove(nodeId); if (change != null) { changes.put(newId, change); } } }
private void preprocess(ObjectStore objectStore) { Map changes = getChangesByObjectId(); if (!changes.isEmpty()) { Iterator it = changes.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); ObjectId id = (ObjectId) entry.getKey(); Persistent object = (Persistent) objectStore.getNode(id); // address manual id override. ObjectId objectId = object.getObjectId(); if (!id.equals(objectId)) { if (objectId != null) { Map replacement = id.getReplacementIdMap(); replacement.clear(); replacement.putAll(objectId.getIdSnapshot()); } object.setObjectId(id); } } } } }
void registerNewObject(Persistent object, String entityName, ClassDescriptor descriptor) { /** * We should create new id only if it is not set for this object. It * could have been created, for instance, in child context */ ObjectId id = object.getObjectId(); if (id == null) { id = new ObjectId(entityName); object.setObjectId(id); } injectInitialValue(object); }
private void preprocess(ObjectStore objectStore) { Map<Object, ObjectDiff> changes = getChangesByObjectId(); if (!changes.isEmpty()) { for (Entry<Object, ObjectDiff> entry : changes.entrySet()) { ObjectId id = (ObjectId) entry.getKey(); Persistent object = (Persistent) objectStore.getNode(id); // address manual id override. ObjectId objectId = object.getObjectId(); if (!id.equals(objectId)) { if (objectId != null) { Map<String, Object> replacement = id.getReplacementIdMap(); replacement.clear(); replacement.putAll(objectId.getIdSnapshot()); } object.setObjectId(id); } } } } }
object.setObjectId(null); object.setPersistenceState(PersistenceState.TRANSIENT); break;
public void nodeIdChanged(Object nodeId, Object newId) { // do not unregister the node just yet... only put replaced id in deadIds to // remove it later. Otherwise stored operations will not work Object node = context.internalGraphManager().getNode(nodeId); if (node != null) { context.internalGraphManager().deadIds().add(nodeId); context.internalGraphManager().registerNode(newId, node); if (node instanceof Persistent) { // inject new id ((Persistent) node).setObjectId((ObjectId) newId); } } }
public void nodeIdChanged(Object nodeId, Object newId) { // do not unregister the node just yet... only put replaced id in deadIds to // remove it later. Otherwise stored operations will not work Object node = context.internalGraphManager().getNode(nodeId); if (node != null) { context.internalGraphManager().deadIds().add(nodeId); context.internalGraphManager().registerNode(newId, node); if (node instanceof Persistent) { // inject new id ((Persistent) node).setObjectId((ObjectId) newId); } } }
public void nodeCreated(Object nodeId) { setExternalChange(Boolean.TRUE); try { ObjectId id = (ObjectId) nodeId; if (id.getEntityName() == null) { throw new NullPointerException("Null entity name in id " + id); } ObjEntity entity = context.getEntityResolver().getObjEntity(id.getEntityName()); if (entity == null) { throw new IllegalArgumentException("Entity not mapped with Cayenne: " + id); } Persistent dataObject = null; try { dataObject = (Persistent) entity.getJavaClass().newInstance(); } catch (Exception ex) { throw new CayenneRuntimeException("Error instantiating object.", ex); } dataObject.setObjectId(id); context.registerNewObject(dataObject); } finally { setExternalChange(Boolean.FALSE); } }
Persistent createFault(ObjectId id) { ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(id.getEntityName()); Persistent object = (Persistent) descriptor.createObject(); object.setPersistenceState(PersistenceState.HOLLOW); object.setObjectContext(this); object.setObjectId(id); graphManager.registerNode(id, object); return object; }
target.setObjectId(id); seen.put(id, target);
persistent.setObjectId(new ObjectId(entity.getName()));
Persistent createFault(ObjectId id) { ClassDescriptor descriptor = getEntityResolver().getClassDescriptor( id.getEntityName()); Persistent object; synchronized(graphManager) { object = (Persistent) descriptor.createObject(); object.setPersistenceState(PersistenceState.HOLLOW); object.setObjectContext(this); object.setObjectId(id); // note that this must be called AFTER setting persistence state, otherwise we'd // get ValueHolders incorrectly marked as resolved descriptor.injectValueHolders(object); graphManager.registerNode(id, object); } return object; } }
Persistent createNewObject(ObjectId id) { ClassDescriptor descriptor = getEntityResolver().getClassDescriptor( id.getEntityName()); Persistent object = (Persistent) descriptor.createObject(); // must follow this exact order of property initialization per CAY-653, i.e. have // the id and the context in place BEFORE setPersistence is called object.setObjectId(id); object.setObjectContext(this); object.setPersistenceState(PersistenceState.NEW); descriptor.injectValueHolders(object); graphManager.registerNode(object.getObjectId(), object); graphManager.nodeCreated(object.getObjectId()); return object; }
/** * @since 3.1 */ @Override public <T extends Persistent> T localObject(T objectFromAnotherContext) { if (objectFromAnotherContext == null) { throw new NullPointerException("Null object argument"); } ObjectId id = objectFromAnotherContext.getObjectId(); // first look for the ID in the local GraphManager synchronized (getGraphManager()) { @SuppressWarnings("unchecked") T localObject = (T) getGraphManager().getNode(id); if (localObject != null) { return localObject; } // create a hollow object, optimistically assuming that the ID we got from // 'objectFromAnotherContext' is a valid ID either in the parent context or in the DB. // This essentially defers possible FaultFailureExceptions. ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(id.getEntityName()); @SuppressWarnings("unchecked") T persistent = (T) descriptor.createObject(); persistent.setObjectContext(this); persistent.setObjectId(id); persistent.setPersistenceState(PersistenceState.HOLLOW); getGraphManager().registerNode(id, persistent); return persistent; } }
localObject.setObjectId(id);
object = (T) descriptor.createObject(); object.setObjectContext(context); object.setObjectId(id);
localObject.setObjectId(id);
localObject.setObjectId(id);