@Override public Integer getLength(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class); return facet != null? facet.getLength(): null; }
@Override public String getFileAccept(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final FileAcceptFacet facet = property.getFacet(FileAcceptFacet.class); return facet != null? facet.value(): null; }
@Override public int getTypicalLength(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final TypicalLengthFacet facet = property.getFacet(TypicalLengthFacet.class); return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH; }
@Override public Integer getLength(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class); return facet != null? facet.getLength(): null; }
@Override public Integer getScale(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class); return facet != null? facet.getScale(): null; }
@Override public Integer getScale(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class); return facet != null? facet.getScale(): null; }
@Override public String getFileAccept(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final FileAcceptFacet facet = property.getFacet(FileAcceptFacet.class); return facet != null? facet.value(): null; }
@Override public int getTypicalLength(ScalarModel scalarModel) { final PropertyMemento propertyMemento = scalarModel.getPropertyMemento(); final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader()); final TypicalLengthFacet facet = property.getFacet(TypicalLengthFacet.class); return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH; }
final PropertyClearFacet clearFacet = association.getFacet(PropertyClearFacet.class); final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class); final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class); if (setterFacet == null) { return SetUpObjectResult.CANNOT_SET;
@Override protected void addPropertiesSpecificToFeature() { representation.mapPut("optional", !getObjectFeature().isMandatory()); final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class); if (maxLength != null && !maxLength.isNoop()) { representation.mapPut("maxLength", maxLength.value()); } }
@Override protected void addPropertiesSpecificToFeature() { representation.mapPut("optional", !getObjectFeature().isMandatory()); final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class); if (maxLength != null && !maxLength.isNoop()) { representation.mapPut("maxLength", maxLength.value()); } }
@Override protected void addPropertiesSpecificToFeature() { representation.mapPut("optional", !getObjectFeature().isMandatory()); final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class); if (maxLength != null && !maxLength.isNoop()) { representation.mapPut("maxLength", maxLength.value()); } }
@Override public String parseAndValidate(final ScalarModel scalarModel, final String proposedPojoAsStr) { final OneToOneAssociation property = scalarModel.getPropertyMemento().getProperty(); ParseableFacet parseableFacet = property.getFacet(ParseableFacet.class); if (parseableFacet == null) { parseableFacet = property.getSpecification().getFacet(ParseableFacet.class); } try { final ObjectAdapter parentAdapter = scalarModel.parentObjectAdapterMemento.getObjectAdapter(); final ObjectAdapter currentValue = property.get(parentAdapter); final ObjectAdapter proposedAdapter = parseableFacet.parseTextEntry(currentValue, proposedPojoAsStr); final Consent valid = property.isAssociationValid(parentAdapter, proposedAdapter); return valid.isAllowed() ? null : valid.getReason(); } catch (final Exception ex) { return ex.getLocalizedMessage(); } }
@Override public String parseAndValidate(final ScalarModel scalarModel, final String proposedPojoAsStr) { final OneToOneAssociation property = scalarModel.getPropertyMemento().getProperty(scalarModel.getSpecificationLoader()); ParseableFacet parseableFacet = property.getFacet(ParseableFacet.class); if (parseableFacet == null) { parseableFacet = property.getSpecification().getFacet(ParseableFacet.class); } try { final ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load(); final ObjectAdapter currentValue = property.get(parentAdapter, InteractionInitiatedBy.USER); final ObjectAdapter proposedAdapter = parseableFacet.parseTextEntry(currentValue, proposedPojoAsStr, InteractionInitiatedBy.USER); final Consent valid = property.isAssociationValid(parentAdapter, proposedAdapter, InteractionInitiatedBy.USER); return valid.isAllowed() ? null : valid.getReason(); } catch (final ConcurrencyException ex) { // disregard concurrency exceptions because will pick up at the IFormValidator level rather // than each individual property. return null; } catch (final Exception ex) { return ex.getLocalizedMessage(); } }
@Override public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException { final ObjectAdapter onAdapter = performContext.getOnAdapter(); final ObjectMember nakedObjectMember = performContext.getObjectMember(); final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember; // set final PropertyClearFacet clearFacet = otoa.getFacet(PropertyClearFacet.class); final CellBinding thatItBinding = performContext.getPeer().getThatItBinding(); if (clearFacet == null) { throw ScenarioBoundValueException.current(thatItBinding, "(cannot clear)"); } // validate setting to null final Consent validConsent = otoa.isAssociationValid(onAdapter, null); if (validConsent.isVetoed()) { throw ScenarioBoundValueException.current(thatItBinding, validConsent.getReason()); } clearFacet.clearProperty(onAdapter); }
@Override public String parseAndValidate(final ScalarModel scalarModel, final String proposedPojoAsStr) { final OneToOneAssociation property = scalarModel.getPropertyMemento().getProperty(scalarModel.getSpecificationLoader()); ParseableFacet parseableFacet = property.getFacet(ParseableFacet.class); if (parseableFacet == null) { parseableFacet = property.getSpecification().getFacet(ParseableFacet.class); } try { final ObjectAdapter parentAdapter = scalarModel.parentObjectAdapterMemento.getObjectAdapter(ConcurrencyChecking.CHECK, scalarModel.getPersistenceSession(), scalarModel.getSpecificationLoader()); final ObjectAdapter currentValue = property.get(parentAdapter, InteractionInitiatedBy.USER); final ObjectAdapter proposedAdapter = parseableFacet.parseTextEntry(currentValue, proposedPojoAsStr, InteractionInitiatedBy.USER); final Consent valid = property.isAssociationValid(parentAdapter, proposedAdapter, InteractionInitiatedBy.USER); return valid.isAllowed() ? null : valid.getReason(); } catch (final ConcurrencyException ex) { // disregard concurrency exceptions because will pick up at the IFormValidator level rather // than each individual property. return null; } catch (final Exception ex) { return ex.getLocalizedMessage(); } }
@Override public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException { final ObjectAdapter onAdapter = performContext.getOnAdapter(); final ObjectMember nakedObjectMember = performContext.getObjectMember(); final List<ScenarioCell> argumentCells = performContext.getArgumentCells(); final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember; // set final PropertySetterFacet setterFacet = otoa.getFacet(PropertySetterFacet.class); if (setterFacet == null) { final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding(); throw ScenarioBoundValueException.current(onMemberBinding, "(cannot set)"); } // safe to obtain since guaranteed by superclass final CellBinding arg0Binding = performContext.getPeer().getArg0Binding(); final ScenarioCell arg0Cell = argumentCells.get(0); // obtain existing as 'context' (used if this is a parsed @Value) final ObjectAdapter contextAdapter = otoa.get(onAdapter); // validate parameter final ObjectAdapter toSetAdapter = performContext.getPeer().getAdapter(contextAdapter, otoa.getSpecification(), arg0Binding, arg0Cell); final Consent validConsent = otoa.isAssociationValid(onAdapter, toSetAdapter); if (validConsent.isVetoed()) { throw ScenarioBoundValueException.current(arg0Binding, validConsent.getReason()); } setterFacet.setProperty(onAdapter, toSetAdapter); }
final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class); boolean eagerlyRender = (renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter))
final RenderFacet renderFacet = objectMember.getFacet(RenderFacet.class); boolean eagerlyRender = renderFacet != null && renderFacet.value() == Type.EAGERLY && rendererContext.canEagerlyRender(valueAdapter);