public void makePersistent(final NakedObject object, final PersistedObjectAdder adders) { if (object.getResolveState().isPersistent() || object.persistable() == Persistable.TRANSIENT) { return; } if (LOG.isInfoEnabled()) { LOG.info("persist " + object); } // NakedObjects.getObjectLoader().madePersistent(object); // Don't do here - allow EventListener to propogate persistent state object.getSpecification().lifecycleEvent(object, NakedObjectSpecification.SAVING); adders.addPersistedObject(object); object.getSpecification().lifecycleEvent(object, NakedObjectSpecification.SAVED); }
private ObjectData createObjectData(final NakedObject object) { NakedObjectSpecification cls = object.getSpecification(); NakedObjectField[] fields = cls.getFields(); ObjectData data = new ObjectData(object.getOid(), object.getResolveState().name(), cls.getFullName()); for (int i = 0; i < fields.length; i++) { if (fields[i].isPersisted()) { createFieldData(object, data, fields[i]); } } return data; }
public void save(final NakedObject object) { objectInstances.put(object.getOid(), object.getObject()); titleIndex.put(object.titleString().toLowerCase(), object.getOid()); }
public void execute(final ExecutionContext context) throws ObjectPersistenceException { LOG.debug(" destroy object " + object); SerialOid oid = (SerialOid) object.getOid(); dataManager.remove(oid); object.setOptimisticLock(null); }
public void execute(final ExecutionContext context) { NakedObjectSpecification specification = object.getSpecification(); LOG.info(" saving object " + object + " as instance of " + specification.getFullName()); Version version = object.getVersion(); SerialNumberVersion serialNumberVersion = (SerialNumberVersion) version; Version next = serialNumberVersion.next("user", new Date()); object.setOptimisticLock(next); }
public void testRecreateTransientAdapter() { Oid oid = new TestProxyOid(13, false); Object object = new TestPojo(); NakedObject adapter = objectLoader.recreateAdapter(oid, object); assertEquals(oid, adapter.getOid()); assertEquals(object, adapter.getObject()); assertEquals(ResolveState.TRANSIENT, adapter.getResolveState()); assertEquals(null, adapter.getVersion()); }
private ObjectData createObjectData(final NakedObject object, final boolean ensurePersistent) { LOG.debug("compiling object data for " + object); ObjectData data; data = new ObjectData(object.getSpecification(), (SerialOid) object.getOid(), (FileVersion) object.getVersion()); NakedObjectField[] fields = object.getSpecification().getFields(); for (int i = 0; i < fields.length; i++) { if (!fields[i].isPersisted()) { continue; } Naked field = fields[i].get(object); Naked fieldContent = field; String fieldId = fields[i].getId(); if (fields[i].isCollection()) { data.addInternalCollection((NakedCollection) fieldContent, fieldId, ensurePersistent); } else if (fields[i].isValue()) { boolean isEmpty = fields[i].isEmpty(object); String encodedValue = ((NakedValue) field).asEncodedString(); data.saveValue(fieldId, isEmpty, field == null || isEmpty ? null : new String(encodedValue)); } else if (fields[i].isObject()) { data.addAssociation((NakedObject) fieldContent, fieldId, ensurePersistent); } } return data; }
public void makePersistent(final NakedObject object, final PersistedObjectAdder persistor) { if (object.getResolveState().isPersistent() || object.persistable() == Persistable.TRANSIENT) { return; object.getSpecification().lifecycleEvent(object, NakedObjectSpecification.SAVING); object.changeState(ResolveState.RESOLVED); object.changeState(ResolveState.UPDATING); persistor.addPersistedObject(object); NakedObjectField[] fields = object.getSpecification().getFields(); for (int i = 0; i < fields.length; i++) { NakedObjectField field = fields[i]; object.getSpecification().lifecycleEvent(object, NakedObjectSpecification.SAVED);
public boolean isTransient() { return object != null && object.getResolveState().isTransient(); }
public void objectChanged(final NakedObject object) { actions.addElement("object changed " + object.getOid()); object.setOptimisticLock(((TestProxyVersion) object.getVersion()).next()); }
public void execute(final ExecutionContext context) { LOG.info(" create object " + object); NakedObjectSpecification specification = object.getSpecification(); LOG.debug(" saving object " + object + " as instance of " + specification.getFullName()); TransientObjectStoreInstances ins = instancesFor(specification); ins.add(object); oidObjectMap.put(object.getOid(), object); object.setOptimisticLock(new SerialNumberVersion(1, "user", new Date())); }
public String title() { return object == null ? "" : object.titleString(); }
private NakedObjectAction dropAction(final NakedObject source, final NakedObject target) { NakedObjectAction action; action = target.getSpecification().getObjectAction(NakedObjectAction.USER, null, new NakedObjectSpecification[] { source.getSpecification() }); return action; }
private void initObject(final NakedObject object, final ObjectData data) { if (object.getResolveState().isResolvable(ResolveState.RESOLVING)) { objectLoader().start(object, ResolveState.RESOLVING); NakedObjectField[] fields = object.getSpecification().getFields(); for (int i = 0; i < fields.length; i++) { NakedObjectField field = fields[i]; if (!field.isPersisted()) { continue; } if (field.isValue()) { NakedValue value = (NakedValue) ((ValueAssociation) field).get(object); String valueData = data.value(field.getId()); value.restoreFromEncodedString(valueData == null ? "NULL" : valueData); ((ValueAssociation) field).initValue(object, value); } else if (field.isCollection()) { initObjectSetupCollection(object, data, field); } else if (field.isObject()) { initObjectSetupReference(object, data, field); } } object.setOptimisticLock(data.getVersion()); objectLoader().end(object); } }
public void makePersistent(final NakedObject object) { object.setOptimisticLock(new TestProxyVersion(1)); object.changeState(ResolveState.RESOLVED); objects.put(object.getOid(), object); }
if (!adapter.getResolveState().isDestroyed()) { adapter.changeState(ResolveState.DESTROYED); + object.titleString() + "'"); } else { NakedObject reference = objectLoader().recreateAdapterForPersistent(referenceOid, specFor(fieldData));
public void setAssociation(final NakedObject inObject, final NakedObject associate) { if (isReadWrite()) { if (inObject.getResolveState().isPersistent() && associate != null && associate.getResolveState().isTransient()) { throw new NakedObjectRuntimeException("can't set a reference to a transient object from a persistent one: " + inObject.titleString() + " (persistent) -> " + associate.titleString() + " (transient)"); } reflectiveAdapter.setAssociation(inObject, associate); } }
public void execute(final ExecutionContext context) { LOG.info(" delete object '" + object + "'"); oidObjectMap.remove(object.getOid()); NakedObjectSpecification specification = object.getSpecification(); LOG.debug(" destroy object " + object + " as instance of " + specification.getFullName()); TransientObjectStoreInstances ins = instancesFor(specification); ins.remove(object); // TODO need to do garbage collection instead // NakedObjects.getObjectLoader().unloaded(object); }
public void onInitializeCollection(final InitializeCollectionEvent event) throws HibernateException { if (LOG.isDebugEnabled()) { LOG.info("InitializeCollectionEvent"); } NakedObjectLoader loader = NakedObjectsContext.getObjectLoader(); NakedObject adapter = loader.getAdapterFor(event.getCollection()); if (adapter != null && adapter.getResolveState().isResolvable(ResolveState.RESOLVING)) { if (LOG.isDebugEnabled()) { LOG.debug("Setting collection to resolved "+adapter); } adapter.changeState(ResolveState.RESOLVING); adapter.changeState(ResolveState.RESOLVED); } }