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/09/16 04:50:44 UTC

[isis] branch master updated: ISIS-2871: auto install value facets based on presence of corresponding value semantics within Spring's context

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 e1ac26a  ISIS-2871: auto install value facets based on presence of corresponding value semantics within Spring's context
e1ac26a is described below

commit e1ac26ac673c487793b94732e50125c245f72d2a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 06:50:34 2021 +0200

    ISIS-2871: auto install value facets based on presence of corresponding
    value semantics within Spring's context
---
 .../facets/object/value/ValueFacetAbstract.java    | 58 +++-------------------
 ...onOrAnyMatchingValueSemanticsFacetFactory.java} | 49 +++++++++++-------
 .../vsp/ValueFacetUsingSemanticsProvider.java      |  5 +-
 .../ValueFacetUsingSemanticsProviderFactory.java   |  7 +--
 .../ValueSemanticsProviderAndFacetAbstract.java    |  1 +
 ...malValueFacetUsingSemanticsProviderFactory.java | 51 -------------------
 ...UIDValueFacetUsingSemanticsProviderFactory.java | 52 -------------------
 .../dflt/ProgrammingModelFacetsJava11.java         | 11 ++--
 ...eFacetAnnotationOrConfigurationFactoryTest.java |  6 +--
 .../facets/param/name/ParameterNameFacetTest.java  |  2 +-
 10 files changed, 52 insertions(+), 190 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 f7646f0..caba1fd 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
