You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/06/08 07:24:33 UTC
[isis] branch master updated: ISIS-2724: MM/ValueFacet: housekeeping
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 2681d9b ISIS-2724: MM/ValueFacet: housekeeping
2681d9b is described below
commit 2681d9b8e6e6b38e7214f53f8e986e779e21715f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jun 8 09:24:18 2021 +0200
ISIS-2724: MM/ValueFacet: housekeeping
---
.../facets/object/value/ValueFacetAbstract.java | 5 +--
.../value/annotcfg/ValueFacetAnnotation.java | 38 ++++++++--------------
...ValueFacetAnnotationOrConfigurationFactory.java | 34 +++++++------------
3 files changed, 29 insertions(+), 48 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 11014a7..1d6703b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -91,7 +91,8 @@ implements ValueFacet {
// the metamodel.
// so, we defer until we use the parser.
- if (!isValid() && !addFacetsIfInvalid.shouldAddFacetsIfInvalid()) {
+ if (!hasSemanticsProvider()
+ && !addFacetsIfInvalid.shouldAddFacetsIfInvalid()) {
return;
}
@@ -147,7 +148,7 @@ implements ValueFacet {
}
}
- public boolean isValid() {
+ public boolean hasSemanticsProvider() {
return this.semanticsProvider != null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
index bfb6c30..b8079a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
@@ -26,47 +26,37 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderUtil;
+import lombok.NonNull;
+
public class ValueFacetAnnotation extends ValueFacetAbstract {
public ValueFacetAnnotation(
- IsisConfiguration config,
- Class<?> annotatedClass,
- FacetHolder holder) {
+ final @NonNull Value value,
+ final @NonNull IsisConfiguration config,
+ final @NonNull Class<?> annotatedClass,
+ final @NonNull FacetHolder holder) {
super(ValueSemanticsProviderUtil
.valueSemanticsProviderOrNull(
- semanticsProviderClass(annotatedClass),
- semanticsProviderName(config, annotatedClass)),
+ value.semanticsProviderClass(),
+ semanticsProviderName(value, config, annotatedClass)),
AddFacetsIfInvalidStrategy.DO_ADD,
holder);
}
- /**
- * Always valid, even if the specified semanticsProviderName might have been
- * wrong.
- */
- @Override
- public boolean isValid() {
- return true;
- }
-
// -- HELPER
- private static String semanticsProviderName(IsisConfiguration config, Class<?> annotatedClass) {
+ private static String semanticsProviderName(
+ final Value value,
+ final IsisConfiguration config,
+ final Class<?> annotatedClass) {
- final Value annotation = annotatedClass.getAnnotation(Value.class);
- final String semanticsProviderName = annotation.semanticsProviderName();
- if (!_Strings.isNullOrEmpty(semanticsProviderName)) {
+ final String semanticsProviderName = value.semanticsProviderName();
+ if (_Strings.isNotEmpty(semanticsProviderName)) {
return semanticsProviderName;
}
return ValueSemanticsProviderUtil
.semanticsProviderNameFromConfiguration(config, annotatedClass);
}
- private static Class<?> semanticsProviderClass(final Class<?> annotatedClass) {
- final Value annotation = annotatedClass.getAnnotation(Value.class);
- return annotation.semanticsProviderClass();
- }
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index cd186f4..3d44c05 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -23,10 +23,8 @@ import org.apache.isis.applib.adapters.EncoderDecoder;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.annotation.Value;
import org.apache.isis.commons.internal.base._Strings;
-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.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
@@ -35,7 +33,6 @@ import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionF
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet;
-import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderUtil;
import lombok.val;
@@ -75,38 +72,31 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
@Override
public void process(final ProcessClassContext processClassContext) {
- FacetUtil.addFacet(create(processClassContext.getCls(), processClassContext.getFacetHolder()));
- }
-
- /**
- * Returns a {@link ValueFacet} implementation.
- */
- private ValueFacet create(final Class<?> cls, final FacetHolder holder) {
-
+ val cls = processClassContext.getCls();
+ val facetHolder = processClassContext.getFacetHolder();
+ val valueIfAny = processClassContext.synthesizeOnType(Value.class);
val config = super.getMetaModelContext().getConfiguration();
// create from annotation, if present
- final Value annotation = Annotations.getAnnotation(cls, Value.class);
- if (annotation != null) {
- final ValueFacetAnnotation facet = new ValueFacetAnnotation(config, cls, holder);
- if (facet.isValid()) {
- return facet;
- }
+ if (valueIfAny.isPresent()) {
+ FacetUtil.addFacet(new ValueFacetAnnotation(valueIfAny.get(), config, cls, facetHolder));
+ return;
}
// otherwise, try to create from configuration, if present
final String semanticsProviderName = ValueSemanticsProviderUtil
.semanticsProviderNameFromConfiguration(config, cls);
- if (!_Strings.isNullOrEmpty(semanticsProviderName)) {
- final ValueFacetFromConfiguration facet = new ValueFacetFromConfiguration(semanticsProviderName, holder);
- if (facet.isValid()) {
- return facet;
+ if (_Strings.isNotEmpty(semanticsProviderName)) {
+ val valueFacet = new ValueFacetFromConfiguration(semanticsProviderName, facetHolder);
+ if (valueFacet.hasSemanticsProvider()) {
+ FacetUtil.addFacet(valueFacet);
+ return;
}
}
// otherwise, no value semantic
- return null;
+
}