You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Daniel Keir Haywood (Jira)" <ji...@apache.org> on 2020/11/26 06:29:00 UTC

[jira] [Resolved] (ISIS-1199) [WON'T FIX] [DOC] Screencast for how facet factories work

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

Daniel Keir Haywood resolved ISIS-1199.
---------------------------------------
    Resolution: Won't Fix

> [WON'T FIX] [DOC] Screencast for how facet factories work
> ---------------------------------------------------------
>
>                 Key: ISIS-1199
>                 URL: https://issues.apache.org/jira/browse/ISIS-1199
>             Project: Isis
>          Issue Type: Documentation
>          Components: Isis Docs &amp; Website
>    Affects Versions: 1.9.0
>            Reporter: Daniel Keir Haywood
>            Priority: Minor
>             Fix For: 2.0.0-M5
>
>
> [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
(v8.3.4#803005)