@@ -19,14 +19,11 @@
 package org.apache.isis.core.metamodel.facets.object.value;
 
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.core.metamodel.commons.ClassExtensions;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
 public abstract class ValueFacetAbstract
 extends FacetAbstract
 implements ValueFacet {
@@ -35,57 +32,16 @@ implements ValueFacet {
         return ValueFacet.class;
     }
 
-    private static ValueSemanticsProvider<?> newValueSemanticsProviderOrNull(
-            final Class<?> semanticsProviderClass, final FacetHolder holder) {
-        if (semanticsProviderClass == null) {
-            return null;
-        }
-
-        return (ValueSemanticsProvider<?>) ClassExtensions.newInstance(semanticsProviderClass,
-                new Class<?>[] { FacetHolder.class/*, ServiceInjector.class*/ }, new Object[] { holder });
-    }
-
-    private final ValueSemanticsProvider<?> semanticsProvider;
-
-    @RequiredArgsConstructor
-    public enum AddFacetsIfInvalidStrategy {
-        DO_ADD(true), DONT_ADD(false);
-        private final boolean addFacetsIfInvalid;
-
-        public boolean shouldAddFacetsIfInvalid() {
-            return addFacetsIfInvalid;
-        }
-    }
-
-    protected ValueFacetAbstract(
-            final Class<?> semanticsProviderClass,
-            final AddFacetsIfInvalidStrategy addFacetsIfInvalid,
-            final FacetHolder holder,
-            final Facet.Precedence precedence) {
-
-        this(newValueSemanticsProviderOrNull(semanticsProviderClass, holder), addFacetsIfInvalid, holder, precedence);
-    }
+    private final Can<ValueSemanticsProvider<?>> semanticsProviders;
 
     protected ValueFacetAbstract(
-            final ValueSemanticsProvider<?> semanticsProvider,
-            final AddFacetsIfInvalidStrategy addFacetsIfInvalid,
+            final Can<ValueSemanticsProvider<?>> semanticsProviders,
             final FacetHolder holder,
             final Facet.Precedence precedence) {
 
         super(type(), holder, precedence);
 
-        this.semanticsProvider = semanticsProvider;
-
-        // note: we can't use the runtimeContext to inject dependencies into the
-        // semanticsProvider,
-        // because there won't be any PersistenceSession when initially building
-        // the metamodel.
-        // so, we defer until we use the parser.
-
-        if (!hasSemanticsProvider()
-                && !addFacetsIfInvalid.shouldAddFacetsIfInvalid()) {
-            return;
-        }
+        this.semanticsProviders = semanticsProviders;
 
         // we now figure add all the facets supported. Note that we do not use
         // FacetUtil.addFacet,
@@ -93,14 +49,12 @@ implements ValueFacet {
         // but have the
         // facets themselves reference this value's holder.
 
-        val facetHolder = super.getFacetHolder();
-
-        facetHolder.addFacet(this); // add just ValueFacet.class
+        super.getFacetHolder().addFacet(this); // add just ValueFacet.class
 
     }
 
     protected boolean hasSemanticsProvider() {
-        return this.semanticsProvider != null;
+        return !this.semanticsProviders.isEmpty();
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
similarity index 79%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationFacetFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
index 5718519..3002d44 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
@@ -57,6 +57,7 @@ import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSem
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.annotation.LogicalTypeFacetForValueAnnotation;
 
+import lombok.Getter;
 import lombok.SneakyThrows;
 import lombok.extern.log4j.Log4j2;
 
@@ -86,43 +87,47 @@ import lombok.extern.log4j.Log4j2;
  * Note that {@link ParentedCollectionFacet} is <i>not</i> installed.
  */
 @Log4j2
-public class ValueFacetForValueAnnotationFacetFactory
+public class ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory
 extends ValueFacetUsingSemanticsProviderFactory {
 
     @Inject
-    public ValueFacetForValueAnnotationFacetFactory(final MetaModelContext mmc) {
+    public ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory(final MetaModelContext mmc) {
         super(mmc);
     }
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
 
+        final var cls = processClassContext.getCls();
         final var facetHolder = processClassContext.getFacetHolder();
         final var valueIfAny = processClassContext.synthesizeOnType(Value.class);
 
-        final var cls = processClassContext.getCls();
-
         addFacetIfPresent(
                 LogicalTypeFacetForValueAnnotation
                 .create(valueIfAny, cls, facetHolder));
 
+        final var valueSemantics = lookupValueSemantics(cls);
+        //FIXME install them all, then enable qualifiers
+        if(!valueSemantics.isEmpty()) {
+            super.addAllFacetsForValueSemantics(valueSemantics, facetHolder);
+        }
+
+//        if(valueIfAny.isPresent()
+//                || ClassUtils.isPrimitiveOrWrapper(cls)
+//                || Number.class.isAssignableFrom(cls)) {
+//
+//        }
+
         valueIfAny
         .ifPresent(value->{
 
-            final var candidates = lookupValueSemantics(cls);
-            if(candidates.isCardinalityOne()) {
-                super.addAllFacetsForValueSemantics(candidates.getFirstOrFail(), facetHolder);
+            if(valueSemantics.isCardinalityMultiple()) {
+                log.warn("found multiple ValueSemanticsProvider for value type {}; using the first", cls);
             } else {
-
-                if(candidates.isCardinalityMultiple()) {
-                    log.warn("found multiple ValueSemanticsProvider for value type {}; using the first", cls);
-                    super.addAllFacetsForValueSemantics(candidates.getFirstOrFail(), facetHolder);
-                } else {
-                    log.warn("could not find a ValueSemanticsProvider for value type {}; using a no-op fallback", cls);
-                    super.addAllFacetsForValueSemantics(new NoopValueSemantics(), facetHolder);
-                }
-
+                log.warn("could not find a ValueSemanticsProvider for value type {}; using a no-op fallback", cls);
+                super.addAllFacetsForValueSemantics(getFallbackValueSemantics(), facetHolder);
             }
+
         });
     }
 
@@ -147,10 +152,18 @@ extends ValueFacetUsingSemanticsProviderFactory {
 
     }
 
+    @Getter(lazy = true)
+    private final Can<ValueSemanticsProvider<?>> fallbackValueSemantics = Can.of(new NoopValueSemantics());
+
+
+    @Getter(lazy = true)
+    private final Can<ValueSemanticsProvider<?>> allValueSemanticsProviders = getServiceRegistry()
+            .select(ValueSemanticsProvider.class)
+            .map(_Casts::uncheckedCast);
+
     private <T> Can<ValueSemanticsProvider<T>> lookupValueSemantics(final Class<T> valueType) {
         var resolvableType = ResolvableType.forClassWithGenerics(ValueSemanticsProvider.class, valueType);
-        return getServiceRegistry()
-                .select(ValueSemanticsProvider.class)
+        return getAllValueSemanticsProviders()
                 .stream()
                 .filter(resolvableType::isInstance)
                 .map(provider->_Casts.<ValueSemanticsProvider<T>>uncheckedCast(provider))
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
index 4558903..eaf4d84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacetAbstract;
 
@@ -26,10 +27,10 @@ public class ValueFacetUsingSemanticsProvider
 extends ValueFacetAbstract {
 
     public ValueFacetUsingSemanticsProvider(
-            final ValueSemanticsProvider<?> valueSemantics,
+            final Can<ValueSemanticsProvider<?>> valueSemantics,
             final FacetHolder holder) {
 
-        super(valueSemantics, AddFacetsIfInvalidStrategy.DO_ADD, holder, Precedence.DEFAULT);
+        super(valueSemantics, holder, Precedence.DEFAULT);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 97ca116..50f5aee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -22,6 +22,7 @@ import org.apache.isis.applib.adapters.DefaultsProvider;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,16 +47,16 @@ extends FacetFactoryAbstract {
     @Deprecated
     protected final void addValueFacet(final ValueSemanticsProviderAndFacetAbstract<T> valueSemantics) {
         FacetUtil.addFacet(
-                new ValueFacetUsingSemanticsProvider(valueSemantics, valueSemantics.getFacetHolder()));
+                new ValueFacetUsingSemanticsProvider(Can.ofSingleton(valueSemantics), valueSemantics.getFacetHolder()));
         installRelatedFacets(valueSemantics, valueSemantics.getFacetHolder());
     }
 
     protected final void addAllFacetsForValueSemantics(
-            final ValueSemanticsProvider<?> valueSemantics,
+            final Can<ValueSemanticsProvider<?>> valueSemantics,
             final FacetHolder holder) {
         FacetUtil.addFacet(
                 new ValueFacetUsingSemanticsProvider(valueSemantics, holder));
-        installRelatedFacets(valueSemantics, holder);
+        installRelatedFacets(valueSemantics.getFirstOrFail(), holder);
     }
 
     // -- HELPER
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 087a473..515b7d9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
+@Deprecated
 public abstract class ValueSemanticsProviderAndFacetAbstract<T>
 extends FacetAbstract
 implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 801cef9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,51 +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.value.bigdecimal;
-
-import java.math.BigDecimal;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
-
-public class BigDecimalValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<BigDecimal> {
-
-    @Inject private ValueSemanticsProvider<BigDecimal> valueSemantics;
-
-    public BigDecimalValueFacetUsingSemanticsProviderFactory(
-            final MetaModelContext mmc) {
-        super(mmc);
-        getServiceInjector().injectServicesInto(this);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-        if (type != BigDecimal.class) {
-            return;
-        }
-        addAllFacetsForValueSemantics(valueSemantics, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index f2a23ea..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueFacetUsingSemanticsProviderFactory.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.value.uuid;
-
-import java.util.UUID;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProviderFactory;
-
-public class UUIDValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<UUID> {
-
-    @Inject private ValueSemanticsProvider<UUID> valueSemantics;
-
-    public UUIDValueFacetUsingSemanticsProviderFactory(
-            final MetaModelContext mmc) {
-        super(mmc);
-        getServiceInjector().injectServicesInto(this);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        if (type != UUID.class) {
-            return;
-        }
-        addAllFacetsForValueSemantics(valueSemantics, holder);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index ce5f8f9..4f23e44 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -60,7 +60,7 @@ import org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.Object
 import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethodFactory;
 import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
@@ -84,8 +84,6 @@ import org.apache.isis.core.metamodel.facets.properties.propertylayout.PropertyL
 import org.apache.isis.core.metamodel.facets.properties.update.PropertySetterFacetFactory;
 import org.apache.isis.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefaultFactory;
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethodFactory;
-import org.apache.isis.core.metamodel.facets.value.annotation.ValueAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.booleans.BooleanPrimitiveValueFacetUsingSemanticsProviderFactory;
@@ -124,7 +122,6 @@ import org.apache.isis.core.metamodel.facets.value.timejodalocal.JodaLocalTimeVa
 import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.timestampsql.JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.url.URLValueFacetUsingSemanticsProviderFactory;
-import org.apache.isis.core.metamodel.facets.value.uuid.UUIDValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.methods.DomainIncludeAnnotationEnforcesMetamodelContributionValidator;
 import org.apache.isis.core.metamodel.methods.MethodByClassMap;
 import org.apache.isis.core.metamodel.postprocessors.DeriveMixinMembersPostProcessor;
@@ -173,7 +170,7 @@ extends ProgrammingModelAbstract {
 
         addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, new LogicalTypeFacetDerivedFromClassNameFactory(mmc, classSubstitutorRegistry));
         addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, new DomainServiceFacetAnnotationFactory(mmc));
-        addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, new ValueFacetForValueAnnotationFacetFactory(mmc));
+        addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, new ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory(mmc));
 
         addFactory(FacetProcessingOrder.C1_METHOD_REMOVING, new IteratorFilteringFacetFactory(mmc));
 
@@ -294,7 +291,6 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new CharPrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new CharWrapperValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BigIntegerValueFacetUsingSemanticsProviderFactory(mmc));
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BigDecimalValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlDateValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory(mmc));
@@ -302,7 +298,6 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new StringValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new URLValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new LocalResourcePathValueFacetUsingSemanticsProviderFactory(mmc));
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new UUIDValueFacetUsingSemanticsProviderFactory(mmc));
 
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaAwtImageValueFacetUsingSemanticsProviderFactory(mmc));
 
@@ -331,7 +326,7 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.Z1_FINALLY, new ParentedFacetSinceCollectionFactory(mmc));
 
         // so we can dogfood the applib "value" types
-        addFactory(FacetProcessingOrder.Z1_FINALLY, new ValueFacetForValueAnnotationFacetFactory(mmc));
+        addFactory(FacetProcessingOrder.Z1_FINALLY, new ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory(mmc));
 
 
         // should come near the end, after any facets that install PropertySetterFacet have run.
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
index 9a8f16e..d8b78eb 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
@@ -24,17 +24,17 @@ import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory;
 
 public class ValueFacetAnnotationOrConfigurationFactoryTest extends AbstractFacetFactoryTest {
 
-    private ValueFacetForValueAnnotationFacetFactory facetFactory;
+    private ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory facetFactory;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        facetFactory = new ValueFacetForValueAnnotationFacetFactory(metaModelContext);
+        facetFactory = new ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory(metaModelContext);
     }
 
     @Override
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 345ee36..18c781a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
 
     @Test
     public void verifyProgrammingModelNumberOfFactories() {
-        assertEquals(105, programmingModel.streamFactories().count());
+        assertEquals(103, programmingModel.streamFactories().count());
     }
 
     @Test //verify we have the javac -parameter flag set when compiling this class