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 Object get(final Object target) throws HibernateException { try { NakedObject nakedTarget = NakedObjectsContext.getObjectLoader().getAdapterFor(target); // Hibernate might call to check what the unsaved value is - hence no adapter if (nakedTarget == null) { return null; } LongVersion version = (LongVersion) nakedTarget.getVersion(); if (version == null) { return null; } return versionAccessor.get(version); } catch (Exception e) { throw new PropertyAccessException(e, "could not get a value by reflection", false, clazz, name); } } public Method getMethod() { return null; }
public void objectChanged(final NakedObject object) { actions.addElement("object changed " + object.getOid()); object.setOptimisticLock(((DummyVersion) object.getVersion()).next()); }
public void objectChanged(final NakedObject object) { actions.addElement("object changed " + object.getOid()); object.setOptimisticLock(((TestProxyVersion) object.getVersion()).next()); }
public void set(final Object target, final Object value, final SessionFactoryImplementor factory) throws HibernateException { try { NakedObject nakedTarget = NakedObjectsContext.getObjectLoader().getAdapterFor(target); LongVersion version = (LongVersion) nakedTarget.getVersion(); if (version == null) { version = new LongVersion(); nakedTarget.setOptimisticLock(version); } versionAccessor.set(version, value); if (wrappedSetter != null) { wrappedSetter.set(target, value, factory); } } catch (Exception e) { throw new PropertyAccessException(e, "could not set a value by reflection", true, clazz, name); } } }
changedVersion[i] = changedObjects[i].getVersion(); break;
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 testExecuteClientActionWhereObjectMadePersistent() { NakedObject adapter = system.createTransientTestObject(); DummyObjectData data = new DummyObjectData(adapter.getOid(), "none", true, new TestProxyVersion(1)); // restore the object on the server expect(encoder.restore(data, new KnownObjects())).andReturn(adapter); expect(encoder.createIdentityData(adapter)).andReturn(null); // return results DummyClientResultData results = new DummyClientResultData(new ObjectData[0], new Version[0], new ObjectData[0]); encoder.createClientActionResult(aryEq(new ReferenceData[1]), aryEq(new Version[1]), aryEq(new ObjectData[0])); expectLastCall().andReturn(results); replay(); ClientActionResultData result = server.executeClientAction(session, new ReferenceData[] { data }, new int[] { ClientTransactionEvent.ADD }); verify(); assertEquals(result, result); NakedObject object = NakedObjectsContext.getObjectPersistor().getObject(adapter.getOid(), adapter.getSpecification()); assertEquals(adapter, object); assertEquals(new TestProxyVersion(1), object.getVersion()); }
public void testRecreatePersistentAdapter() { Oid oid = new TestProxyOid(15, true); Object object = new TestPojo(); NakedObject adapter = objectLoader.recreateAdapter(oid, object); assertEquals(oid, adapter.getOid()); assertEquals(object, adapter.getObject()); assertEquals(ResolveState.GHOST, adapter.getResolveState()); assertEquals(null, adapter.getVersion()); }
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()); }
assertEquals(new DummyVersion(5), movieAdapter.getVersion()); assertEquals(new DummyVersion(9), directorAdapter.getVersion());
public void testExecuteClientActionWhereObjectChanged() { NakedObject adapter = system.createPersistentTestObject(); DummyObjectData data = new DummyObjectData(adapter.getOid(), "none", true, new TestProxyVersion(1)); // prepare the update data to return expect(encoder.restore(data, new KnownObjects())).andReturn(adapter); // results returned in their own container DummyClientResultData results = new DummyClientResultData(new ObjectData[0], new Version[0], null); encoder.createClientActionResult(aryEq(new ReferenceData[1]), aryEq(new Version[] { new TestProxyVersion(2) }), aryEq(new ObjectData[0])); // encoderControl.setMatcher(MockControl.ARRAY_MATCHER); expectLastCall().andReturn(results); replay(); ClientActionResultData result = server.executeClientAction(session, new ReferenceData[] { data }, new int[] { ClientTransactionEvent.CHANGE }); verify(); NakedObject object = NakedObjectsContext.getObjectPersistor().getObject(adapter.getOid(), adapter.getSpecification()); assertEquals(new TestProxyVersion(2), object.getVersion()); assertEquals(result, result); }