public boolean accept(NakedObjectField field) { final Consent usable = field.isUsable(); return usable.isAllowed(); } };
public ObjectData[] setAssociation( final Session session, final String fieldIdentifier, final IdentityData target, final IdentityData associated) { LOG.debug("request setAssociation " + fieldIdentifier + " on " + target + " with " + associated + " for " + session); NakedObject inObject = getPersistentNakedObject(session, target); NakedObject associate = getPersistentNakedObject(session, associated); NakedObjectField association = (NakedObjectField) inObject.getSpecification().getField(fieldIdentifier); if (!association.isVisible() || association.isUsable(inObject).isVetoed()) { throw new IllegalRequestException("can't modify field as not visible or editable"); } if (association instanceof OneToOneAssociation) { ((OneToOneAssociation) association).setAssociation(inObject, associate); } else { ((OneToManyAssociation) association).addElement(inObject, associate); } return getUpdates(); }
public ObjectData[] clearAssociation( final Session session, final String fieldIdentifier, final IdentityData target, final IdentityData associated) { LOG.debug("request clearAssociation " + fieldIdentifier + " on " + target + " of " + associated + " for " + session); NakedObject inObject = getPersistentNakedObject(session, target); NakedObject associate = getPersistentNakedObject(session, associated); NakedObjectSpecification specification = inObject.getSpecification(); NakedObjectField association = (NakedObjectField) specification.getField(fieldIdentifier); if (!association.isVisible() || association.isUsable(inObject).isVetoed()) { throw new IllegalRequestException("can't modify field as not visible or editable"); } if (association instanceof OneToOneAssociation) { ((OneToOneAssociation) association).clearAssociation(inObject, associate); } else { ((OneToManyAssociation) association).removeElement(inObject, associate); } return getUpdates(); }