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 2017/10/09 18:30:13 UTC
[isis] branch dev/2.0.0/ISIS-1742-remove-deprecations updated:
ISIS-1742: deletes @Optional annotation + supporting facets. Updates .adoc
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/dev/2.0.0/ISIS-1742-remove-deprecations by this push:
new 64363f5 ISIS-1742: deletes @Optional annotation + supporting facets. Updates .adoc
64363f5 is described below
commit 64363f5240ca1cd3d9afc76cbbe1187debea4a95
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 9 19:30:06 2017 +0100
ISIS-1742: deletes @Optional annotation + supporting facets. Updates .adoc
---
.../guides/rgant/_rgant_aaa_deprecated.adoc | 10 +---
...programming-model_properties-vs-parameters.adoc | 2 +-
.../apache/isis/applib/annotation/Optional.java | 44 -----------------
.../isis/applib/services/command/Command.java | 5 +-
.../parameter/ParameterAnnotationFacetFactory.java | 16 -------
...cetInvertedByOptionalAnnotationOnParameter.java | 56 ----------------------
.../property/PropertyAnnotationFacetFactory.java | 13 -----
...acetInvertedByOptionalAnnotationOnProperty.java | 56 ----------------------
...ableAnnotationOnParameterFacetFactoryTest.java} | 53 ++++++++++++++++----
...lableAnnotationOnPropertyFacetFactoryTest.java} | 54 +++++++++++++++++----
10 files changed, 96 insertions(+), 213 deletions(-)
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
index 42e1944..eef1993 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_deprecated.adoc
@@ -14,27 +14,19 @@ The annotations listed in the table below are still supported by Apache Isis, bu
.Deprecated Annotations
-[cols="2,4a,3a,1,1", options="header"]
+[cols="2,4a,3a,1", options="header"]
|===
|Annotation
|Purpose
|Use instead
|Layer
-|xref:../ugvw/ugvw.adoc#_ugvw_layout_file-based[File-based layout]?
-|`@Optional`
-|Specifies that a property or action parameter is not mandatory.
-|`#optionality()` attribute for xref:../rgant/rgant.adoc#_rgant-Property_optionality[`@Property`] or xref:../rgant/rgant.adoc#_rgant-Parameter_optionality[`@Parameter`]
-|Domain
-|
-
|`@RegEx`
|Validate change to value of string property.
|`#regexPattern()` for xref:../rgant/rgant.adoc#_rgant-Property_regexPattern[`@Property`] or xref:../rgant/rgant.adoc#_rgant-Property_regexPattern[`@Parameter`].
|Domain
-|
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_properties-vs-parameters.adoc b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_properties-vs-parameters.adoc
index e588c44..a73de66 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_properties-vs-parameters.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_programming-model_properties-vs-parameters.adoc
@@ -32,7 +32,7 @@ The table below summarises the equivalence of some of the most common cases.
|optionality
|`@Column(allowsNull="true")`
-|`@Nullable` or `ParameterLayout(optionality=Optionality.OPTIONAL`) (also `@Optional`, now deprecated)
+|`@Nullable` or `ParameterLayout(optionality=Optionality.OPTIONAL`)
|===
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Optional.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Optional.java
deleted file mode 100644
index 353c1cf..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Optional.java
+++ /dev/null
@@ -1,44 +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.applib.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Indicates that a property or parameter is not mandatory.
- *
- * <p>
- * Isis' default is that properties/parameters are mandatory unless otherwise
- * annotated as optional; this is most typically done using this annotation.
- *
- *
- * @deprecated - use {@link Property#optionality()} and {@link Parameter#optionality()} (with {@link Optionality#OPTIONAL}) instead.
- */
-@Deprecated
-@Inherited
-@Target({ ElementType.METHOD, ElementType.PARAMETER })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Optional {
-
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
index 756bb34..a876261 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
@@ -18,11 +18,12 @@ package org.apache.isis.applib.services.command;
import java.sql.Timestamp;
+import javax.annotation.Nullable;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.CommandExecuteIn;
import org.apache.isis.applib.annotation.CommandPersistence;
-import org.apache.isis.applib.annotation.Optional;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.clock.Clock;
import org.apache.isis.applib.services.HasTransactionId;
@@ -342,7 +343,7 @@ public interface Command extends HasTransactionId {
* @deprecated - see {@link Interaction#getCurrentExecution()} and {@link org.apache.isis.applib.services.iactn.Interaction.Execution#getThrew()} instead.
*/
@Deprecated
- @Optional
+ @Nullable
String getException();
/**
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 8dbf9a7..6105075 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
@@ -24,11 +24,9 @@ import java.lang.reflect.Method;
import javax.annotation.Nullable;
-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.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MetaModelValidatorRefiner;
@@ -41,7 +39,6 @@ import org.apache.isis.core.metamodel.facets.objectvalue.regex.TitleFacetFormatt
import org.apache.isis.core.metamodel.facets.param.parameter.fileaccept.FileAcceptFacetForParameterAnnotation;
import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation;
import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetInvertedByNullableAnnotationOnParameter;
-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.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation;
import org.apache.isis.core.metamodel.facets.param.parameter.regex.RegExFacetForParameterAnnotation;
@@ -54,7 +51,6 @@ import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorFor
public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner {
private final MetaModelValidatorForDeprecatedAnnotation regexValidator = new MetaModelValidatorForDeprecatedAnnotation(RegEx.class);
- private final MetaModelValidatorForDeprecatedAnnotation optionalValidator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class);
private final MetaModelValidatorForConflictingOptionality conflictingOptionalityValidator = new MetaModelValidatorForConflictingOptionality();
public ParameterAnnotationFacetFactory() {
@@ -158,16 +154,6 @@ public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implem
for (final Annotation parameterAnnotation : parameterAnnotations) {
final Class<?> parameterType = parameterTypes[paramNum];
- if (parameterAnnotation instanceof Optional) {
- final Optional annotation = (Optional) parameterAnnotation;
- FacetUtil.addFacet(optionalValidator.flagIfPresent(
- MandatoryFacetInvertedByOptionalAnnotationOnParameter.create(
- annotation, parameterType, holder), processParameterContext));
- }
- }
-
- for (final Annotation parameterAnnotation : parameterAnnotations) {
- final Class<?> parameterType = parameterTypes[paramNum];
if (parameterAnnotation instanceof javax.annotation.Nullable) {
final Nullable annotation = (Nullable) parameterAnnotation;
final MandatoryFacet facet =
@@ -212,7 +198,6 @@ public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implem
@Override
public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
metaModelValidator.add(regexValidator);
- metaModelValidator.add(optionalValidator);
metaModelValidator.add(conflictingOptionalityValidator);
}
@@ -221,7 +206,6 @@ public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implem
super.setServicesInjector(servicesInjector);
IsisConfiguration configuration = servicesInjector.getConfigurationServiceInternal();
regexValidator.setConfiguration(configuration);
- optionalValidator.setConfiguration(configuration);
}
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
deleted file mode 100644
index 4aaadfa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnParameter.java
+++ /dev/null
@@ -1,56 +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.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.objectvalue.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()}.
- *
- * @deprecated
- */
-@Deprecated
-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);
- }
-
-
-}
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 2e51522..5fd35fb 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
@@ -23,7 +23,6 @@ import java.lang.reflect.Method;
import javax.annotation.Nullable;
-import org.apache.isis.applib.annotation.Optional;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.RegEx;
import org.apache.isis.applib.services.HasTransactionId;
@@ -53,7 +52,6 @@ import org.apache.isis.core.metamodel.facets.properties.property.fileaccept.File
import org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetInvertedByNullableAnnotationOnProperty;
-import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnProperty;
import org.apache.isis.core.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault;
import org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromPropertyAnnotation;
@@ -79,7 +77,6 @@ import org.apache.isis.core.metamodel.util.EventUtil;
public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract implements MetaModelValidatorRefiner {
private final MetaModelValidatorForDeprecatedAnnotation regexValidator = new MetaModelValidatorForDeprecatedAnnotation(RegEx.class);
- private final MetaModelValidatorForDeprecatedAnnotation optionalValidator = new MetaModelValidatorForDeprecatedAnnotation(Optional.class);
private final MetaModelValidatorForConflictingOptionality conflictingOptionalityValidator = new MetaModelValidatorForConflictingOptionality();
@@ -297,15 +294,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
- // check for deprecated @Optional
- final Optional optionalAnnotation = Annotations.getAnnotation(method, Optional.class);
- FacetUtil.addFacet(
- optionalValidator.flagIfPresent(
- MandatoryFacetInvertedByOptionalAnnotationOnProperty.create(optionalAnnotation, method, holder),
- processMethodContext));
-
// check for @Nullable
- final MandatoryFacet facet;
final Nullable nullableAnnotation = Annotations.getAnnotation(method, Nullable.class);
final MandatoryFacet facet2 =
MandatoryFacetInvertedByNullableAnnotationOnProperty.create(nullableAnnotation, method, holder);
@@ -364,7 +353,6 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
@Override
public void refineMetaModelValidator(final MetaModelValidatorComposite metaModelValidator, final IsisConfiguration configuration) {
metaModelValidator.add(regexValidator);
- metaModelValidator.add(optionalValidator);
metaModelValidator.add(conflictingOptionalityValidator);
}
@@ -377,7 +365,6 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
super.setServicesInjector(servicesInjector);
IsisConfiguration configuration = servicesInjector.getConfigurationServiceInternal();
regexValidator.setConfiguration(configuration);
- optionalValidator.setConfiguration(configuration);
}
}
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
deleted file mode 100644
index 23de2e5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetInvertedByOptionalAnnotationOnProperty.java
+++ /dev/null
@@ -1,56 +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.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.objectvalue.mandatory.MandatoryFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.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()}.
- *
- * @deprecated
- */
-@Deprecated
-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) {
-
- if(annotation == null) {
- return null;
- }
-
- final Class<?> returnType = method.getReturnType();
- if (returnType.isPrimitive()) {
- return null;
- }
- return new MandatoryFacetInvertedByOptionalAnnotationOnProperty(holder);
- }
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/OptionalAnnotationOnParameterFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterOptionalityOrNullableAnnotationOnParameterFacetFactoryTest.java
similarity index 52%
rename from core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/OptionalAnnotationOnParameterFacetFactoryTest.java
rename to core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterOptionalityOrNullableAnnotationOnParameterFacetFactoryTest.java
index c83d358..c3a4c38 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/OptionalAnnotationOnParameterFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterOptionalityOrNullableAnnotationOnParameterFacetFactoryTest.java
@@ -20,14 +20,19 @@
package org.apache.isis.core.metamodel.facets.param.parameter;
import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.Optional;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
-import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnParameter;
import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
+import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation;
+import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetInvertedByNullableAnnotationOnParameter;
-public class OptionalAnnotationOnParameterFacetFactoryTest extends AbstractFacetFactoryTest {
+public class ParameterOptionalityOrNullableAnnotationOnParameterFacetFactoryTest extends AbstractFacetFactoryTest {
private ParameterAnnotationFacetFactory facetFactory;
@@ -35,11 +40,43 @@ public class OptionalAnnotationOnParameterFacetFactoryTest extends AbstractFacet
super.setUp();
facetFactory = new ParameterAnnotationFacetFactory();
}
- public void testOptionalAnnotationPickedUpOnActionParameter() {
+
+ public void testParameterAnnotationWithOptionalityPickedUpOnActionParameter() {
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction(@Parameter(optionality = Optionality.OPTIONAL) final String foo) {
+ }
+ }
+ final Method method = findMethod(Customer.class, "someAction", new Class[] { String.class });
+
+ facetFactory.processParamsOptional(new ProcessParameterContext(Customer.class, method, 0, null, facetedMethodParameter));
+
+ final Facet facet = facetedMethodParameter.getFacet(MandatoryFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof MandatoryFacetForParameterAnnotation.Optional);
+ }
+
+ public void testParameterAnnotationWithOptionalityIgnoredForPrimitiveOnActionParameter() {
+
+ class Customer {
+ @SuppressWarnings("unused")
+ public void someAction(@Parameter(optionality = Optionality.OPTIONAL) final int foo) {
+ }
+ }
+ final Method method = findMethod(Customer.class, "someAction", new Class[] { int.class });
+
+ facetFactory.processParamsOptional(new ProcessParameterContext(Customer.class, method, 0, null, facetedMethodParameter));
+
+ assertNull(facetedMethod.getFacet(MandatoryFacet.class));
+ }
+
+
+ public void testNullableAnnotationPickedUpOnActionParameter() {
class Customer {
@SuppressWarnings("unused")
- public void someAction(@Optional final String foo) {
+ public void someAction(@Nullable final String foo) {
}
}
final Method method = findMethod(Customer.class, "someAction", new Class[] { String.class });
@@ -48,14 +85,14 @@ public class OptionalAnnotationOnParameterFacetFactoryTest extends AbstractFacet
final Facet facet = facetedMethodParameter.getFacet(MandatoryFacet.class);
assertNotNull(facet);
- assertTrue(facet instanceof MandatoryFacetInvertedByOptionalAnnotationOnParameter);
+ assertTrue(facet instanceof MandatoryFacetInvertedByNullableAnnotationOnParameter);
}
- public void testOptionalAnnotationIgnoredForPrimitiveOnActionParameter() {
+ public void testNullableAnnotationIgnoredForPrimitiveOnActionParameter() {
class Customer {
@SuppressWarnings("unused")
- public void someAction(@Optional final int foo) {
+ public void someAction(@Nullable final int foo) {
}
}
final Method method = findMethod(Customer.class, "someAction", new Class[] { int.class });
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyOptionalityOrNullableAnnotationOnPropertyFacetFactoryTest.java
similarity index 55%
rename from core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
rename to core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyOptionalityOrNullableAnnotationOnPropertyFacetFactoryTest.java
index 150bf2f..bc7f36b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/OptionalAnnotationOnPropertyFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyOptionalityOrNullableAnnotationOnPropertyFacetFactoryTest.java
@@ -20,14 +20,19 @@
package org.apache.isis.core.metamodel.facets.properties.property;
import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.Optional;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetInvertedByOptionalAnnotationOnProperty;
import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
+import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetForPropertyAnnotation;
+import org.apache.isis.core.metamodel.facets.properties.property.mandatory.MandatoryFacetInvertedByNullableAnnotationOnProperty;
-public class OptionalAnnotationOnPropertyFacetFactoryTest extends AbstractFacetFactoryTest {
+public class PropertyOptionalityOrNullableAnnotationOnPropertyFacetFactoryTest extends AbstractFacetFactoryTest {
private PropertyAnnotationFacetFactory facetFactory;
@@ -36,10 +41,43 @@ public class OptionalAnnotationOnPropertyFacetFactoryTest extends AbstractFacetF
facetFactory = new PropertyAnnotationFacetFactory();
}
- public void testOptionalAnnotationPickedUpOnProperty() {
+ public void testPropertyAnnotationWithOptionalityPickedUpOnProperty() {
+
+ class Customer {
+ @Property(optionality = Optionality.OPTIONAL)
+ public String getFirstName() {
+ return null;
+ }
+ }
+ final Method method = findMethod(Customer.class, "getFirstName");
+
+ facetFactory.processOptional(new ProcessMethodContext(Customer.class, null, method, methodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(MandatoryFacet.class);
+ assertNotNull(facet);
+ assertTrue(facet instanceof MandatoryFacetForPropertyAnnotation.Optional);
+ }
+
+ public void testPropertyAnnotationIgnoredForPrimitiveOnProperty() {
+
+ class Customer {
+ @SuppressWarnings("unused")
+ @Property(optionality = Optionality.OPTIONAL)
+ public int getNumberOfOrders() {
+ return 0;
+ }
+ }
+ final Method method = findMethod(Customer.class, "getNumberOfOrders");
+
+ facetFactory.processOptional(new ProcessMethodContext(Customer.class, null, method, methodRemover, facetedMethod));
+
+ assertNotNull(facetedMethod.getFacet(MandatoryFacet.class));
+ }
+
+ public void testNullableAnnotationPickedUpOnProperty() {
class Customer {
- @Optional
+ @Nullable
public String getFirstName() {
return null;
}
@@ -50,14 +88,14 @@ public class OptionalAnnotationOnPropertyFacetFactoryTest extends AbstractFacetF
final Facet facet = facetedMethod.getFacet(MandatoryFacet.class);
assertNotNull(facet);
- assertTrue(facet instanceof MandatoryFacetInvertedByOptionalAnnotationOnProperty);
+ assertTrue(facet instanceof MandatoryFacetInvertedByNullableAnnotationOnProperty);
}
- public void testOptionalAnnotationIgnoredForPrimitiveOnProperty() {
+ public void testNullableAnnotationIgnoredForPrimitiveOnProperty() {
class Customer {
@SuppressWarnings("unused")
- @Optional
+ @Nullable
public int getNumberOfOrders() {
return 0;
}
--
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].