You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2015/11/06 09:26:27 UTC

[jira] [Updated] (ISIS-1199) Screencast for how facet factories work

     [ https://issues.apache.org/jira/browse/ISIS-1199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Haywood updated ISIS-1199:
------------------------------
    Fix Version/s:     (was: 1.10.0)
                   1.11.0

> Screencast for how facet factories work
> ---------------------------------------
>
>                 Key: ISIS-1199
>                 URL: https://issues.apache.org/jira/browse/ISIS-1199
>             Project: Isis
>          Issue Type: Documentation
>          Components: Website and Docs
>    Affects Versions: 1.9.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: 1.11.0
>
>
> [ObjectSpecification]->*[ObjectMember]
> [ObjectMember]^-[ObjectProperty]
> [ObjectMember]^-[ObjectCollection]
> [ObjectMember]^-[ObjectAction]
> [ObjectAction]->*[ObjectActionParameter]
> ObjectSpecification someSpec = ...
> NamedFacet f = someSpec.getFacet(NamedFacet.class);
> String name = f.getName();
> DescriptionFacet df = someSpec.getFacet(DescriptionFacet.class);
> String df.getDescription();
> hide / disable / validate
> "see it"   "use it"   "do it"
> HidingInteractionAdvisor
> @Hidden
> @Property(hidden=true)
> hideXxx()
> security
> DisablingInteractionAdvisor
> ValidatingInteractionAdvisor
> List<ObjectSpec> specs = IsisContext.getSpecificationLoader().allSpecifications();
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> package domainapp.app.facets.forbidden;
> import java.util.Arrays;
> import java.util.List;
> import com.google.common.collect.Lists;
> import org.apache.isis.applib.events.ValidityEvent;
> import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
> import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
> import org.apache.isis.core.metamodel.facetapi.FacetHolder;
> import org.apache.isis.core.metamodel.interactions.ActionArgumentContext;
> import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
> import org.apache.isis.core.metamodel.interactions.ValidityContext;
> import org.apache.isis.core.metamodel.spec.ObjectSpecification;
> public class ForbiddenWordsFacet extends FacetAbstract implements ValidatingInteractionAdvisor {
>     private List<String> forbiddenStrings = Lists.newArrayList(Arrays.asList("Fred", "Jones"));
>     public ForbiddenWordsFacet(
>             final FacetHolder holder) {
>         super(ForbiddenWordsFacet.class, holder, Derivation.NOT_DERIVED);
>     }
>     @Override
>     public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
>         if (!(ic instanceof ActionArgumentContext)) {
>             return null;
>         }
>         final ActionArgumentContext actionArgumentContext = (ActionArgumentContext) ic;
>         ObjectAdapter proposed = actionArgumentContext.getProposed();
>         ObjectSpecification specification = proposed.getSpecification();
>         Class<?> correspondingClass = specification.getCorrespondingClass();
>         if(java.lang.String.class.isAssignableFrom(correspondingClass)) {
>             String proposedStr = (String) proposed.getObject();
>             for (String s : forbiddenStrings) {
>                 if(proposedStr.contains(s)) {
>                     return String.format("Cannot contain '%s'", s);
>                 }
>             }
>         }
>         return null;
>     }
> }
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> package domainapp.app.facets.forbidden;
> import org.apache.isis.core.metamodel.facetapi.FacetUtil;
> import org.apache.isis.core.metamodel.facetapi.FeatureType;
> import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
> import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
> public class ForbiddenWordsFacetFactory extends FacetFactoryAbstract {
>     public ForbiddenWordsFacetFactory() {
>         super(FeatureType.PARAMETERS_ONLY);
>     }
>     @Override
>     public void processParams(final ProcessParameterContext processParameterContext) {
>         FacetedMethodParameter facetHolder = processParameterContext.getFacetHolder();
>         ForbiddenWordsFacet facet = new ForbiddenWordsFacet(facetHolder);
>         FacetUtil.addFacet(facet);
>     }
> }
> isis.reflector.facets.include=domainapp.app.facets.forbidden.ForbiddenWordsFacetFactory



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)