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 & 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)