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 05:49:54 UTC

[isis] branch master updated: ISIS-2871: Spring managed value semantics for Boolean/boolean

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 fdcb7c6  ISIS-2871: Spring managed value semantics for Boolean/boolean
fdcb7c6 is described below

commit fdcb7c6e4d94797e70824c8ffe6f3e380e271563
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 07:49:45 2021 +0200

    ISIS-2871: Spring managed value semantics for Boolean/boolean
---
 .../core/metamodel/IsisModuleCoreMetamodel.java    |   2 +
 ...ionOrAnyMatchingValueSemanticsFacetFactory.java |  22 +----
 ...iveValueFacetUsingSemanticsProviderFactory.java |  46 ---------
 .../BooleanPrimitiveValueSemanticsProvider.java    |  44 ---------
 .../facets/value/booleans/BooleanValueFacet.java   |  28 ------
 ...derAbstract.java => BooleanValueSemantics.java} | 105 ++++++++++-----------
 ...perValueFacetUsingSemanticsProviderFactory.java |  46 ---------
 .../BooleanWrapperValueSemanticsProvider.java      |  32 -------
 .../dflt/ProgrammingModelFacetsJava11.java         |   4 -
 .../facets/param/name/ParameterNameFacetTest.java  |   2 +-
 .../value/BooleanValueSemanticsProviderTest.java   |  24 +----
 11 files changed, 60 insertions(+), 295 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 7d4077d..cb03526 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.metamodel.facets.schema.IsisSchemaMetaModelRefiner;
 import org.apache.isis.core.metamodel.facets.schema.IsisSchemaValueTypeProvider;
 import org.apache.isis.core.metamodel.facets.value.bigdecimal.BigDecimalValueSemantics;
 import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemantics;
 import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemanticsProvider;
 import org.apache.isis.core.metamodel.facets.value.localrespath.LocalResourcePathValueSemanticsProvider;
 import org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemanticsProvider;
@@ -91,6 +92,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
         BigDecimalValueSemantics.class,
         UUIDValueSemantics.class,
         URLValueSemantics.class,
+        BooleanValueSemantics.class,
         //TODO convert to non-facets ...
         BlobValueSemanticsProvider.class,
         ClobValueSemanticsProvider.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
index 3002d44..e84c9b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory.java
@@ -18,15 +18,10 @@
  */
 package org.apache.isis.core.metamodel.facets.object.value.annotcfg;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.stream.Stream;
-
 import javax.inject.Inject;
 
 import org.springframework.core.ResolvableType;
 import org.springframework.util.ClassUtils;
-import org.springframework.util.CollectionUtils;
 
 import org.apache.isis.applib.adapters.DefaultsProvider;
 import org.apache.isis.applib.adapters.EncoderDecoder;
@@ -34,31 +29,18 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.collections.Cardinality;
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.commons.internal.collections._Collections;
-import org.apache.isis.commons.internal.reflection._Generics;
-import org.apache.isis.commons.internal.reflection._Reflect;
-import org.apache.isis.commons.internal.reflection._Reflect.InterfacePolicy;
-import org.apache.isis.core.metamodel.commons.ClassExtensions;
-import org.apache.isis.core.metamodel.commons.ClassUtil;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
 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.ImmutableFacetViaValueSemantics;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider;
 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;
 
 /**
@@ -155,14 +137,14 @@ 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);
+        var resolvableType = ResolvableType
+                .forClassWithGenerics(ValueSemanticsProvider.class, ClassUtils.resolvePrimitiveIfNecessary(valueType));
         return getAllValueSemanticsProviders()
                 .stream()
                 .filter(resolvableType::isInstance)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 6bdd6ae..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,46 +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.booleans;
-
-import javax.inject.Inject;
-
-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 BooleanPrimitiveValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Boolean> {
-
-    @Inject
-    public BooleanPrimitiveValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
-        super(mmc);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        if (type != boolean.class) {
-            return;
-        }
-        addValueFacet(new BooleanPrimitiveValueSemanticsProvider(holder));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.java
deleted file mode 100644
index 66f94ac..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanPrimitiveValueSemanticsProvider.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.core.metamodel.facets.value.booleans;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public class BooleanPrimitiveValueSemanticsProvider
-extends BooleanValueSemanticsProviderAbstract
-implements PropertyDefaultFacet {
-
-    private static final Boolean DEFAULT_VALUE = Boolean.FALSE;
-
-    public BooleanPrimitiveValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, boolean.class, DEFAULT_VALUE);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // PropertyDefault
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public ManagedObject getDefault(final ManagedObject inObject) {
-        return createAdapter(boolean.class, Boolean.FALSE);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java
deleted file mode 100644
index 5ad3f3d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueFacet.java
+++ /dev/null
@@ -1,28 +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.booleans;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public interface BooleanValueFacet extends Facet {
-
-    boolean isSet(ManagedObject object);
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
similarity index 53%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemanticsProviderAbstract.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
index 98af649..119a656 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
@@ -18,54 +18,26 @@
  */
 package org.apache.isis.core.metamodel.facets.value.booleans;
 
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.exceptions.UnrecoverableException;
 import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ManagedObjects;
