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 11:12:39 UTC
[isis] branch master updated: ISIS-2871: Spring managed value
semantics for BigInteger
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 f6cb730 ISIS-2871: Spring managed value semantics for BigInteger
f6cb730 is described below
commit f6cb730a4bd6b4adc8dcd089fc5c5eed40f99a7a
Author: andi-huber <ah...@apache.org>
AuthorDate: Sat Sep 18 13:12:28 2021 +0200
ISIS-2871: Spring managed value semantics for BigInteger
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 2 +
.../value/bigdecimal/BigDecimalValueSemantics.java | 3 -
.../value/biginteger/BigIntegerValueFacet.java | 25 -----
...gerValueFacetUsingSemanticsProviderFactory.java | 47 ----------
.../value/biginteger/BigIntegerValueSemantics.java | 91 +++++++++++++++++++
.../BigIntegerValueSemanticsProvider.java | 101 ---------------------
.../dflt/ProgrammingModelFacetsJava11.java | 2 -
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
.../value/BigIntValueSemanticsProviderTest.java | 32 ++-----
9 files changed, 104 insertions(+), 201 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 69f75e4..4413849 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
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeMalfo
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.biginteger.BigIntegerValueSemantics;
import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueSemantics;
import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemantics;
import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
@@ -93,6 +94,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
// Value Semantics (built-in defaults)
BooleanValueSemantics.class,
BigDecimalValueSemantics.class,
+ BigIntegerValueSemantics.class,
StringValueSemantics.class,
PasswordValueSemantics.class,
BufferedImageValueSemantics.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemantics.java
index 9bf1be3..4250183 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemantics.java
@@ -43,9 +43,6 @@ implements
Parser<BigDecimal>,
Renderer<BigDecimal> {
- public static final int DEFAULT_LENGTH = 18;
- public static final int DEFAULT_SCALE = 2;
-
@Override
public BigDecimal getDefaultValue() {
return BigDecimal.ZERO;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacet.java
deleted file mode 100644
index e4d4ce3..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacet.java
+++ /dev/null
@@ -1,25 +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.biginteger;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public interface BigIntegerValueFacet extends Facet {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index efeef09..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueFacetUsingSemanticsProviderFactory.java
+++ /dev/null
@@ -1,47 +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.biginteger;
-
-import java.math.BigInteger;
-
-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 BigIntegerValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<BigInteger> {
-
- @Inject
- public BigIntegerValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
- if (type != BigInteger.class) {
- return;
- }
- addValueFacet(new BigIntegerValueSemanticsProvider(holder));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemantics.java
new file mode 100644
index 0000000..13cfacb
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemantics.java
@@ -0,0 +1,91 @@
+/*
+ * 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.biginteger;
+
+import java.math.BigInteger;
+
+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;
+
+public class BigIntegerValueSemantics
+extends AbstractValueSemanticsProvider<BigInteger>
+implements
+ DefaultsProvider<BigInteger>,
+ EncoderDecoder<BigInteger>,
+ Parser<BigInteger>,
+ Renderer<BigInteger> {
+
+ @Override
+ public BigInteger getDefaultValue() {
+ return BigInteger.ZERO;
+ }
+
+ // -- ENCODER DECODER
+
+ @Override
+ public String toEncodedString(final BigInteger bigInt) {
+ return bigInt.toString();
+ }
+
+ @Override
+ public BigInteger fromEncodedString(final String data) {
+ return new BigInteger(data);
+ }
+
+ // -- RENDERER
+
+ @Override
+ public String presentationValue(final Context context, final BigInteger value) {
+ return render(value, getNumberFormat(context)::format);
+ }
+
+ // -- PARSER
+
+ @Override
+ public String parseableTextRepresentation(final Context context, final BigInteger value) {
+ return value==null
+ ? null
+ : getNumberFormat(context)
+ .format(value);
+ }
+
+ @Override
+ public BigInteger parseTextRepresentation(final Context context, final String text) {
+ final var input = _Strings.blankToNullOrTrim(text);
+ if(input==null) {
+ return null;
+ }
+ try {
+ return new BigInteger(input);
+ } catch (final NumberFormatException e) {
+ throw new TextEntryParseException("Not an integer " + input, e);
+ }
+ }
+
+ @Override
+ public int typicalLength() {
+ return 10;
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
deleted file mode 100644
index 13479a8..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
+++ /dev/null
@@ -1,101 +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.biginteger;
-
-import java.math.BigInteger;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-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;
-
-public class BigIntegerValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<BigInteger>
-implements BigIntegerValueFacet {
-
- private static final int TYPICAL_LENGTH = 10;
-
- private static Class<? extends Facet> type() {
- return BigIntegerValueFacet.class;
- }
-
- private static final BigInteger DEFAULT_VALUE = BigInteger.valueOf(0);
-
- private final NumberFormat format;
-
- public BigIntegerValueSemanticsProvider(final FacetHolder holder) {
-
- super(type(), holder, BigInteger.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
- final String formatRequired = getConfiguration().getValueTypes().getJavaMath().getBigInteger().getFormat();
-
- NumberFormat result;
- if (formatRequired != null) {
- result = new DecimalFormat(formatRequired);
- } else {
- final Locale inLocale = getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
- result = NumberFormat.getNumberInstance(inLocale);
- }
- format = result;
- }
-
-
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- protected BigInteger doParse(final ValueSemanticsProvider.Context context, final String entry) {
- try {
- return new BigInteger(entry);
- } catch (final NumberFormatException e) {
- throw new TextEntryParseException("Not an integer " + entry, e);
- }
- }
-
- @Override
- public String asTitleString(final BigInteger object) {
- return titleString(format, object);
- }
-
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public String toEncodedString(final BigInteger bigInt) {
- return bigInt.toString();
- }
-
- @Override
- public BigInteger fromEncodedString(final String data) {
- return new BigInteger(data);
- }
-
- @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/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 5f3e75d..9ea9680 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,7 +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.biginteger.BigIntegerValueFacetUsingSemanticsProviderFactory;
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;
@@ -276,7 +275,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new DoubleWrapperValueFacetUsingSemanticsProviderFactory(mmc));
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 JavaSqlDateValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory(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 d7b618f..3604cb1 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(92, programmingModel.streamFactories().count());
+ assertEquals(91, 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/BigIntValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
index 544bf3f..3ab7d2a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BigIntValueSemanticsProviderTest.java
@@ -23,20 +23,17 @@ import java.math.BigInteger;
import org.junit.Before;
import org.junit.Test;
+import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
+import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueSemantics;
+
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.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.core.metamodel.facets.value.biginteger.BigIntegerValueSemanticsProvider;
-
public class BigIntValueSemanticsProviderTest
extends ValueSemanticsProviderAbstractTestCase {
+ private BigIntegerValueSemantics value;
private BigInteger bigInt;
- private FacetHolder holder;
@Override
@Before
@@ -44,22 +41,19 @@ extends ValueSemanticsProviderAbstractTestCase {
super.setUp();
bigInt = new BigInteger("132199");
allowMockAdapterToReturn(bigInt);
-
- holder = FacetHolderAbstract.forTesting(metaModelContext);
-
- setValue(new BigIntegerValueSemanticsProvider(holder));
+ setSemanitcs(value = new BigIntegerValueSemantics());
}
@Test
public void testParseValidString() throws Exception {
- final Object newValue = getValue().parseTextRepresentation(null, "2142342334");
+ final Object newValue = value.parseTextRepresentation(null, "2142342334");
assertEquals(new BigInteger("2142342334"), newValue);
}
@Test
public void testParseInvalidString() throws Exception {
try {
- getValue().parseTextRepresentation(null, "214xxx2342334");
+ value.parseTextRepresentation(null, "214xxx2342334");
fail();
} catch (final TextEntryParseException expected) {
}
@@ -67,24 +61,18 @@ extends ValueSemanticsProviderAbstractTestCase {
@Test
public void testTitle() throws Exception {
- assertEquals("132,199", getValue().presentationValue(null, bigInt));
+ assertEquals("132,199", value.presentationValue(null, bigInt));
}
@Test
public void testEncode() throws Exception {
- assertEquals("132199", getValue().toEncodedString(bigInt));
+ assertEquals("132199", value.toEncodedString(bigInt));
}
@Test
public void testDecode() throws Exception {
- final Object newValue = getValue().fromEncodedString("432289991");
+ final Object newValue = value.fromEncodedString("432289991");
assertEquals(new BigInteger("432289991"), newValue);
}
- // -- HELPER
-
- private ValueSemanticsProviderAndFacetAbstract<BigInteger> getValue() {
- return super.getValue(BigInteger.class);
- }
-
}