Details
-
Documentation
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
1.9.0
-
None
Description
[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)
@Override
public String invalidates(final ValidityContext<? extends ValidityEvent> ic) {
if (!(ic instanceof ActionArgumentContext))
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 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)
}
isis.reflector.facets.include=domainapp.app.facets.forbidden.ForbiddenWordsFacetFactory