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/18 12:30:33 UTC

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

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 aa6c53d  ISIS-2871: Spring managed value semantics for Byte/byte
aa6c53d is described below

commit aa6c53d870f882efcf0e96cf26fc4c67746ce2ea
Author: andi-huber <ah...@apache.org>
AuthorDate: Sat Sep 18 14:30:23 2021 +0200

    ISIS-2871: Spring managed value semantics for Byte/byte
---
 .../core/metamodel/IsisModuleCoreMetamodel.java    |   4 +-
 ...iveValueFacetUsingSemanticsProviderFactory.java |  46 ---------
 .../bytes/BytePrimitiveValueSemanticsProvider.java |  42 --------
 .../facets/value/bytes/ByteValueFacet.java         |  29 ------
 .../bytes/ByteValueSemanticsProviderAbstract.java  | 110 ---------------------
 ...perValueFacetUsingSemanticsProviderFactory.java |  46 ---------
 .../bytes/ByteWrapperValueSemanticsProvider.java   |  30 ------
 .../dflt/ProgrammingModelFacetsJava11.java         |   4 -
 .../valuesemantics/ByteValueSemantics.java         | 103 +++++++++++++++++++
 .../facets/param/name/ParameterNameFacetTest.java  |   2 +-
 .../value/ByteValueSemanticsProviderTest.java      |  16 +--
 11 files changed, 112 insertions(+), 320 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 116771b..dca97b0 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
@@ -55,13 +55,14 @@ import org.apache.isis.core.metamodel.valuesemantics.BigIntegerValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.BlobValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.BooleanValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.BufferedImageValueSemantics;
+import org.apache.isis.core.metamodel.valuesemantics.ByteValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.ClobValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.LocalResourcePathValueSemantics;
+import org.apache.isis.core.metamodel.valuesemantics.MarkupValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.PasswordValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.StringValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.TreeNodeValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.URLValueSemantics;
-import org.apache.isis.core.metamodel.valuesemantics.MarkupValueSemantics;
 import org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics;
 import org.apache.isis.core.metamodel.valuetypes.ValueTypeProviderDefault;
 import org.apache.isis.core.metamodel.valuetypes.ValueTypeProviderForBuiltin;
@@ -93,6 +94,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
 
         // Value Semantics (built-in defaults)
         BooleanValueSemantics.class,
+        ByteValueSemantics.class,
         BigDecimalValueSemantics.class,
         BigIntegerValueSemantics.class,
         StringValueSemantics.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index de44ad6..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueFacetUsingSemanticsProviderFactory.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.bytes;
