http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java index 4ed7218..549b8e3 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/CssClassFaFacetOnTypeAnnotationFactory.java @@ -42,7 +42,7 @@ public class CssClassFaFacetOnTypeAnnotationFactory extends FacetFactoryAbstract @Override public void process(final ProcessClassContext processClassContext) { final CssClassFa annotation = Annotations.getAnnotation(processClassContext.getCls(), CssClassFa.class); - validator.addFacet(create(annotation, processClassContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContext.getFacetHolder())); } private static CssClassFaFacet create(final CssClassFa annotation, final FacetHolder holder) {
http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java index f85c3bc..9d8bee8 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/describedas/annotation/DescribedAsFacetOnTypeAnnotationFactory.java @@ -42,7 +42,7 @@ public class DescribedAsFacetOnTypeAnnotationFactory extends FacetFactoryAbstrac @Override public void process(final ProcessClassContext processClassContaxt) { final DescribedAs annotation = Annotations.getAnnotation(processClassContaxt.getCls(), DescribedAs.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private DescribedAsFacet create(final DescribedAs annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java index 28bf9e5..db905a2 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/fieldorder/annotation/FieldOrderFacetAnnotationFactory.java @@ -23,7 +23,6 @@ import org.apache.isis.applib.annotation.FieldOrder; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.commons.config.IsisConfigurationAware; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facetapi.FacetUtil; import org.apache.isis.core.metamodel.facetapi.FeatureType; import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; import org.apache.isis.core.metamodel.facets.Annotations; @@ -43,7 +42,7 @@ public class FieldOrderFacetAnnotationFactory extends FacetFactoryAbstract imple @Override public void process(final ProcessClassContext processClassContaxt) { final FieldOrder annotation = Annotations.getAnnotation(processClassContaxt.getCls(), FieldOrder.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private FieldOrderFacet create(final FieldOrder annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java index 262c40c..9b949df 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/hidden/annotation/HiddenFacetOnTypeAnnotationFactory.java @@ -23,7 +23,6 @@ import org.apache.isis.applib.annotation.Hidden; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.commons.config.IsisConfigurationAware; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facetapi.FacetUtil; import org.apache.isis.core.metamodel.facetapi.FeatureType; import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; import org.apache.isis.core.metamodel.facets.Annotations; @@ -43,7 +42,7 @@ public class HiddenFacetOnTypeAnnotationFactory extends FacetFactoryAbstract imp @Override public void process(final ProcessClassContext processClassContext) { final Hidden annotation = Annotations.getAnnotation(processClassContext.getCls(), Hidden.class); - validator.addFacet(create(annotation, processClassContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContext.getFacetHolder())); } private static HiddenFacet create(final Hidden annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java index e7ebc42..ac1a23f 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mask/annotation/MaskFacetOnTypeAnnotationFactory.java @@ -46,7 +46,7 @@ public class MaskFacetOnTypeAnnotationFactory extends FacetFactoryAbstract imple @Override public void process(final ProcessClassContext processClassContaxt) { final Mask annotation = Annotations.getAnnotation(processClassContaxt.getCls(), Mask.class); - validator.addFacet(createMaskFacet(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(createMaskFacet(annotation, processClassContaxt.getFacetHolder())); } private MaskFacet createMaskFacet(final Mask annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java index 0ad616f..14dea94 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/maxlen/annotation/MaxLengthFacetOnTypeAnnotationFactory.java @@ -45,7 +45,7 @@ public class MaxLengthFacetOnTypeAnnotationFactory extends FacetFactoryAbstract @Override public void process(final ProcessClassContext processClassContaxt) { final MaxLength annotation = Annotations.getAnnotation(processClassContaxt.getCls(), MaxLength.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private MaxLengthFacet create(final MaxLength annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java index 2480c6f..7912c48 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/multiline/annotation/MultiLineFacetOnTypeAnnotationFactory.java @@ -46,7 +46,7 @@ public class MultiLineFacetOnTypeAnnotationFactory extends FacetFactoryAbstract @Override public void process(final ProcessClassContext processClassContaxt) { final MultiLine annotation = Annotations.getAnnotation(processClassContaxt.getCls(), MultiLine.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private MultiLineFacet create(final MultiLine annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java index e06a702..3d6a9cb 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/annotation/NamedFacetOnTypeAnnotationFactory.java @@ -44,7 +44,7 @@ public class NamedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract impl @Override public void process(final ProcessClassContext processClassContaxt) { final Named annotation = Annotations.getAnnotation(processClassContaxt.getCls(), Named.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private NamedFacet create(final Named annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java index a91ae5e..d96ee48 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/named/staticmethod/NamedFacetStaticMethodFactory.java @@ -52,7 +52,7 @@ public class NamedFacetStaticMethodFactory extends MethodPrefixBasedFacetFactory if (method != null) { final String name = (String) MethodExtensions.invokeStatic(method); processClassContext.removeMethod(method); - validator.addFacet(new NamedFacetStaticMethod(name, facetHolder)); + validator.addFacetFlagIfPresent(new NamedFacetStaticMethod(name, facetHolder)); } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java index 980878b..75311c3 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/annotation/PagedFacetOnTypeAnnotationFactory.java @@ -48,7 +48,7 @@ public class PagedFacetOnTypeAnnotationFactory extends FacetFactoryAbstract impl @Override public void process(final ProcessClassContext processClassContext) { final Paged annotation = Annotations.getAnnotation(processClassContext.getCls(), Paged.class); - validator.addFacet(create(annotation, processClassContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContext.getFacetHolder())); } private static PagedFacet create(final Paged annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java index dfdd76e..86a41db 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/annotation/PluralAnnotationFacetFactory.java @@ -42,7 +42,7 @@ public class PluralAnnotationFacetFactory extends FacetFactoryAbstract implement @Override public void process(final ProcessClassContext processClassContaxt) { final Plural annotation = Annotations.getAnnotation(processClassContaxt.getCls(), Plural.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private PluralFacet create(final Plural annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java index 1d053ff..10ad2ac 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/plural/staticmethod/PluralFacetStaticMethodFactory.java @@ -53,7 +53,7 @@ public class PluralFacetStaticMethodFactory extends MethodPrefixBasedFacetFactor if (method != null) { final String name = (String) MethodExtensions.invokeStatic(method); processClassContext.removeMethod(method); - validator.addFacet(new PluralFacetMethod(name, facetHolder)); + validator.addFacetFlagIfPresent(new PluralFacetMethod(name, facetHolder)); } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java index 10d2673..541efb5 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/regex/annotation/RegExFacetOnTypeAnnotationFactory.java @@ -42,7 +42,7 @@ public class RegExFacetOnTypeAnnotationFactory extends FacetFactoryAbstract impl @Override public void process(final ProcessClassContext processClassContaxt) { final RegEx annotation = Annotations.getAnnotation(processClassContaxt.getCls(), RegEx.class); - validator.addFacet(createRegexFacet(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(createRegexFacet(annotation, processClassContaxt.getFacetHolder())); } private RegExFacet createRegexFacet(final RegEx annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java index 501c29f..4771821 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/typicallen/annotation/TypicalLengthFacetOnTypeAnnotationFactory.java @@ -42,7 +42,7 @@ public class TypicalLengthFacetOnTypeAnnotationFactory extends FacetFactoryAbstr @Override public void process(final ProcessClassContext processClassContaxt) { final TypicalLength annotation = Annotations.getAnnotation(processClassContaxt.getCls(), TypicalLength.class); - validator.addFacet(create(annotation, processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processClassContaxt.getFacetHolder())); } private TypicalLengthFacet create(final TypicalLength annotation, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationOnTypeFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationOnTypeFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationOnTypeFacetFactory.java index 6fa3037..b84f730 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationOnTypeFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/validating/mustsatisfyspec/MustSatisfySpecificationOnTypeFacetFactory.java @@ -44,7 +44,7 @@ public class MustSatisfySpecificationOnTypeFacetFactory extends FacetFactoryAbst @Override public void process(final ProcessClassContext processClassContaxt) { - validator.addFacet(create(processClassContaxt.getCls(), processClassContaxt.getFacetHolder())); + validator.addFacetFlagIfPresent(create(processClassContaxt.getCls(), processClassContaxt.getFacetHolder())); } private Facet create(final Class<?> clazz, final FacetHolder holder) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotation.java deleted file mode 100644 index 0bdc9d3..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotation.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.mandatory.annotation; - -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacetAbstract; - -/** - * Derived by presence of an <tt>@Optional</tt> method. - * - * <p> - * This implementation indicates that the {@link FacetHolder} is <i>not</i> - * mandatory, as per {@link #isInvertedSemantics()}. - */ -public class MandatoryFacetOnParameterInvertedByOptionalAnnotation extends MandatoryFacetAbstract { - - public MandatoryFacetOnParameterInvertedByOptionalAnnotation(final FacetHolder holder) { - super(holder, Semantics.OPTIONAL); - } - - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory.java deleted file mode 100644 index 61138b7..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/mandatory/annotation/MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.mandatory.annotation; - -import java.lang.annotation.Annotation; -import org.apache.isis.applib.annotation.Optional; -import org.apache.isis.core.commons.config.IsisConfiguration; -import org.apache.isis.core.commons.config.IsisConfigurationAware; -import org.apache.isis.core.metamodel.facetapi.FeatureType; -import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; -import org.apache.isis.core.metamodel.facets.Annotations; -import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; - -public class MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class); - - public MandatoryFacetOnParameterInvertedByOptionalAnnotationFactory() { - super(FeatureType.PARAMETERS_ONLY); - } - - @Override - public void processParams(final ProcessParameterContext processParameterContext) { - final Class<?>[] parameterTypes = processParameterContext.getMethod().getParameterTypes(); - if (processParameterContext.getParamNum() >= parameterTypes.length) { - // ignore - return; - } - if (parameterTypes[processParameterContext.getParamNum()].isPrimitive()) { - return; - } - final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(processParameterContext.getMethod())[processParameterContext.getParamNum()]; - for (final Annotation parameterAnnotation : parameterAnnotations) { - if (parameterAnnotation instanceof Optional) { - validator.addFacet(new MandatoryFacetOnParameterInvertedByOptionalAnnotation(processParameterContext.getFacetHolder())); - return; - } - } - } - - @Override - public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) { - metaModelValidator.add(validator); - } - - @Override - public void setConfiguration(final IsisConfiguration configuration) { - validator.setConfiguration(configuration); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java index 58697f0..6c70316 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/named/annotation/NamedFacetOnParameterAnnotationFactory.java @@ -47,7 +47,7 @@ public class NamedFacetOnParameterAnnotationFactory extends FacetFactoryAbstract for (final Annotation parameterAnnotation : parameterAnnotations) { if (parameterAnnotation instanceof Named) { final Named annotation = (Named) parameterAnnotation; - validator.addFacet(create(annotation, processParameterContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processParameterContext.getFacetHolder())); return; } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java deleted file mode 100644 index f6cc6b9..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MandatoryFacetForParameterAnnotation.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.parameter; - -import org.apache.isis.applib.annotation.Optionality; -import org.apache.isis.applib.annotation.Parameter; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet; -import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacetAbstract; - -public abstract class MandatoryFacetForParameterAnnotation extends MandatoryFacetAbstract { - - public MandatoryFacetForParameterAnnotation(final FacetHolder holder, final Semantics semantics) { - super(holder, semantics); - } - - static MandatoryFacet create( - final Parameter parameter, - final Class<?> parameterType, - final FacetHolder holder) { - - if (parameter == null) { - return null; - } - - if (parameterType.isPrimitive()) { - return new MandatoryFacetForParameterAnnotation.Primitive(holder); - } - - final Optionality optionality = parameter.optional(); - switch (optionality) { - case DEFAULT: - // do nothing here; instead will rely on MandatoryFromJdoColumnAnnotationFacetFactory to perform - // the remaining processing - return null; - case FALSE: - return new MandatoryFacetForParameterAnnotation.Required(holder); - case TRUE: - return new MandatoryFacetForParameterAnnotation.Optional(holder); - } - return null; - } - - public static class Primitive extends MandatoryFacetForParameterAnnotation { - public Primitive(final FacetHolder holder) { - super(holder, Semantics.REQUIRED); - } - } - - public static class Required extends MandatoryFacetForParameterAnnotation { - public Required(final FacetHolder holder) { - super(holder, Semantics.REQUIRED); - } - } - - public static class Optional extends MandatoryFacetForParameterAnnotation { - public Optional(final FacetHolder holder) { - super(holder, Semantics.OPTIONAL); - } - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java deleted file mode 100644 index b065684..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MaxLengthFacetForParameterAnnotation.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.parameter; - -import org.apache.isis.applib.annotation.Parameter; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet; -import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbstract; - -public class MaxLengthFacetForParameterAnnotation extends MaxLengthFacetAbstract { - - public static MaxLengthFacet create( - final Parameter parameter, - final FacetHolder holder) { - - if (parameter == null) { - return null; - } - - final int maxLength = parameter.maxLength(); - return maxLength != -1 - ? new MaxLengthFacetForParameterAnnotation(maxLength, holder) - : null; - } - - private MaxLengthFacetForParameterAnnotation(final int value, final FacetHolder holder) { - super(value, holder); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java deleted file mode 100644 index 25beaf3..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/MustSatisfySpecificationFacetForParameterAnnotation.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.parameter; - -import java.util.List; -import com.google.common.collect.Lists; -import org.apache.isis.applib.annotation.Parameter; -import org.apache.isis.applib.spec.Specification; -import org.apache.isis.core.metamodel.facetapi.Facet; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.mustsatisfyspec.MustSatisfySpecificationFacetAbstract; - -public class MustSatisfySpecificationFacetForParameterAnnotation extends MustSatisfySpecificationFacetAbstract { - - static Facet create(final Parameter parameter, final FacetHolder holder) { - - if (parameter == null) { - return null; - } - - final Class<?>[] values = parameter.mustSatisfy(); - final List<Specification> specifications = Lists.newArrayList(); - for (final Class<?> value : values) { - final Specification specification = newSpecificationElseNull(value); - if (specification != null) { - specifications.add(specification); - } - } - return specifications.size() > 0 ? new MustSatisfySpecificationFacetForParameterAnnotation(specifications, holder) : null; - } - - - private MustSatisfySpecificationFacetForParameterAnnotation(final List<Specification> specifications, final FacetHolder holder) { - super(specifications, holder); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java index 3b7c9cc..1b48bd5 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java @@ -21,14 +21,38 @@ package org.apache.isis.core.metamodel.facets.param.parameter; import java.lang.annotation.Annotation; import java.lang.reflect.Method; +import org.apache.isis.applib.annotation.MaxLength; +import org.apache.isis.applib.annotation.MustSatisfy; +import org.apache.isis.applib.annotation.Optional; import org.apache.isis.applib.annotation.Parameter; +import org.apache.isis.applib.annotation.RegEx; +import org.apache.isis.core.commons.config.IsisConfiguration; +import org.apache.isis.core.commons.config.IsisConfigurationAware; import org.apache.isis.core.metamodel.facetapi.FacetUtil; import org.apache.isis.core.metamodel.facetapi.FeatureType; +import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; import org.apache.isis.core.metamodel.facets.Annotations; import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; import org.apache.isis.core.metamodel.facets.FacetedMethodParameter; +import org.apache.isis.core.metamodel.facets.object.regex.RegExFacet; +import org.apache.isis.core.metamodel.facets.object.regex.TitleFacetFormattedByRegex; +import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation; +import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnParameter; +import org.apache.isis.core.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation; +import org.apache.isis.core.metamodel.facets.param.parameter.maxlen.MaxLengthFacetOnParamForMaxLengthAnnotation; +import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter; +import org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation; +import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetForParameterAnnotation; +import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetFromRegExAnnotationOnParameter; +import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; +import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; -public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract { +public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { + + private final MetaModelValidatorForDeprecatedAnnotation maxLengthValidator = new MetaModelValidatorForDeprecatedAnnotation(MaxLength.class); + private final MetaModelValidatorForDeprecatedAnnotation mustSatisfyValidator = new MetaModelValidatorForDeprecatedAnnotation(MustSatisfy.class); + private final MetaModelValidatorForDeprecatedAnnotation regexValidator = new MetaModelValidatorForDeprecatedAnnotation(RegEx.class); + private final MetaModelValidatorForDeprecatedAnnotation optionalValidator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class); public ParameterAnnotationFacetFactory() { super(FeatureType.PARAMETERS_ONLY); @@ -39,36 +63,146 @@ public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract { final Method method = processParameterContext.getMethod(); final int paramNum = processParameterContext.getParamNum(); - final FacetedMethodParameter holder = processParameterContext.getFacetHolder(); final Class<?>[] parameterTypes = method.getParameterTypes(); if (paramNum >= parameterTypes.length) { return; // ignore } + processParamsMaxLength(processParameterContext); + processParamsMustSatisfy(processParameterContext); + processParamsRegEx(processParameterContext); + processParamsOptional(processParameterContext); + + } + + void processParamsMaxLength(final ProcessParameterContext processParameterContext) { + + final Method method = processParameterContext.getMethod(); + final int paramNum = processParameterContext.getParamNum(); + final FacetedMethodParameter holder = processParameterContext.getFacetHolder(); final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(method)[paramNum]; + + for (final Annotation parameterAnnotation : parameterAnnotations) { + if (parameterAnnotation instanceof MaxLength) { + final MaxLength annotation = (MaxLength) parameterAnnotation; + maxLengthValidator.addFacetFlagIfPresent(MaxLengthFacetOnParamForMaxLengthAnnotation.create(annotation, processParameterContext.getFacetHolder())); + return; + } + } + for (final Annotation parameterAnnotation : parameterAnnotations) { if (parameterAnnotation instanceof Parameter) { final Parameter parameter = (Parameter) parameterAnnotation; - Class<?> parameterType = parameterTypes[paramNum]; - FacetUtil.addFacet( MaxLengthFacetForParameterAnnotation.create(parameter, holder)); + return; + } + } + } + + void processParamsMustSatisfy(final ProcessParameterContext processParameterContext) { + final Method method = processParameterContext.getMethod(); + final int paramNum = processParameterContext.getParamNum(); + final FacetedMethodParameter holder = processParameterContext.getFacetHolder(); + final Class<?>[] parameterTypes = method.getParameterTypes(); + final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(method)[paramNum]; + + boolean mustSatisfyAnnotationFound = false; + for (final Annotation parameterAnnotation : parameterAnnotations) { + if (parameterAnnotation instanceof MustSatisfy) { + final MustSatisfy annotation = (MustSatisfy) parameterAnnotation; + mustSatisfyValidator.addFacetFlagIfPresent(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.create(annotation, processParameterContext.getFacetHolder())); + return; + } + } + + for (final Annotation parameterAnnotation : parameterAnnotations) { + if (parameterAnnotation instanceof Parameter) { + final Parameter parameter = (Parameter) parameterAnnotation; FacetUtil.addFacet( MustSatisfySpecificationFacetForParameterAnnotation.create(parameter, holder)); + return; + } + } + } - FacetUtil.addFacet( - MandatoryFacetForParameterAnnotation.create(parameter, parameterType, holder)); + void processParamsRegEx(final ProcessParameterContext processParameterContext) { + + final Method method = processParameterContext.getMethod(); + final int paramNum = processParameterContext.getParamNum(); + final FacetedMethodParameter holder = processParameterContext.getFacetHolder(); + final Class<?>[] parameterTypes = method.getParameterTypes(); + final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(method)[paramNum]; - if (Annotations.isString(parameterType)) { - FacetUtil.addFacet( - RegExFacetForParameterAnnotation.create(parameter, holder)); + for (final Annotation parameterAnnotation : parameterAnnotations) { + final Class<?> parameterType = parameterTypes[paramNum]; + if (parameterAnnotation instanceof RegEx) { + final RegEx annotation = (RegEx) parameterAnnotation; + final RegExFacet regExFacet = regexValidator.addFacetFlagIfPresent(RegExFacetFromRegExAnnotationOnParameter.create(annotation, parameterType, holder)); + + // regex also adds a title facet + if(regExFacet != null) { + FacetUtil.addFacet(new TitleFacetFormattedByRegex(regExFacet)); } + return; + } + } + + for (final Annotation parameterAnnotation : parameterAnnotations) { + if (parameterAnnotation instanceof Parameter) { + final Parameter parameter = (Parameter) parameterAnnotation; + final Class<?> parameterType = parameterTypes[paramNum]; + FacetUtil.addFacet( + RegExFacetForParameterAnnotation.create(parameter, parameterType, holder)); + return; + } + } + } + + void processParamsOptional(final ProcessParameterContext processParameterContext) { + + final Method method = processParameterContext.getMethod(); + final int paramNum = processParameterContext.getParamNum(); + final FacetedMethodParameter holder = processParameterContext.getFacetHolder(); + final Class<?>[] parameterTypes = method.getParameterTypes(); + final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(method)[paramNum]; + for (final Annotation parameterAnnotation : parameterAnnotations) { + final Class<?> parameterType = parameterTypes[paramNum]; + if (parameterAnnotation instanceof Optional) { + final Optional annotation = (Optional) parameterAnnotation; + optionalValidator.addFacetFlagIfPresent(MandatoryFacetInvertedByOptionalAnnotationOnParameter.create(annotation, parameterType, holder)); return; } } + + for (final Annotation parameterAnnotation : parameterAnnotations) { + if (parameterAnnotation instanceof Parameter) { + final Parameter parameter = (Parameter) parameterAnnotation; + final Class<?> parameterType = parameterTypes[paramNum]; + FacetUtil.addFacet( + MandatoryFacetForParameterAnnotation.create(parameter, parameterType, holder)); + return; + } + } + } + + @Override + public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) { + metaModelValidator.add(maxLengthValidator); + metaModelValidator.add(mustSatisfyValidator); + metaModelValidator.add(regexValidator); + metaModelValidator.add(optionalValidator); + } + + @Override + public void setConfiguration(final IsisConfiguration configuration) { + maxLengthValidator.setConfiguration(configuration); + mustSatisfyValidator.setConfiguration(configuration); + regexValidator.setConfiguration(configuration); + optionalValidator.setConfiguration(configuration); } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/RegExFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/RegExFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/RegExFacetForParameterAnnotation.java deleted file mode 100644 index 532972c..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/RegExFacetForParameterAnnotation.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.parameter; - -import java.util.regex.Pattern; -import com.google.common.base.Strings; -import org.apache.isis.applib.annotation.Parameter; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.object.regex.RegExFacet; -import org.apache.isis.core.metamodel.facets.object.regex.RegExFacetAbstract; - -public class RegExFacetForParameterAnnotation extends RegExFacetAbstract { - - private final Pattern pattern; - - static RegExFacet create( - final Parameter parameter, - final FacetHolder holder) { - - if (parameter == null) { - return null; - } - - - final String pattern = parameter.regexPattern(); - if(Strings.isNullOrEmpty(pattern)) { - return null; - } - - final int patternFlags = parameter.regexPatternFlags(); - - return new RegExFacetForParameterAnnotation(pattern, patternFlags, holder); - } - - private RegExFacetForParameterAnnotation(final String pattern, final int patternFlags, final FacetHolder holder) { - super(pattern, "", false, holder); - this.pattern = Pattern.compile(pattern, patternFlags); - } - - /** - * Unused (for the TitledFacet) - */ - @Override - public String format(String text) { - return text; - } - - @Override - public boolean doesNotMatch(final String text) { - if (text == null) { - return true; - } - return !pattern.matcher(text).matches(); - } - - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetForParameterAnnotation.java new file mode 100644 index 0000000..b40a260 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetForParameterAnnotation.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.mandatory; + +import org.apache.isis.applib.annotation.Optionality; +import org.apache.isis.applib.annotation.Parameter; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet; +import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacetAbstract; + +public abstract class MandatoryFacetForParameterAnnotation extends MandatoryFacetAbstract { + + public MandatoryFacetForParameterAnnotation(final FacetHolder holder, final Semantics semantics) { + super(holder, semantics); + } + + public static MandatoryFacet create( + final Parameter parameter, + final Class<?> parameterType, + final FacetHolder holder) { + + if (parameter == null) { + return null; + } + + if (parameterType.isPrimitive()) { + return new MandatoryFacetForParameterAnnotation.Primitive(holder); + } + + final Optionality optionality = parameter.optional(); + switch (optionality) { + case DEFAULT: + // do nothing here; instead will rely on MandatoryFromJdoColumnAnnotationFacetFactory to perform + // the remaining processing + return null; + case FALSE: + return new MandatoryFacetForParameterAnnotation.Required(holder); + case TRUE: + return new MandatoryFacetForParameterAnnotation.Optional(holder); + } + return null; + } + + public static class Primitive extends MandatoryFacetForParameterAnnotation { + public Primitive(final FacetHolder holder) { + super(holder, Semantics.REQUIRED); + } + } + + public static class Required extends MandatoryFacetForParameterAnnotation { + public Required(final FacetHolder holder) { + super(holder, Semantics.REQUIRED); + } + } + + public static class Optional extends MandatoryFacetForParameterAnnotation { + public Optional(final FacetHolder holder) { + super(holder, Semantics.OPTIONAL); + } + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnParameter.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnParameter.java new file mode 100644 index 0000000..07725ce --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnParameter.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.mandatory; + +import org.apache.isis.applib.annotation.Optional; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.FacetedMethodParameter; +import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacetAbstract; + +/** + * Derived by presence of an <tt>@Optional</tt> method. + * + * <p> + * This implementation indicates that the {@link FacetHolder} is <i>not</i> + * mandatory, as per {@link #isInvertedSemantics()}. + */ +public class MandatoryFacetInvertedByOptionalAnnotationOnParameter extends MandatoryFacetAbstract { + + + public static Facet create(final Optional annotation, final Class<?> parameterType, final FacetedMethodParameter holder) { + if(annotation == null) { + return null; + } + if(parameterType.isPrimitive()) { + return null; + } + return new MandatoryFacetInvertedByOptionalAnnotationOnParameter(holder); + } + + private MandatoryFacetInvertedByOptionalAnnotationOnParameter(final FacetHolder holder) { + super(holder, Semantics.OPTIONAL); + } + + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetForParameterAnnotation.java new file mode 100644 index 0000000..9e6b800 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetForParameterAnnotation.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.maxlen; + +import org.apache.isis.applib.annotation.Parameter; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet; +import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbstract; + +public class MaxLengthFacetForParameterAnnotation extends MaxLengthFacetAbstract { + + public static MaxLengthFacet create( + final Parameter parameter, + final FacetHolder holder) { + + if (parameter == null) { + return null; + } + + final int maxLength = parameter.maxLength(); + return maxLength != -1 + ? new MaxLengthFacetForParameterAnnotation(maxLength, holder) + : null; + } + + private MaxLengthFacetForParameterAnnotation(final int value, final FacetHolder holder) { + super(value, holder); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetOnParamForMaxLengthAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetOnParamForMaxLengthAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetOnParamForMaxLengthAnnotation.java new file mode 100644 index 0000000..2409c11 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/maxlen/MaxLengthFacetOnParamForMaxLengthAnnotation.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.maxlen; + +import org.apache.isis.applib.annotation.MaxLength; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet; +import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbstract; + +public class MaxLengthFacetOnParamForMaxLengthAnnotation extends MaxLengthFacetAbstract { + + public static MaxLengthFacet create(final MaxLength annotation, final FacetHolder holder) { + return annotation == null ? null : new MaxLengthFacetOnParamForMaxLengthAnnotation(annotation.value(), holder); + } + + private MaxLengthFacetOnParamForMaxLengthAnnotation(final int value, final FacetHolder holder) { + super(value, holder); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java new file mode 100644 index 0000000..1d24490 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy; + +import java.util.List; +import com.google.common.collect.Lists; +import org.apache.isis.applib.annotation.MustSatisfy; +import org.apache.isis.applib.spec.Specification; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propparam.mustsatisfyspec.MustSatisfySpecificationFacetAbstract; + +public class MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter extends MustSatisfySpecificationFacetAbstract { + + + public static Facet create(final MustSatisfy annotation, final FacetHolder holder) { + if (annotation == null) { + return null; + } + final Class<?>[] values = annotation.value(); + final List<Specification> specifications = Lists.newArrayList(); + for (final Class<?> value : values) { + final Specification specification = newSpecificationElseNull(value); + if (specification != null) { + specifications.add(specification); + } + } + return specifications.size() > 0 ? new MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter(specifications, holder) : null; + } + + private MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter(final List<Specification> specifications, final FacetHolder holder) { + super(specifications, holder); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java new file mode 100644 index 0000000..bf08288 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy; + +import java.util.List; +import com.google.common.collect.Lists; +import org.apache.isis.applib.annotation.Parameter; +import org.apache.isis.applib.spec.Specification; +import org.apache.isis.core.metamodel.facetapi.Facet; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propparam.mustsatisfyspec.MustSatisfySpecificationFacetAbstract; + +public class MustSatisfySpecificationFacetForParameterAnnotation extends MustSatisfySpecificationFacetAbstract { + + public static Facet create(final Parameter parameter, final FacetHolder holder) { + + if (parameter == null) { + return null; + } + + final Class<?>[] values = parameter.mustSatisfy(); + final List<Specification> specifications = Lists.newArrayList(); + for (final Class<?> value : values) { + final Specification specification = newSpecificationElseNull(value); + if (specification != null) { + specifications.add(specification); + } + } + return specifications.size() > 0 ? new MustSatisfySpecificationFacetForParameterAnnotation(specifications, holder) : null; + } + + + private MustSatisfySpecificationFacetForParameterAnnotation(final List<Specification> specifications, final FacetHolder holder) { + super(specifications, holder); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForParameterAnnotation.java new file mode 100644 index 0000000..97e6b71 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForParameterAnnotation.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.regex; + +import java.util.regex.Pattern; +import com.google.common.base.Strings; +import org.apache.isis.applib.annotation.Parameter; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.Annotations; +import org.apache.isis.core.metamodel.facets.object.regex.RegExFacet; +import org.apache.isis.core.metamodel.facets.object.regex.RegExFacetAbstract; + +public class RegExFacetForParameterAnnotation extends RegExFacetAbstract { + + private final Pattern pattern; + + public static RegExFacet create( + final Parameter parameter, + final Class<?> parameterType, + final FacetHolder holder) { + + if (parameter == null) { + return null; + } + if(!Annotations.isString(parameterType)) { + return null; + } + + final String pattern = parameter.regexPattern(); + if(Strings.isNullOrEmpty(pattern)) { + return null; + } + + final int patternFlags = parameter.regexPatternFlags(); + + return new RegExFacetForParameterAnnotation(pattern, patternFlags, holder); + } + + private RegExFacetForParameterAnnotation(final String pattern, final int patternFlags, final FacetHolder holder) { + super(pattern, "", false, holder); + this.pattern = Pattern.compile(pattern, patternFlags); + } + + /** + * Unused (for the TitledFacet) + */ + @Override + public String format(String text) { + return text; + } + + @Override + public boolean doesNotMatch(final String text) { + if (text == null) { + return true; + } + return !pattern.matcher(text).matches(); + } + + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetFromRegExAnnotationOnParameter.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetFromRegExAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetFromRegExAnnotationOnParameter.java new file mode 100644 index 0000000..6147239 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetFromRegExAnnotationOnParameter.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.isis.core.metamodel.facets.param.parameter.regex; + +import java.util.regex.Pattern; + +import org.apache.isis.applib.annotation.RegEx; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.Annotations; +import org.apache.isis.core.metamodel.facets.object.regex.RegExFacet; +import org.apache.isis.core.metamodel.facets.object.regex.RegExFacetAbstract; + +public class RegExFacetFromRegExAnnotationOnParameter extends RegExFacetAbstract { + + private final Pattern pattern; + + public static RegExFacet create(final RegEx annotation, final Class<?> parameterType, final FacetHolder holder) { + if (annotation == null) { + return null; + } + if(!Annotations.isString(parameterType)) { + return null; + } + + final String validationExpression = annotation.validation(); + final boolean caseSensitive = annotation.caseSensitive(); + final String formatExpression = annotation.format(); + + return new RegExFacetFromRegExAnnotationOnParameter(validationExpression, formatExpression, caseSensitive, holder); + } + + private RegExFacetFromRegExAnnotationOnParameter(final String validation, final String format, final boolean caseSensitive, final FacetHolder holder) { + super(validation, format, caseSensitive, holder); + pattern = Pattern.compile(validation(), patternFlags()); + } + + @Override + public String format(final String text) { + if (text == null) { + return "<not a string>"; + } + if (format() == null || format().length() == 0) { + return text; + } + return pattern.matcher(text).replaceAll(format()); + } + + @Override + public boolean doesNotMatch(final String text) { + if (text == null) { + return true; + } + return !pattern.matcher(text).matches(); + } + + private int patternFlags() { + return !caseSensitive() ? Pattern.CASE_INSENSITIVE : 0; + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java index 3c99fbb..f24b263 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/renderedasdaybefore/annotation/RenderedAsDayBeforeFacetOnParameterAnnotationFactory.java @@ -24,7 +24,6 @@ import org.apache.isis.applib.annotation.RenderedAsDayBefore; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.commons.config.IsisConfigurationAware; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facetapi.FacetUtil; import org.apache.isis.core.metamodel.facetapi.FeatureType; import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; import org.apache.isis.core.metamodel.facets.Annotations; @@ -47,7 +46,7 @@ public class RenderedAsDayBeforeFacetOnParameterAnnotationFactory extends FacetF for (final Annotation parameterAnnotation : parameterAnnotations) { if (parameterAnnotation instanceof RenderedAsDayBefore) { final RenderedAsDayBefore annotation = (RenderedAsDayBefore) parameterAnnotation; - validator.addFacet(create(annotation, processParameterContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processParameterContext.getFacetHolder())); return; } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java index d6aeea9..c1b2abe 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/typicallen/annotation/TypicalLengthFacetOnParameterAnnotationFactory.java @@ -47,7 +47,7 @@ public class TypicalLengthFacetOnParameterAnnotationFactory extends FacetFactory for (final Annotation parameterAnnotation : parameterAnnotations) { if (parameterAnnotation instanceof TypicalLength) { final TypicalLength annotation = (TypicalLength) parameterAnnotation; - validator.addFacet(create(annotation, processParameterContext.getFacetHolder())); + validator.addFacetFlagIfPresent(create(annotation, processParameterContext.getFacetHolder())); return; } } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotation.java deleted file mode 100644 index 2bbee5b..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotation.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.validating.maxlenannot; - -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbstract; - -public class MaxLengthFacetOnParameterAnnotation extends MaxLengthFacetAbstract { - - public MaxLengthFacetOnParameterAnnotation(final int value, final FacetHolder holder) { - super(value, holder); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotationFactory.java deleted file mode 100644 index 2b03fb0..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/maxlenannot/MaxLengthFacetOnParameterAnnotationFactory.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.isis.core.metamodel.facets.param.validating.maxlenannot; - -import java.lang.annotation.Annotation; -import org.apache.isis.applib.annotation.MaxLength; -import org.apache.isis.core.commons.config.IsisConfiguration; -import org.apache.isis.core.commons.config.IsisConfigurationAware; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facetapi.FeatureType; -import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner; -import org.apache.isis.core.metamodel.facets.Annotations; -import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; -import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; - -public class MaxLengthFacetOnParameterAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(MaxLength.class); - - public MaxLengthFacetOnParameterAnnotationFactory() { - super(FeatureType.PARAMETERS_ONLY); - } - - @Override - public void processParams(final ProcessParameterContext processParameterContext) { - final java.lang.annotation.Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(processParameterContext.getMethod())[processParameterContext.getParamNum()]; - - for (final Annotation parameterAnnotation : parameterAnnotations) { - if (parameterAnnotation instanceof MaxLength) { - final MaxLength annotation = (MaxLength) parameterAnnotation; - validator.addFacet(create(annotation, processParameterContext.getFacetHolder())); - return; - } - } - } - - private MaxLengthFacet create(final MaxLength annotation, final FacetHolder holder) { - return annotation == null ? null : new MaxLengthFacetOnParameterAnnotation(annotation.value(), holder); - } - - @Override - public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) { - metaModelValidator.add(validator); - } - - @Override - public void setConfiguration(final IsisConfiguration configuration) { - validator.setConfiguration(configuration); - } - - -}
