/** * Sets the underlying value. * * @param value - should be a {@link NakedValue}. */ protected void doSet(final Object value) { NakedValue valueNV = (NakedValue) value; getValueAssociation().setValue(getNakedObject(), valueNV); }
public void entryComplete() { if (valueAdapter.isEmpty()) { getValueAssociation().clearValue( getParent()); } else { getValueAssociation().setValue( getParent(), valueAdapter); } }
public ObjectData[] setValue( final Session session, final String fieldIdentifier, final IdentityData target, final ValueData value) { Assert.assertNotNull(value); LOG.debug("request setValue " + fieldIdentifier + " on " + target + " with " + value + " for " + session); NakedObject inObject = getPersistentNakedObject(session, target); ValueAssociation association = (ValueAssociation) inObject.getSpecification().getField(fieldIdentifier); if (!association.isVisible() || association.isUsable(inObject).isVetoed()) { throw new IllegalRequestException("can't modify field as not visible or editable"); } NakedValue fieldValue = (NakedValue) association.get(inObject); if (fieldValue != null) { // /byte[] encodedString = // NakedObjectsContext.getObjectLoader().createAdapterForValue(value).asEncodedString(); fieldValue.restoreFromEncodedString(value.getEncodedValue()); } NakedValue valueAdapter = NakedObjectsContext.getObjectLoader().createValueInstance(association.getSpecification()); valueAdapter.restoreFromEncodedString(value.getEncodedValue()); association.setValue(inObject, valueAdapter); return getUpdates(); }
public void execute(final Workspace workspace, final View view, final Location at) { NakedObject original = (NakedObject) view.getContent().getNaked(); // NakedObject original = getObject(); NakedObjectSpecification spec = original.getSpecification(); NakedObject clone = NakedObjectsContext.getObjectLoader().createTransientInstance(spec); NakedObjectField[] fields = spec.getFields(); for (int i = 0; i < fields.length; i++) { Naked fld = fields[i].get(original); if (fields[i].isObject()) { ((OneToOneAssociation) fields[i]).setAssociation(clone, (NakedObject) fld); } else if (fields[i].isValue()) { ((ValueAssociation) fields[i]).setValue(clone, (NakedValue) fld); } else if (fields[i].isCollection()) { // clone.setValue((OneToOneAssociation) fields[i], fld.getObject()); } } // AbstractNakedObject clone = (AbstractNakedObject) createInstance(getClass()); // clone.copyObject(this); // clone.objectChanged(); Content content = Toolkit.getContentFactory().createRootContent(clone); View cloneView = Toolkit.getViewFactory().createWindow(content); cloneView.setLocation(at); workspace.addView(cloneView); // newWorkspace.markDamaged(); } }
public void testSetValue() { associationControl.expectAndReturn(association.getSpecification(), new TestSpecification()); // the field must be authorised and available associationControl.expectAndReturn(association.getId(), "name"); associationControl.expectAndReturn(association.isVisible(), true); associationControl.expectAndReturn(association.isUsable(movieAdapter), Allow.DEFAULT); // the value adapter is accessed and then changed associationControl.expectAndReturn(association.get(movieAdapter), stringAdapter); // after checking association is asked to do setting association.setValue(movieAdapter, new TestValueAdapter("name of movie")); replay(); ObjectData[] updates = server.setValue(session, "name", movieData, new DummyValueData("name of movie")); verify(); assertEquals("name of movie", stringAdapter.stringValue()); assertEquals(0, updates.length); }