-
-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 BytePrimitiveValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Byte> {
-
-    @Inject
-    public BytePrimitiveValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
-        super(mmc);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        if (type != byte.class) {
-            return;
-        }
-        addValueFacet(new BytePrimitiveValueSemanticsProvider(holder));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueSemanticsProvider.java
deleted file mode 100644
index 80139c2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/BytePrimitiveValueSemanticsProvider.java
+++ /dev/null
@@ -1,42 +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.bytes;
-
-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 BytePrimitiveValueSemanticsProvider
-extends ByteValueSemanticsProviderAbstract
-implements PropertyDefaultFacet {
-
-    public BytePrimitiveValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, byte.class);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // PropertyDefaultFacet
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public ManagedObject getDefault(final ManagedObject adapter) {
-        return createAdapter(byte.class, Byte.valueOf((byte) 0));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueFacet.java
deleted file mode 100644
index a40a917..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueFacet.java
+++ /dev/null
@@ -1,29 +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.bytes;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public interface ByteValueFacet extends Facet {
-
-    Byte byteValue(ManagedObject object);
-
-    ManagedObject createValue(Byte value);
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
deleted file mode 100644
index 9f0e4b2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,110 +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.bytes;
-
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Locale;
-import java.util.function.BiConsumer;
-
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
-import org.apache.isis.core.metamodel.commons.LocaleUtil;
-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;
-
-public abstract class ByteValueSemanticsProviderAbstract
-extends ValueSemanticsProviderAndFacetAbstract<Byte>
-implements ByteValueFacet {
-
-    private static Class<? extends Facet> type() {
-        return ByteValueFacet.class;
-    }
-
-    private static final Byte DEFAULT_VALUE = Byte.valueOf((byte) 0);
-    private static final int MAX_LENGTH = 4; // allowing for -ve sign
-    private static final int TYPICAL_LENGTH = MAX_LENGTH;
-
-    private final NumberFormat format;
-
-    public ByteValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Byte> adaptedClass) {
-        super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getByte().getFormat();
-
-        format = formatRequired != null
-                ? new DecimalFormat(formatRequired)
-                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // Parser
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected Byte doParse(final ValueSemanticsProvider.Context context, final String entry) {
-        try {
-            return Byte.valueOf(format.parse(entry).byteValue());
-        } catch (final ParseException e) {
-            throw new TextEntryParseException("Not a number " + entry, e);
-        }
-    }
-
-    @Override
-    public String asTitleString(final Byte value) {
-        return titleString(format, value);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // EncoderDecoder
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public String toEncodedString(final Byte object) {
-        return object.toString();
-    }
-
-    @Override
-    public Byte fromEncodedString(final String data) {
-        return Byte.parseByte(data);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // ByteValueFacet
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public Byte byteValue(final ManagedObject object) {
-        return (Byte) object.getPojo();
-    }
-
-    @Override
-    public ManagedObject createValue(final Byte value) {
-        return getObjectManager().adapt(value);
-    }
-
-    @Override
-    public void visitAttributes(final BiConsumer<String, Object> visitor) {
-        super.visitAttributes(visitor);
-        visitor.accept("format", format);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 5505d99..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueFacetUsingSemanticsProviderFactory.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.bytes;
-
-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 ByteWrapperValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Byte> {
-
-    @Inject
-    public ByteWrapperValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
-        super(mmc);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContext) {
-        final Class<?> type = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        if (type != Byte.class) {
-            return;
-        }
-        addValueFacet(new ByteWrapperValueSemanticsProvider(holder));
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueSemanticsProvider.java
deleted file mode 100644
index 5502d4f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteWrapperValueSemanticsProvider.java
+++ /dev/null
@@ -1,30 +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.bytes;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class ByteWrapperValueSemanticsProvider
-extends ByteValueSemanticsProviderAbstract {
-
-    public ByteWrapperValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, Byte.class);
-    }
-
-}
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 9ea9680..a0af511 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
@@ -83,8 +83,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.bytes.BytePrimitiveValueFacetUsingSemanticsProviderFactory;
-import org.apache.isis.core.metamodel.facets.value.bytes.ByteWrapperValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.chars.CharPrimitiveValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.chars.CharWrapperValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.value.datejodalocal.JodaLocalDateValueFacetUsingSemanticsProviderFactory;
@@ -261,8 +259,6 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.F1_LAYOUT, new CollectionLayoutFacetFactory(mmc));
 
         // built-in value types for Java language
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BytePrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
-        addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ByteWrapperValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ShortPrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ShortWrapperValueFacetUsingSemanticsProviderFactory(mmc));
         addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new IntPrimitiveValueFacetUsingSemanticsProviderFactory(mmc));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
new file mode 100644
index 0000000..ac21468
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
@@ -0,0 +1,103 @@
+/*
+ *  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.valuesemantics;
+
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+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.Renderer;
+import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
+import org.apache.isis.commons.internal.base._Strings;
+
+/**
+ * due to auto-boxing also handles the primitive variant
+ */
+@Component
+@Named("isis.val.ByteValueSemantics")
+public class ByteValueSemantics
+extends AbstractValueSemanticsProvider<Byte>
+implements
+    DefaultsProvider<Byte>,
+    EncoderDecoder<Byte>,
+    Parser<Byte>,
+    Renderer<Byte> {
+
+    @Override
+    public Byte getDefaultValue() {
+        return Byte.valueOf((byte) 0);
+    }
+
+    // -- ENCODER DECODER
+
+    @Override
+    public String toEncodedString(final Byte object) {
+        return object.toString();
+    }
+
+    @Override
+    public Byte fromEncodedString(final String data) {
+        return Byte.parseByte(data);
+    }
+
+    // -- RENDERER
+
+    @Override
+    public String presentationValue(final Context context, final Byte value) {
+        return render(value, getNumberFormat(context)::format);
+    }
+
+    // -- PARSER
+
+    @Override
+    public String parseableTextRepresentation(final Context context, final Byte value) {
+        return value==null
+                ? null
+                : getNumberFormat(context)
+                    .format(value);
+    }
+
+    @Override
+    public Byte parseTextRepresentation(final Context context, final String text) {
+        final var input = _Strings.blankToNullOrTrim(text);
+        if(input==null) {
+            return null;
+        }
+        try {
+            return Byte.valueOf(input);
+        } catch (final NumberFormatException e) {
+            throw new TextEntryParseException("Not a byte number " + input, e);
+        }
+    }
+
+    @Override
+    public int typicalLength() {
+        return maxLength();
+    }
+
+    @Override
+    public int maxLength() {
+        return 4;
+    }
+
+}
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 3604cb1..b61f385 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(91, programmingModel.streamFactories().count());
+        assertEquals(89, 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/ByteValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
index cd3b1f9..0c3c257 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ByteValueSemanticsProviderTest.java
@@ -21,30 +21,24 @@ package org.apache.isis.core.metamodel.facets.value;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
+import org.apache.isis.core.metamodel.valuesemantics.ByteValueSemantics;
+
 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.bytes.ByteValueSemanticsProviderAbstract;
-import org.apache.isis.core.metamodel.facets.value.bytes.ByteWrapperValueSemanticsProvider;
-
 public class ByteValueSemanticsProviderTest
 extends ValueSemanticsProviderAbstractTestCase {
 
-    private ByteValueSemanticsProviderAbstract value;
+    private ByteValueSemantics value;
 
     private Byte byteObj;
-    private FacetHolder holder;
 
     @Before
     public void setUpObjects() throws Exception {
         byteObj = Byte.valueOf((byte) 102);
         allowMockAdapterToReturn(byteObj);
-        holder = FacetHolderAbstract.forTesting(metaModelContext);
-
-        setValue(value = new ByteWrapperValueSemanticsProvider(holder));
+        setSemanitcs(value = new ByteValueSemantics());
     }
 
     @Test