-
-public abstract class BooleanValueSemanticsProviderAbstract
-extends ValueSemanticsProviderAndFacetAbstract<Boolean>
-implements BooleanValueFacet {
-
-    private static Class<? extends Facet> type() {
-        return BooleanValueFacet.class;
-    }
-
-    private static final int MAX_LENGTH = 5;
-    private static final int TYPICAL_LENGTH = MAX_LENGTH;
+import org.apache.isis.commons.internal.base._Strings;
 
-    public BooleanValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Boolean> adaptedClass, final Boolean defaultValue) {
-        super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // Parsing
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected Boolean doParse(final Parser.Context context, final String entry) {
-        final String compareTo = entry.trim().toLowerCase();
-        if ("true".equals(compareTo)) {
-            return Boolean.TRUE;
-        } else if ("false".startsWith(compareTo)) {
-            return Boolean.FALSE;
-        } else {
-            throw new TextEntryParseException(String.format("'%s' cannot be parsed as a boolean", entry));
-        }
-    }
-
-    @Override
-    public String titleString(final Object value) {
-        return value == null ? "" : isSet(value) ? "True" : "False";
-    }
+/**
+ * due to auto-boxing also handles the primitive variant
+ */
+@Component
+public class BooleanValueSemantics
+extends AbstractValueSemanticsProvider<Boolean>
+implements
+    EncoderDecoder<Boolean>,
+    Parser<Boolean> {
 
-    // //////////////////////////////////////////////////////////////////
-    // Encode, Decode
-    // //////////////////////////////////////////////////////////////////
+    // -- ENCODER DECODER
 
     @Override
     public String toEncodedString(final Boolean object) {
@@ -97,22 +69,47 @@ implements BooleanValueFacet {
         throw new UnrecoverableException("Invalid data for logical, expected 1, 4 or 5 bytes, got " + dataLength + ": " + data);
     }
 
-    private boolean isSet(final Object value) {
-        return ((Boolean) value).booleanValue();
+    // -- PARSER
+
+    @Override
+    public String presentationValue(final Context context, final Boolean value) {
+        return value == null ? "" : isSet(value) ? "True" : "False";
     }
 
-    // //////////////////////////////////////////////////////////////////
-    // BooleanValueFacet
-    // //////////////////////////////////////////////////////////////////
+    @Override
+    public String parseableTextRepresentation(final Context context, final Boolean value) {
+        return value != null ? value.toString(): null;
+    }
 
     @Override
-    public boolean isSet(final ManagedObject adapter) {
-        if (ManagedObjects.isNullOrUnspecifiedOrEmpty(adapter)) {
-            return false;
+    public Boolean parseTextRepresentation(final Context context, final String text) {
+        final var input = _Strings.blankToNullOrTrim(text);
+        if(input==null) {
+            return null;
+        }
+        if ("true".equalsIgnoreCase(input)) {
+            return Boolean.TRUE;
+        } else if ("false".equalsIgnoreCase(input)) {
+            return Boolean.FALSE;
+        } else {
+            throw new TextEntryParseException(String.format("'%s' cannot be parsed as a boolean", input));
         }
-        final Object object = adapter.getPojo();
-        final Boolean objectAsBoolean = (Boolean) object;
-        return objectAsBoolean.booleanValue();
+    }
+
+    @Override
+    public int typicalLength() {
+        return maxLength();
+    }
+
+    @Override
+    public int maxLength() {
+        return 6;
+    }
+
+    // -- HELPER
+
+    private boolean isSet(final Boolean value) {
+        return value.booleanValue();
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 62bf86b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,46 +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.booleans;
-
-import javax.inject.Inject;
-
-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 BooleanWrapperValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Boolean> {
-
-    @Inject
-    public BooleanWrapperValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
-        super(mmc);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        if (type != Boolean.class) {
-            return;
-        }
-        addValueFacet(new BooleanWrapperValueSemanticsProvider(holder));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java
deleted file mode 100644
index 5316fc4..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanWrapperValueSemanticsProvider.java
+++ /dev/null
@@ -1,32 +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.booleans;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class BooleanWrapperValueSemanticsProvider
-extends BooleanValueSemanticsProviderAbstract {
-
-    private static final Boolean DEFAULT_PROVIDER = Boolean.FALSE;
-
-    public BooleanWrapperValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, Boolean.class, DEFAULT_PROVIDER);
-    }
-
-}
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 315b9a9..6da7efd 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
@@ -86,8 +86,6 @@ import org.apache.isis.core.metamodel.facets.properties.validating.dflt.Property
 import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethodFactory;
 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;
-import org.apache.isis.core.metamodel.facets.value.booleans.BooleanWrapperValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.bytes.BytePrimitiveValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.bytes.ByteWrapperValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.chars.CharPrimitiveValueFacetUsingSemanticsProviderFactory;
@@ -273,8 +271,6 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.F1_LAYOUT, new CollectionLayoutFacetFactory(mmc));
 
         // built-in value types for Java language
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BooleanPrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BooleanWrapperValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BytePrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ByteWrapperValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ShortPrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
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 ad6159e..7b2710d 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(102, programmingModel.streamFactories().count());
+        assertEquals(100, programmingModel.streamFactories().count());
     }
 
     @Test //verify we have the javac -parameter flag set when compiling this class
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BooleanValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BooleanValueSemanticsProviderTest.java
index e074e80..5f3b18d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BooleanValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BooleanValueSemanticsProviderTest.java
@@ -25,24 +25,19 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
-import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemanticsProviderAbstract;
-import org.apache.isis.core.metamodel.facets.value.booleans.BooleanWrapperValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemantics;
 
 public class BooleanValueSemanticsProviderTest
 extends ValueSemanticsProviderAbstractTestCase {
 
-    private BooleanValueSemanticsProviderAbstract value;
+    private BooleanValueSemantics value;
 
     private Boolean booleanObj;
-    private FacetHolder facetHolder;
 
     @Before
     public void setUpObjects() throws Exception {
         booleanObj = Boolean.valueOf(true);
-        facetHolder = FacetHolderAbstract.forTesting(metaModelContext);
-        setValue(value = new BooleanWrapperValueSemanticsProvider(facetHolder));
+        setSemanitcs(value = new BooleanValueSemantics());
     }
 
     @Test
@@ -85,7 +80,7 @@ extends ValueSemanticsProviderAbstractTestCase {
 
     @Test
     public void testTitleWhenNotSet() throws Exception {
-        assertEquals("", value.titleString(null));
+        assertEquals("", value.presentationValue(null, null));
     }
 
     @Test
@@ -99,15 +94,4 @@ extends ValueSemanticsProviderAbstractTestCase {
         assertEquals(Boolean.valueOf(true), parsed);
     }
 
-    @Test
-    public void testIsSet() {
-        allowMockAdapterToReturn(Boolean.valueOf(true));
-        assertEquals(true, value.isSet(mockAdapter));
-    }
-
-    @Test
-    public void testIsNotSet() {
-        allowMockAdapterToReturn(Boolean.valueOf(false));
-        assertEquals(false, value.isSet(mockAdapter));
-    }
 }