You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/02/06 19:12:51 UTC
[10/26] isis git commit: ISIS-1027: moving the handling of deprecated
annotations to {Property|Collection|Action|Parameter}AnnotationFacetFactory.
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);
- }
-
-
-}