http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java deleted file mode 100644 index 545fb23..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.java +++ /dev/null @@ -1,52 +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.mustsatisfyspec; - -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/validating/mustsatisfyspec/MustSatisfySpecificationOnParameterFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationOnParameterFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationOnParameterFacetFactory.java deleted file mode 100644 index f0953d2..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/mustsatisfyspec/MustSatisfySpecificationOnParameterFacetFactory.java +++ /dev/null @@ -1,65 +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.mustsatisfyspec; - -import java.lang.annotation.Annotation; -import org.apache.isis.applib.annotation.MustSatisfy; -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 MustSatisfySpecificationOnParameterFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(MustSatisfy.class); - - public MustSatisfySpecificationOnParameterFacetFactory() { - 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 MustSatisfy) { - final MustSatisfy annotation = (MustSatisfy) parameterAnnotation; - validator.addFacet(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnParameter.create(annotation, 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/validating/regexannot/RegExFacetFacetOnParameterAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetFacetOnParameterAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetFacetOnParameterAnnotationFactory.java deleted file mode 100644 index 4dd4c22..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetFacetOnParameterAnnotationFactory.java +++ /dev/null @@ -1,105 +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.regexannot; - -import java.lang.annotation.Annotation; -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.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; -import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; -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.object.title.TitleFacet; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; - -public class RegExFacetFacetOnParameterAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(RegEx.class); - - public RegExFacetFacetOnParameterAnnotationFactory() { - 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 (!Annotations.isString(parameterTypes[processParameterContext.getParamNum()])) { - return; - } - - final Annotation[] parameterAnnotations = Annotations.getParameterAnnotations(processParameterContext.getMethod())[processParameterContext.getParamNum()]; - for (final Annotation parameterAnnotation : parameterAnnotations) { - if (parameterAnnotation instanceof RegEx) { - final RegEx annotation = (RegEx) parameterAnnotation; - addRegexFacetAndCorrespondingTitleFacet(processParameterContext.getFacetHolder(), annotation); - return; - } - } - } - - private void addRegexFacetAndCorrespondingTitleFacet(final FacetHolder holder, final RegEx annotation) { - final RegExFacet regexFacet = validator.flagIfPresent(createRegexFacet(annotation, holder)); - if (regexFacet == null) { - return; - } - FacetUtil.addFacet(regexFacet); - - final TitleFacet titleFacet = createTitleFacet(regexFacet); - FacetUtil.addFacet(titleFacet); - } - - private RegExFacet createRegexFacet(final RegEx annotation, final FacetHolder holder) { - if (annotation == null) { - return null; - } - - final String validationExpression = annotation.validation(); - final boolean caseSensitive = annotation.caseSensitive(); - final String formatExpression = annotation.format(); - - return new RegExFacetOnParameterAnnotation(validationExpression, formatExpression, caseSensitive, holder); - } - - private TitleFacet createTitleFacet(final RegExFacet regexFacet) { - return new TitleFacetFormattedByRegex(regexFacet); - } - - @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/validating/regexannot/RegExFacetOnParameterAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetOnParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetOnParameterAnnotation.java deleted file mode 100644 index 726620e..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validating/regexannot/RegExFacetOnParameterAnnotation.java +++ /dev/null @@ -1,59 +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.regexannot; - -import java.util.regex.Pattern; - -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.object.regex.RegExFacetAbstract; - -public class RegExFacetOnParameterAnnotation extends RegExFacetAbstract { - - private final Pattern pattern; - - public RegExFacetOnParameterAnnotation(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/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotation.java deleted file mode 100644 index 554695d..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotation.java +++ /dev/null @@ -1,43 +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.properties.mandatory.annotation.mandatory; - -import org.apache.isis.applib.annotation.Mandatory; -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; - -/** - * Derived by presence of an <tt>@Mandatory</tt> annotation. - * - * <p> - * This implementation indicates that the {@link FacetHolder} <i>is</i> - * mandatory. - */ -public class MandatoryFacetOnPropertyMandatoryAnnotation extends MandatoryFacetAbstract { - - public MandatoryFacetOnPropertyMandatoryAnnotation(final FacetHolder holder) { - super(holder, Semantics.REQUIRED); - } - - static MandatoryFacet create(final Mandatory annotation, final FacetHolder holder) { - return new MandatoryFacetOnPropertyMandatoryAnnotation(holder); - } -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotationFactory.java deleted file mode 100644 index ed1e384..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/mandatory/MandatoryFacetOnPropertyMandatoryAnnotationFactory.java +++ /dev/null @@ -1,59 +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.properties.mandatory.annotation.mandatory; - -import org.apache.isis.applib.annotation.Mandatory; -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 MandatoryFacetOnPropertyMandatoryAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Mandatory.class); - - public MandatoryFacetOnPropertyMandatoryAnnotationFactory() { - super(FeatureType.PROPERTIES_ONLY); - } - - @Override - public void process(final ProcessMethodContext processMethodContext) { - final Mandatory annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Mandatory.class); - if(annotation == null) { - return; - } - validator.addFacet(MandatoryFacetOnPropertyMandatoryAnnotation.create(annotation, processMethodContext.getFacetHolder())); - } - - @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/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotation.java deleted file mode 100644 index 59294e6..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotation.java +++ /dev/null @@ -1,48 +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.properties.mandatory.annotation.optional; - -import java.lang.reflect.Method; -import org.apache.isis.applib.annotation.Optional; -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; - -/** - * Derived by presence of an <tt>@Optional</tt> annotation. - * - * <p> - * This implementation indicates that the {@link FacetHolder} is <i>not</i> - * mandatory, as per {@link #isInvertedSemantics()}. - */ -public class MandatoryFacetOnPropertyInvertedByOptionalAnnotation extends MandatoryFacetAbstract { - - public MandatoryFacetOnPropertyInvertedByOptionalAnnotation(final FacetHolder holder) { - super(holder, Semantics.OPTIONAL); - } - - static MandatoryFacet create(final Optional annotation, Method method, final FacetHolder holder) { - final Class<?> returnType = method.getReturnType(); - if (returnType.isPrimitive()) { - return null; - } - return new MandatoryFacetOnPropertyInvertedByOptionalAnnotation(holder); - } -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory.java deleted file mode 100644 index b17590a..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/annotation/optional/MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory.java +++ /dev/null @@ -1,66 +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.properties.mandatory.annotation.optional; - -import java.lang.reflect.Method; -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.facets.FacetedMethod; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; - -public class MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class); - - - public MandatoryFacetOnPropertyInvertedByOptionalAnnotationFactory() { - super(FeatureType.PROPERTIES_ONLY); - } - - @Override - public void process(final ProcessMethodContext processMethodContext) { - final Method method = processMethodContext.getMethod(); - final Optional annotation = Annotations.getAnnotation(method, Optional.class); - if(annotation == null) { - return; - } - final FacetedMethod facetHolder = processMethodContext.getFacetHolder(); - - validator.addFacet( - MandatoryFacetOnPropertyInvertedByOptionalAnnotation.create(annotation, method, facetHolder)); - } - - @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/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java index 34c9c1d..3fb2289 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/mandatory/staticmethod/MandatoryFacetOnPropertyStaticMethodFactory.java @@ -68,7 +68,7 @@ public class MandatoryFacetOnPropertyStaticMethodFactory extends MethodPrefixBas throw new MetaModelException(cls.getName() + "#" + capitalizedName + " cannot be an optional property as it is of a primitive type"); } final FacetHolder property = processMethodContext.getFacetHolder(); - validator.addFacet(new MandatoryFacetOnPropertyStaticMethod(property)); + validator.addFacetFlagIfPresent(new MandatoryFacetOnPropertyStaticMethod(property)); } private static boolean indicatesOptional(final Method method) { http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java index 4f5c756..0bc2929 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/multiline/annotation/MultiLineFacetOnPropertyFactory.java @@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorFor public class MultiLineFacetOnPropertyFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory, MetaModelValidatorRefiner, IsisConfigurationAware { - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(MultiLine.class); + private final MetaModelValidatorForDeprecatedAnnotation multiLineValidator = new MetaModelValidatorForDeprecatedAnnotation(MultiLine.class); public MultiLineFacetOnPropertyFactory() { super(FeatureType.PROPERTIES_ONLY); @@ -47,17 +47,17 @@ public class MultiLineFacetOnPropertyFactory extends FacetFactoryAbstract implem public void process(final ProcessMethodContext processMethodContext) { MultiLineFacet facet = createFromMetadataPropertiesIfPossible(processMethodContext); if(facet == null) { - facet = validator.flagIfPresent(createFromAnnotationIfPossible(processMethodContext)); + facet = multiLineValidator.flagIfPresent(createFromAnnotationIfPossible(processMethodContext)); } // no-op if null FacetUtil.addFacet(facet); // no-op if null - inferPropParamLayoutFacet(facet); + inferLabelAtFacet(facet); } - private static void inferPropParamLayoutFacet(MultiLineFacet facet) { + private static void inferLabelAtFacet(MultiLineFacet facet) { if (facet == null) { return; } @@ -71,9 +71,9 @@ public class MultiLineFacetOnPropertyFactory extends FacetFactoryAbstract implem private static MultiLineFacet createFromMetadataPropertiesIfPossible( final ProcessContextWithMetadataProperties<? extends FacetHolder> pcwmp) { - + final FacetHolder holder = pcwmp.getFacetHolder(); - + final Properties properties = pcwmp.metadataProperties("multiLine"); return properties != null ? new MultiLineFacetOnPropertyFromProperties(properties, holder) : null; } @@ -89,12 +89,12 @@ public class MultiLineFacetOnPropertyFactory extends FacetFactoryAbstract implem @Override public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) { - metaModelValidator.add(validator); + metaModelValidator.add(multiLineValidator); } @Override public void setConfiguration(final IsisConfiguration configuration) { - validator.setConfiguration(configuration); + multiLineValidator.setConfiguration(configuration); } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotation.java deleted file mode 100644 index 65085fd..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotation.java +++ /dev/null @@ -1,36 +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.properties.notpersisted.annotation; - -import org.apache.isis.applib.annotation.NotPersisted; -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet; -import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract; - -public class NotPersistedFacetOnPropertyAnnotation extends NotPersistedFacetAbstract { - - public NotPersistedFacetOnPropertyAnnotation(final FacetHolder holder) { - super(holder); - } - - static NotPersistedFacet create(final NotPersisted annotation, final FacetHolder holder) { - return annotation == null ? null : new NotPersistedFacetOnPropertyAnnotation(holder); - } -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotationFactory.java deleted file mode 100644 index b685d54..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/notpersisted/annotation/NotPersistedFacetOnPropertyAnnotationFactory.java +++ /dev/null @@ -1,58 +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.properties.notpersisted.annotation; - -import org.apache.isis.applib.annotation.NotPersisted; -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.facets.propcoll.notpersisted.NotPersistedFacet; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation; - -public class NotPersistedFacetOnPropertyAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(NotPersisted.class); - - public NotPersistedFacetOnPropertyAnnotationFactory() { - super(FeatureType.PROPERTIES_ONLY); - } - - @Override - public void process(final ProcessMethodContext processMethodContext) { - final NotPersisted annotation = Annotations.getAnnotation(processMethodContext.getMethod(), NotPersisted.class); - final NotPersistedFacet notPersistedFacet = NotPersistedFacetOnPropertyAnnotation.create(annotation, processMethodContext.getFacetHolder()); - validator.addFacet(notPersistedFacet); - } - - @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/properties/property/PropertyAnnotationFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java index 68962d4..172fb9d 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java @@ -20,9 +20,17 @@ package org.apache.isis.core.metamodel.facets.properties.property; import java.lang.reflect.Method; +import org.apache.isis.applib.annotation.Disabled; +import org.apache.isis.applib.annotation.Hidden; +import org.apache.isis.applib.annotation.Mandatory; +import org.apache.isis.applib.annotation.MaxLength; +import org.apache.isis.applib.annotation.MustSatisfy; +import org.apache.isis.applib.annotation.NotPersisted; +import org.apache.isis.applib.annotation.Optional; import org.apache.isis.applib.annotation.PostsPropertyChangedEvent; import org.apache.isis.applib.annotation.Property; import org.apache.isis.applib.annotation.PropertyInteraction; +import org.apache.isis.applib.annotation.RegEx; import org.apache.isis.applib.services.eventbus.PropertyChangedEvent; import org.apache.isis.applib.services.eventbus.PropertyDomainEvent; import org.apache.isis.core.commons.config.IsisConfiguration; @@ -38,9 +46,15 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; import org.apache.isis.core.metamodel.facets.FacetedMethod; import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet; import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet; +import org.apache.isis.core.metamodel.facets.members.disabled.annotprop.DisabledFacetAnnotation; +import org.apache.isis.core.metamodel.facets.members.hidden.annotprop.HiddenFacetOnMemberAnnotation; 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.propcoll.accessor.PropertyOrCollectionAccessorFacet; import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet; +import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetForMandatoryAnnotationOnProperty; +import org.apache.isis.core.metamodel.facets.properties.property.notpersisted.NotPersistedFacetForNotPersistedAnnotationOnProperty; +import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnProperty; import org.apache.isis.core.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetForPropertyAnnotation; @@ -61,11 +75,14 @@ import org.apache.isis.core.metamodel.facets.properties.property.modify.Property import org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromPropertyAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromPropertyInteractionAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForPostsPropertyChangedEventAnnotation; +import org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty; import org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForPropertyAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.notpersisted.NotPersistedFacetForPropertyAnnotation; import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetForPropertyAnnotation; +import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetFromRegExAnnotationOnProperty; import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet; import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet; +import org.apache.isis.core.metamodel.facets.properties.property.maxlength.MaxLengthFacetForMaxLengthAnnotationOnProperty; import org.apache.isis.core.metamodel.facets.propparam.mandatory.MandatoryFacet; import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacet; import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector; @@ -78,6 +95,14 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme private final MetaModelValidatorForDeprecatedAnnotation postsPropertyChangedEventValidator = new MetaModelValidatorForDeprecatedAnnotation(PostsPropertyChangedEvent.class); private final MetaModelValidatorForDeprecatedAnnotation propertyInteractionValidator = new MetaModelValidatorForDeprecatedAnnotation(PropertyInteraction.class); + private final MetaModelValidatorForDeprecatedAnnotation regexValidator = new MetaModelValidatorForDeprecatedAnnotation(RegEx.class); + private final MetaModelValidatorForDeprecatedAnnotation optionalValidator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class); + private final MetaModelValidatorForDeprecatedAnnotation mandatoryValidator = new MetaModelValidatorForDeprecatedAnnotation(Mandatory.class); + private final MetaModelValidatorForDeprecatedAnnotation hiddenValidator = new MetaModelValidatorForDeprecatedAnnotation(Hidden.class); + private final MetaModelValidatorForDeprecatedAnnotation disabledValidator = new MetaModelValidatorForDeprecatedAnnotation(Disabled.class); + private final MetaModelValidatorForDeprecatedAnnotation maxLengthValidator = new MetaModelValidatorForDeprecatedAnnotation(MaxLength.class); + private final MetaModelValidatorForDeprecatedAnnotation mustSatisfyValidator = new MetaModelValidatorForDeprecatedAnnotation(MustSatisfy.class); + private final MetaModelValidatorForDeprecatedAnnotation notPersistedValidator = new MetaModelValidatorForDeprecatedAnnotation(NotPersisted.class); private ServicesInjector servicesInjector; @@ -88,7 +113,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme @Override public void process(final ProcessMethodContext processMethodContext) { - processModify(processMethodContext); + processDomainEvent(processMethodContext); processHidden(processMethodContext); processEditing(processMethodContext); processMaxLength(processMethodContext); @@ -98,10 +123,9 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme processRegEx(processMethodContext); } - void processModify(final ProcessMethodContext processMethodContext) { + void processDomainEvent(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Class<?> declaringClass = method.getDeclaringClass(); final FacetedMethod holder = processMethodContext.getFacetHolder(); final PropertyOrCollectionAccessorFacet getterFacet = holder.getFacet(PropertyOrCollectionAccessorFacet.class); @@ -215,79 +239,137 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme void processHidden(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final HiddenFacet facet = HiddenFacetForPropertyAnnotation.create(property, holder); + // check for deprecated @Hidden first + final Hidden hiddenAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), Hidden.class); + HiddenFacet facet = hiddenValidator.flagIfPresent(HiddenFacetOnMemberAnnotation.create(hiddenAnnotation, holder)); + + // else search for @Property(hidden=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = HiddenFacetForPropertyAnnotation.create(property, holder); + } FacetUtil.addFacet(facet); } void processEditing(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final DisabledFacet facet = DisabledFacetForPropertyAnnotation.create(property, holder); + // check for deprecated @Disabled first + final Disabled annotation = Annotations.getAnnotation(method, Disabled.class); + DisabledFacet facet = disabledValidator.flagIfPresent(DisabledFacetAnnotation.create(annotation, holder)); + + // else search for @Property(editing=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = DisabledFacetForPropertyAnnotation.create(property, holder); + } FacetUtil.addFacet(facet); } void processMaxLength(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final MaxLengthFacet facet = MaxLengthFacetForPropertyAnnotation.create(property, holder); + // check for deprecated @MaxLength first + final MaxLength annotation = Annotations.getAnnotation(method, MaxLength.class); + MaxLengthFacet facet = maxLengthValidator.addFacetFlagIfPresent(MaxLengthFacetForMaxLengthAnnotationOnProperty.create(annotation, holder)); + + // else search for @Property(maxLength=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = MaxLengthFacetForPropertyAnnotation.create(property, holder); + } FacetUtil.addFacet(facet); } void processMustSatisfy(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final Facet facet = MustSatisfySpecificationFacetForPropertyAnnotation.create(property, holder); + // check for deprecated @MustSatisfy first + final MustSatisfy annotation = Annotations.getAnnotation(method, MustSatisfy.class); + Facet facet = mustSatisfyValidator.addFacetFlagIfPresent(MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.create(annotation, holder)); + + // else search for @Property(mustSatisfy=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = MustSatisfySpecificationFacetForPropertyAnnotation.create(property, holder); + } FacetUtil.addFacet(facet); } void processNotPersisted(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final NotPersistedFacet facet = NotPersistedFacetForPropertyAnnotation.create(property, holder); + // check for deprecated @NotPersisted first + final NotPersisted annotation = Annotations.getAnnotation(method, NotPersisted.class); + NotPersistedFacet facet = notPersistedValidator.addFacetFlagIfPresent(NotPersistedFacetForNotPersistedAnnotationOnProperty.create(annotation, holder)); + + // else search for @Property(notPersisted=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = NotPersistedFacetForPropertyAnnotation.create(property, holder); + } FacetUtil.addFacet(facet); } void processOptional(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); - final MandatoryFacet facet = MandatoryFacetForPropertyAnnotation.create(property, method, holder); + // check for deprecated @Optional first + final Optional annotation = Annotations.getAnnotation(method, Optional.class); + MandatoryFacet facet = optionalValidator.flagIfPresent(MandatoryFacetInvertedByOptionalAnnotationOnProperty.create(annotation, method, holder)); + + // else check for deprecated @Mandatory first + Mandatory mandatoryAnnotation = Annotations.getAnnotation(method, Mandatory.class); + if(facet == null) { + facet = mandatoryValidator.flagIfPresent(MandatoryFacetForMandatoryAnnotationOnProperty.create(mandatoryAnnotation, holder)); + } + + // else search for @Property(optional=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if(facet == null) { + facet = MandatoryFacetForPropertyAnnotation.create(property, method, holder); + } FacetUtil.addFacet(facet); } void processRegEx(final ProcessMethodContext processMethodContext) { final Method method = processMethodContext.getMethod(); - final Property property = Annotations.getAnnotation(method, Property.class); final FacetHolder holder = processMethodContext.getFacetHolder(); final Class<?> returnType = processMethodContext.getMethod().getReturnType(); - if (!Annotations.isString(returnType)) { - return; + + // check for deprecated @RegEx first + final RegEx annotation = Annotations.getAnnotation(processMethodContext.getMethod(), RegEx.class); + RegExFacet facet = regexValidator.flagIfPresent(RegExFacetFromRegExAnnotationOnProperty.create(annotation, returnType, holder)); + + if (facet != null) { + // @RegEx also supports corresponding title facet + FacetUtil.addFacet(new TitleFacetFormattedByRegex(facet)); } - final RegExFacet facet = RegExFacetForPropertyAnnotation.create(property, holder); + // else search for @Property(pattern=...) + final Property property = Annotations.getAnnotation(method, Property.class); + if (facet == null) { + facet = RegExFacetForPropertyAnnotation.create(property, returnType, holder); + } FacetUtil.addFacet(facet); } + // ////////////////////////////////////// @Override public void process(final ContributeeMemberFacetFactory.ProcessContributeeMemberContext processMemberContext) { @@ -317,6 +399,14 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) { metaModelValidator.add(postsPropertyChangedEventValidator); metaModelValidator.add(propertyInteractionValidator); + metaModelValidator.add(regexValidator); + metaModelValidator.add(optionalValidator); + metaModelValidator.add(mandatoryValidator); + metaModelValidator.add(hiddenValidator); + metaModelValidator.add(disabledValidator); + metaModelValidator.add(maxLengthValidator); + metaModelValidator.add(mustSatisfyValidator); + metaModelValidator.add(notPersistedValidator); } // ////////////////////////////////////// @@ -326,6 +416,14 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme public void setConfiguration(final IsisConfiguration configuration) { postsPropertyChangedEventValidator.setConfiguration(configuration); propertyInteractionValidator.setConfiguration(configuration); + regexValidator.setConfiguration(configuration); + optionalValidator.setConfiguration(configuration); + mandatoryValidator.setConfiguration(configuration); + hiddenValidator.setConfiguration(configuration); + disabledValidator.setConfiguration(configuration); + maxLengthValidator.setConfiguration(configuration); + mustSatisfyValidator.setConfiguration(configuration); + notPersistedValidator.setConfiguration(configuration); } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForMandatoryAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForMandatoryAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForMandatoryAnnotationOnProperty.java new file mode 100644 index 0000000..8413be0 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForMandatoryAnnotationOnProperty.java @@ -0,0 +1,48 @@ +/* + * 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.properties.property.mandatory; + +import org.apache.isis.applib.annotation.Mandatory; +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; + +/** + * Derived by presence of an <tt>@Mandatory</tt> annotation. + * + * <p> + * This implementation indicates that the {@link FacetHolder} <i>is</i> + * mandatory. + */ +public class MandatoryFacetForMandatoryAnnotationOnProperty extends MandatoryFacetAbstract { + + public static MandatoryFacet create(final Mandatory annotation, final FacetHolder holder) { + if(annotation == null) { + return null; + } + return new MandatoryFacetForMandatoryAnnotationOnProperty(holder); + } + + private MandatoryFacetForMandatoryAnnotationOnProperty(final FacetHolder holder) { + super(holder, Semantics.REQUIRED); + } + + +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnProperty.java new file mode 100644 index 0000000..20e5c69 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnProperty.java @@ -0,0 +1,48 @@ +/* + * 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.properties.property.mandatory; + +import java.lang.reflect.Method; +import org.apache.isis.applib.annotation.Optional; +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; + +/** + * Derived by presence of an <tt>@Optional</tt> annotation. + * + * <p> + * This implementation indicates that the {@link FacetHolder} is <i>not</i> + * mandatory, as per {@link #isInvertedSemantics()}. + */ +public class MandatoryFacetInvertedByOptionalAnnotationOnProperty extends MandatoryFacetAbstract { + + public MandatoryFacetInvertedByOptionalAnnotationOnProperty(final FacetHolder holder) { + super(holder, Semantics.OPTIONAL); + } + + public static MandatoryFacet create(final Optional annotation, Method method, final FacetHolder holder) { + final Class<?> returnType = method.getReturnType(); + if (returnType.isPrimitive()) { + return null; + } + return new MandatoryFacetInvertedByOptionalAnnotationOnProperty(holder); + } +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForMaxLengthAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForMaxLengthAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForMaxLengthAnnotationOnProperty.java new file mode 100644 index 0000000..5ea21c0 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForMaxLengthAnnotationOnProperty.java @@ -0,0 +1,36 @@ +/* + * 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.properties.property.maxlength; + +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 MaxLengthFacetForMaxLengthAnnotationOnProperty extends MaxLengthFacetAbstract { + + public MaxLengthFacetForMaxLengthAnnotationOnProperty(final int value, final FacetHolder holder) { + super(value, holder); + } + + public static MaxLengthFacet create(final MaxLength annotation, final FacetHolder holder) { + return annotation == null ? null : new MaxLengthFacetForMaxLengthAnnotationOnProperty(annotation.value(), holder); + } +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java new file mode 100644 index 0000000..4329016 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.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.properties.property.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 MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty 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 MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty(specifications, holder) : null; + } + + + private MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty(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/properties/property/notpersisted/NotPersistedFacetForNotPersistedAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForNotPersistedAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForNotPersistedAnnotationOnProperty.java new file mode 100644 index 0000000..55fe4aa --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForNotPersistedAnnotationOnProperty.java @@ -0,0 +1,36 @@ +/* + * 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.properties.property.notpersisted; + +import org.apache.isis.applib.annotation.NotPersisted; +import org.apache.isis.core.metamodel.facetapi.FacetHolder; +import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet; +import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract; + +public class NotPersistedFacetForNotPersistedAnnotationOnProperty extends NotPersistedFacetAbstract { + + public NotPersistedFacetForNotPersistedAnnotationOnProperty(final FacetHolder holder) { + super(holder); + } + + public static NotPersistedFacet create(final NotPersisted annotation, final FacetHolder holder) { + return annotation == null ? null : new NotPersistedFacetForNotPersistedAnnotationOnProperty(holder); + } +} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java index 047ed76..ee784eb 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java @@ -23,6 +23,7 @@ import java.util.regex.Pattern; import com.google.common.base.Strings; import org.apache.isis.applib.annotation.Property; 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; @@ -31,18 +32,23 @@ public class RegExFacetForPropertyAnnotation extends RegExFacetAbstract { private final Pattern pattern; public static RegExFacet create( - final Property property, + final Property annotation, + final Class<?> returnType, final FacetHolder holder) { - if (property == null) { + if (annotation == null) { return null; } - final String pattern = property.regexPattern(); + if (!Annotations.isString(returnType)) { + return null; + } + + final String pattern = annotation.regexPattern(); if(Strings.isNullOrEmpty(pattern)) { return null; } - final int patternFlags = property.regexPatternFlags(); + final int patternFlags = annotation.regexPatternFlags(); return new RegExFacetForPropertyAnnotation(pattern, patternFlags, holder); } http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetFromRegExAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetFromRegExAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetFromRegExAnnotationOnProperty.java new file mode 100644 index 0000000..97c256c --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetFromRegExAnnotationOnProperty.java @@ -0,0 +1,74 @@ +/* + * 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.properties.property.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 RegExFacetFromRegExAnnotationOnProperty extends RegExFacetAbstract { + + private final Pattern pattern; + + public static RegExFacet create(final RegEx annotation, final Class<?> returnType, final FacetHolder holder) { + + if (!Annotations.isString(returnType)) { + return null; + } + + final String validationExpression = annotation.validation(); + final boolean caseSensitive = annotation.caseSensitive(); + final String formatExpression = annotation.format(); + + return new RegExFacetFromRegExAnnotationOnProperty(validationExpression, formatExpression, caseSensitive, holder); + } + + private RegExFacetFromRegExAnnotationOnProperty(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/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java index 7aa0e41..326daa3 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/renderedasdaybefore/annotation/RenderedAsDayBeforeAnnotationOnPropertyFacetFactory.java @@ -45,7 +45,7 @@ public class RenderedAsDayBeforeAnnotationOnPropertyFacetFactory extends FacetFa final RenderedAsDayBefore annotation = Annotations.getAnnotation(processMethodContext.getMethod(), RenderedAsDayBefore.class); final RenderedAdjustedFacet facet = create(annotation, processMethodContext.getFacetHolder()); - validator.addFacet(facet); + validator.addFacetFlagIfPresent(facet); } private RenderedAdjustedFacet create(final RenderedAsDayBefore 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/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotation.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotation.java deleted file mode 100644 index 186759c..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotation.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.properties.validating.maxlenannot; - -import org.apache.isis.core.metamodel.facetapi.FacetHolder; -import org.apache.isis.core.metamodel.facets.propparam.maxlen.MaxLengthFacetAbstract; - -public class MaxLengthFacetOnPropertyAnnotation extends MaxLengthFacetAbstract { - - public MaxLengthFacetOnPropertyAnnotation(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/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotationFactory.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotationFactory.java deleted file mode 100644 index 7bf541c..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/maxlenannot/MaxLengthFacetOnPropertyAnnotationFactory.java +++ /dev/null @@ -1,63 +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.properties.validating.maxlenannot; - -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 MaxLengthFacetOnPropertyAnnotationFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner, IsisConfigurationAware { - - private final MetaModelValidatorForDeprecatedAnnotation validator = new MetaModelValidatorForDeprecatedAnnotation(MaxLength.class); - - - public MaxLengthFacetOnPropertyAnnotationFactory() { - super(FeatureType.PROPERTIES_ONLY); - } - - @Override - public void process(final ProcessMethodContext processMethodContext) { - final MaxLength annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MaxLength.class); - validator.addFacet(create(annotation, processMethodContext.getFacetHolder())); - } - - private MaxLengthFacet create(final MaxLength annotation, final FacetHolder holder) { - return annotation == null ? null : new MaxLengthFacetOnPropertyAnnotation(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); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/31816a69/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java deleted file mode 100644 index d559a4e..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/validating/mustsatisfyspec/MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty.java +++ /dev/null @@ -1,52 +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.properties.validating.mustsatisfyspec; - -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 MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty extends MustSatisfySpecificationFacetAbstract { - - 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 MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty(specifications, holder) : null; - } - - - private MustSatisfySpecificationFacetForMustSatisfyAnnotationOnProperty(final List<Specification> specifications, final FacetHolder holder) { - super(specifications, holder); - } - -}
