/** * @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; } }
graphManager.registerNode(object.getObjectId(), object); graphManager.nodeCreated(object.getObjectId());
localObject.setObjectId(id); getGraphManager().registerNode(id, localObject); localObject.setPersistenceState(PersistenceState.HOLLOW);
graphManager.registerNode(id, object);
localObject.setObjectId(id); getGraphManager().registerNode(id, localObject);
localObject.setObjectId(id); getGraphManager().registerNode(id, localObject);