/** * * @param value - expected to be a {@link NakedObject}. */ protected void doSet(Object value) { NakedObject valueNO = (NakedObject) value; if (value != null) { getOneToOneAssociation().setAssociation(getNakedObject(), valueNO); } else { NakedObject currentAssociate = (NakedObject) getOneToOneAssociation().get(getNakedObject()); getOneToOneAssociation().clearAssociation(getNakedObject(), currentAssociate); } }
public NakedObjectSpecification getSpecification() { return getOneToOneAssociation().getSpecification(); }
public String getId() { return getOneToOneAssociation().getName(); }
private void updateOneToOneAssociation(final NakedObject object, final OneToOneAssociation field, final Data fieldData) { if (fieldData == null) { field.initAssociation(object, null); } else { NakedObject ref = recreateReference(fieldData); if (field.get(object) != ref) { LOG.debug(" association " + field + " changed to " + ref.getOid()); field.initAssociation(object, ref); } } }
public void testSetAssociation() { // the field must be authorised and available associationControl.expectAndReturn(association.getId(), "director"); associationControl.expectAndReturn(association.isVisible(), true); associationControl.expectAndReturn(association.isUsable(movieAdapter), Allow.DEFAULT); // after checking association is asked to do setting association.setAssociation(movieAdapter, directorAdapter); replay(); ObjectData[] updates = server.setAssociation(session, "director", movieData, personData); verify(); assertEquals(0, updates.length); }
public void testClearAssociation() { /* * other tests for clear: * - clear collection element * - fails if unauthorised * - fails if unavailable * * could place all these clear test in one class; test other methods in other classes */ // the field must be authorised and available associationControl.expectAndReturn(association.getId(), "director"); associationControl.expectAndReturn(association.isVisible(), true); associationControl.expectAndReturn(association.isUsable(movieAdapter), Allow.DEFAULT); // after checking association is asked to do clearing association.clearAssociation(movieAdapter, directorAdapter); replay(); ObjectData[] updatesData = server.clearAssociation(session, "director", movieData, personData); verify(); assertEquals(0, updatesData.length); }
public void setObject(final NakedObject object) { getOneToOneAssociation().setAssociation(getParent(), object); }
public void clear() { getOneToOneAssociation().clearAssociation(getParent(), object); }
public Naked drop(final Content sourceContent) { if (sourceContent instanceof ObjectContent) { NakedObject source = (NakedObject) sourceContent.getNaked(); Assert.assertNotNull(source); NakedObject target = (NakedObject) getObject(); Assert.assertNotNull(target); if (canDrop(sourceContent).isAllowed()) { NakedObjectAction action = dropAction(source, target); if ((action != null) && action.isParameterSetValid(target, new NakedObject[] { source }).isAllowed()) { return action.execute(target, new NakedObject[] { source }); } else { NakedObjectField[] fields = target.getSpecification().getDynamicallyVisibleFields(target); for (int i = 0; i < fields.length; i++) { NakedObjectField fld = fields[i]; if (fld.isObject() && source.getSpecification().isOfType(fld.getSpecification())) { if (fld.get(target) == null && ((OneToOneAssociation) fld).isAssociationValid(target, source).isAllowed()) { ((OneToOneAssociation) fld).setAssociation(target, source); break; } } } } } } return null; }
referencedNakedObject = (NakedObject) oneToOneAssociation.get(object); .getSpecification().getFullName(), extensionsFor(oneToOneAssociation));
public void testSetAssociationFailsWhenUnavailable() { associationControl.expectAndReturn(association.getId(), "director"); // the field is authorised, but not available associationControl.expectAndReturn(association.isVisible(), true); associationControl.expectAndReturn(association.isUsable(movieAdapter), Veto.DEFAULT); replay(); try { server.setAssociation(session, "director", movieData, personData); fail(); } catch (IllegalRequestException expected) { assertEquals("can't modify field as not visible or editable", expected.getMessage()); } verify(); }
public Consent canSet(final NakedObject object) { NakedObjectSpecification targetType = getOneToOneAssociation().getSpecification(); NakedObjectSpecification spec = object.getSpecification(); if (isEditable().isVetoed()) { return isEditable(); } if (!spec.isOfType(targetType)) { return new Veto("Can only drop objects of type " + targetType.getSingularName()); } if (getParent().getResolveState().isPersistent() && object.getResolveState().isTransient()) { return new Veto("Can't drop a non-persistent into this persistent object"); } // if (object instanceof Aggregated) { // Aggregated aggregated = ((Aggregated) object); // if (aggregated.isAggregated() && aggregated.parent() != getParent()) { if (Features.isAggregated(spec) && spec.getAggregate(object) != getParent()) { return new Veto("Object is already associated with another object: " + spec.getAggregate(object)); } // } Consent perm = getOneToOneAssociation().isAssociationValid(getParent(), object); return perm; }
public String isValid( Object proposedValue) { NakedObject proposedNO = (NakedObject)proposedValue; Consent valueValid = getOneToOneAssociation().isAssociationValid(getNakedObject(), proposedNO); return valueValid.isAllowed()?null:valueValid.getReason(); }
public void testSetAssociationFailsWhenUnauthorised() { associationControl.expectAndReturn(association.getId(), "director"); // the field is not authorised associationControl.expectAndReturn(association.isVisible(), false); replay(); try { server.setAssociation(session, "director", movieData, personData); fail(); } catch (IllegalRequestException expected) { assertEquals("can't modify field as not visible or editable", expected.getMessage()); } verify(); }
public String check( Naked[] values) { final Consent usable = getOneToOneAssociationInstance().getOneToOneAssociation().isUsable(); return usable.isAllowed()?null:usable.getReason(); }
public String check( Naked[] values) { return getOneToOneAssociationInstance().getOneToOneAssociation().isVisible()?null:"Hidden"; }
adapter.changeState(ResolveState.DESTROYED); ((OneToOneAssociation) field).initAssociation(object, adapter); } else { NakedObject reference = objectLoader().recreateAdapterForPersistent(referenceOid, specFor(fieldData)); ((OneToOneAssociation) field).initAssociation(object, reference);
public void testSet() { association.setAssociation(nakedObject, associate); associationDelegate.assertAction(0, "associate " + nakedObject); associationDelegate.assertAction(1, "associate " + associate); }
public void testRemove() { association.clearAssociation(nakedObject, associate); associationDelegate.assertAction(0, "clear " + nakedObject); associationDelegate.assertAction(1, "clear " + associate); }