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 11:31:43 UTC
[isis] branch master updated: ISIS-2871: Spring managed value
semantics for String
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 11bbce2 ISIS-2871: Spring managed value semantics for String
11bbce2 is described below
commit 11bbce22ac4a3cde0a1f8716d06b7bc52484028f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 13:31:34 2021 +0200
ISIS-2871: Spring managed value semantics for String
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 2 +
.../facets/value/string/StringValueFacet.java | 25 ------
...ingValueFacetUsingSemanticsProviderFactory.java | 46 -----------
.../facets/value/string/StringValueSemantics.java | 69 +++++++++++++++++
.../value/string/StringValueSemanticsProvider.java | 90 ----------------------
.../dflt/ProgrammingModelFacetsJava11.java | 2 -
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
.../value/StringValueSemanticsProviderTest.java | 61 +++++++--------
.../ValueSemanticsProviderAbstractTestCase.java | 15 +++-
.../ui/components/text/TextFieldFactory.java | 20 +++--
.../ui/components/blob/BlobFieldFactory.java | 2 +-
.../ui/components/clob/ClobFieldFactory.java | 2 +-
.../ui/components/text/TextFieldFactory.java | 3 +-
.../model/components/UiComponentFactory.java | 2 +-
.../viewer/common/model/feature/ScalarUiModel.java | 5 +-
15 files changed, 128 insertions(+), 218 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 9f58ce4..b4420db 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
@@ -34,6 +34,7 @@ import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
import org.apache.isis.core.metamodel.facets.value.localrespath.LocalResourcePathValueSemantics;
import org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemantics;
import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemantics;
+import org.apache.isis.core.metamodel.facets.value.string.StringValueSemantics;
import org.apache.isis.core.metamodel.facets.value.treenode.TreeNodeValueSemantics;
import org.apache.isis.core.metamodel.facets.value.url.URLValueSemantics;
import org.apache.isis.core.metamodel.facets.value.uuid.UUIDValueSemantics;
@@ -91,6 +92,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
// Value Semantics (built-in defaults)
BooleanValueSemantics.class,
BigDecimalValueSemantics.class,
+ StringValueSemantics.class,
PasswordValueSemantics.class,
BlobValueSemantics.class,
ClobValueSemantics.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacet.java
deleted file mode 100644
index 4ef0d40..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacet.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.string;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public interface StringValueFacet extends Facet {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 18a927e..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueFacetUsingSemanticsProviderFactory.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.string;
-
-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 StringValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<String> {
-
- @Inject
- public StringValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
-
- if (type != String.class) {
- return;
- }
- addValueFacet(new StringValueSemanticsProvider(holder));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemantics.java
new file mode 100644
index 0000000..30a5237
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemantics.java
@@ -0,0 +1,69 @@
+/*
+ * 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.string;
+
+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.adapters.Renderer;
+
+public class StringValueSemantics
+extends AbstractValueSemanticsProvider<String>
+implements
+ EncoderDecoder<String>,
+ Parser<String>,
+ Renderer<String> {
+
+ // -- ENCODER DECODER
+
+ @Override
+ public String toEncodedString(final String text) {
+ return text;
+ }
+
+ @Override
+ public String fromEncodedString(final String data) {
+ return data;
+ }
+
+ // -- RENDERER
+
+ @Override
+ public String presentationValue(final Context context, final String value) {
+ return value == null ? "" : value;
+ }
+
+ // -- PARSER
+
+ @Override
+ public String parseableTextRepresentation(final Context context, final String value) {
+ return value;
+ }
+
+ @Override
+ public String parseTextRepresentation(final Context context, final String text) {
+ return text;
+ }
+
+ @Override
+ public int typicalLength() {
+ return 25;
+ }
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java
deleted file mode 100644
index 8ce7540..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java
+++ /dev/null
@@ -1,90 +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.string;
-
-import org.apache.isis.applib.adapters.ValueSemanticsProvider;
-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 StringValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<String>
-implements StringValueFacet {
-
- private static final Class<? extends Facet> type() {
- return StringValueFacet.class;
- }
-
- public static final int TYPICAL_LENGTH = 25;
- private static final String DEFAULT_VALUE = null; // no default
-
- public StringValueSemanticsProvider(final FacetHolder holder) {
- super(type(), holder, String.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
- }
-
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- protected String doParse(final ValueSemanticsProvider.Context context, final String entry) {
- if (entry.trim().equals("")) {
- return null;
- } else {
- return entry;
- }
- }
-
- @Override
- public String titleString(final Object object) {
- final String string = (String) (object == null ? "" : object);
- return string;
- }
-
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public String toEncodedString(final String text) {
- if (text.equals("NULL") || isEscaped(text)) {
- return escapeText(text);
- } else {
- return text;
- }
- }
-
- @Override
- public String fromEncodedString(final String data) {
- if (isEscaped(data)) {
- return data.substring(1);
- } else {
- return data;
- }
- }
-
- private boolean isEscaped(final String text) {
- return text.startsWith("/");
- }
-
- private String escapeText(final String text) {
- return "/" + text;
- }
-
-}
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 ffb93ed..5530f57 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
@@ -105,7 +105,6 @@ import org.apache.isis.core.metamodel.facets.value.longs.LongPrimitiveValueFacet
import org.apache.isis.core.metamodel.facets.value.longs.LongWrapperValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.shortint.ShortPrimitiveValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.shortint.ShortWrapperValueFacetUsingSemanticsProviderFactory;
-import org.apache.isis.core.metamodel.facets.value.string.StringValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.temporal.localdate.LocalDateValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.temporal.localdatetime.LocalDateTimeValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.temporal.localtime.LocalTimeValueFacetUsingSemanticsProviderFactory;
@@ -286,7 +285,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaUtilDateValueFacetUsingSemanticsProviderFactory(mmc));
- addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new StringValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaAwtImageValueFacetUsingSemanticsProviderFactory(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 1b4fbe6..30857f7 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(96, programmingModel.streamFactories().count());
+ assertEquals(95, 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/StringValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/StringValueSemanticsProviderTest.java
index f6453c3..4ef5034 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/StringValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/StringValueSemanticsProviderTest.java
@@ -23,24 +23,19 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
-import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
-import org.apache.isis.core.metamodel.facets.value.string.StringValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.string.StringValueSemantics;
-public class StringValueSemanticsProviderTest extends ValueSemanticsProviderAbstractTestCase {
+public class StringValueSemanticsProviderTest
+extends ValueSemanticsProviderAbstractTestCase {
- private StringValueSemanticsProvider value;
+ private StringValueSemantics value;
private String string;
- private FacetHolder holder;
-
@Before
public void setUpObjects() throws Exception {
string = "text entry";
- holder = FacetHolderAbstract.forTesting(MetaModelContext_forTesting.buildDefault());
- setValue(value = new StringValueSemanticsProvider(holder));
+ setSemanitcs(value = new StringValueSemantics());
}
@Test
@@ -54,27 +49,27 @@ public class StringValueSemanticsProviderTest extends ValueSemanticsProviderAbst
assertEquals("tRUe", parsed.toString());
}
- @Test
- public void testEncodeNormalString() throws Exception {
- allowMockAdapterToReturn("/slash");
- assertEquals("//slash", getEncodeableFacet().toEncodedString(mockAdapter));
- }
-
- @Test
- public void testEncodeNULLString() throws Exception {
- allowMockAdapterToReturn("NULL");
- assertEquals("/NULL", getEncodeableFacet().toEncodedString(mockAdapter));
- }
-
- @Test
- public void testRestore() throws Exception {
- final Object parsed = value.fromEncodedString("//slash");
- assertEquals("/slash", parsed.toString());
- }
-
- @Test
- public void testRestoreNULLString() throws Exception {
- final Object parsed = value.fromEncodedString("/NULL");
- assertEquals("NULL", parsed.toString());
- }
+// @Test
+// public void testEncodeNormalString() throws Exception {
+// allowMockAdapterToReturn("/slash");
+// assertEquals("//slash", getEncodeableFacet().toEncodedString(mockAdapter));
+// }
+//
+// @Test
+// public void testEncodeNULLString() throws Exception {
+// allowMockAdapterToReturn("NULL");
+// assertEquals("/NULL", getEncodeableFacet().toEncodedString(mockAdapter));
+// }
+//
+// @Test
+// public void testRestore() throws Exception {
+// final Object parsed = value.fromEncodedString("//slash");
+// assertEquals("/slash", parsed.toString());
+// }
+//
+// @Test
+// public void testRestoreNULLString() throws Exception {
+// final Object parsed = value.fromEncodedString("/NULL");
+// assertEquals("NULL", parsed.toString());
+// }
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index cda6e78..2e281b8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -36,7 +36,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
-import org.apache.isis.applib.adapters.Renderer;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.services.iactn.InteractionProvider;
import org.apache.isis.commons.internal.base._Casts;
@@ -50,6 +49,7 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.Encodable
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
+import org.apache.isis.core.metamodel.facets.value.string.StringValueSemantics;
import org.apache.isis.core.metamodel.spec.ManagedObject;
public abstract class ValueSemanticsProviderAbstractTestCase {
@@ -158,7 +158,14 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
Assume.assumeThat(valueSemanticsProvider.getParser(), is(not(nullValue())));
final Object newValue = valueSemanticsProvider.getParser().parseTextRepresentation(null, "");
- assertNull(newValue);
+
+ if(valueSemanticsProvider instanceof StringValueSemantics) {
+ // string parsing is an unary identity
+ assertEquals("", newValue);
+ } else {
+ assertNull(newValue);
+ }
+
}
@Test
@@ -183,6 +190,10 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
assertEquals("",
((ValueSemanticsProviderAndFacetAbstract<?>)valueSemanticsProvider)
.presentationValue(null, null));
+ } else if(valueSemanticsProvider instanceof StringValueSemantics) {
+ // string representation has null-to-empty semantics
+ assertEquals("",
+ valueSemanticsProvider.getRenderer().presentationValue(null, null));
} else {
assertEquals(AbstractValueSemanticsProvider.NULL_REPRESENTATION,
valueSemanticsProvider.getRenderer().presentationValue(null, null));
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/text/TextFieldFactory.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/text/TextFieldFactory.java
index edc1422..86d3ac4 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/text/TextFieldFactory.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/text/TextFieldFactory.java
@@ -22,10 +22,7 @@ import java.util.Optional;
import javax.inject.Inject;
-import org.springframework.core.annotation.Order;
-
import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.core.metamodel.facets.value.string.StringValueFacet;
import org.apache.isis.core.metamodel.interactions.managed.ManagedParameter;
import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -34,24 +31,25 @@ import org.apache.isis.incubator.viewer.javafx.ui.components.UiComponentHandlerF
import org.apache.isis.viewer.common.model.binding.BindingConverter;
import org.apache.isis.viewer.common.model.components.UiComponentFactory.ComponentRequest;
-import javafx.scene.Node;
-import javafx.scene.control.TextField;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.val;
+import javafx.scene.Node;
+import javafx.scene.control.TextField;
+
@org.springframework.stereotype.Component
@javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
@RequiredArgsConstructor(onConstructor_ = {@Inject})
public class TextFieldFactory implements UiComponentHandlerFx {
@Override
- public boolean isHandling(ComponentRequest request) {
- return request.hasFeatureTypeFacet(StringValueFacet.class);
+ public boolean isHandling(final ComponentRequest request) {
+ return request.hasFacetForValueType(String.class);
}
@Override
- public Node handle(ComponentRequest request) {
+ public Node handle(final ComponentRequest request) {
val uiComponent = new TextField();
val valueSpec = request.getFeatureTypeSpec();
@@ -94,17 +92,17 @@ public class TextFieldFactory implements UiComponentHandlerFx {
private final ObjectSpecification valueSpecification;
@Override
- public String toString(String value) {
+ public String toString(final String value) {
return value; // identity
}
@Override
- public String fromString(String stringifiedValue) {
+ public String fromString(final String stringifiedValue) {
return stringifiedValue; // identity
}
@Override
- public Optional<String> tryParse(String stringifiedValue) {
+ public Optional<String> tryParse(final String stringifiedValue) {
return Optional.empty(); // always ok
}
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/blob/BlobFieldFactory.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/blob/BlobFieldFactory.java
index d6a9cb3..f679a60 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/blob/BlobFieldFactory.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/blob/BlobFieldFactory.java
@@ -33,7 +33,7 @@ public class BlobFieldFactory implements UiComponentHandlerVaa {
@Override
public boolean isHandling(final ComponentRequest request) {
- return request.hasValueFacet(Blob.class);
+ return request.hasFacetForValueType(Blob.class);
}
@Override
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/clob/ClobFieldFactory.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/clob/ClobFieldFactory.java
index 4913a86..e597478 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/clob/ClobFieldFactory.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/clob/ClobFieldFactory.java
@@ -33,7 +33,7 @@ public class ClobFieldFactory implements UiComponentHandlerVaa {
@Override
public boolean isHandling(final ComponentRequest request) {
- return request.hasValueFacet(Clob.class);
+ return request.hasFacetForValueType(Clob.class);
}
@Override
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/text/TextFieldFactory.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/text/TextFieldFactory.java
index b3a415d..525344a 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/text/TextFieldFactory.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/text/TextFieldFactory.java
@@ -22,7 +22,6 @@ import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.textfield.TextField;
import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.core.metamodel.facets.value.string.StringValueFacet;
import org.apache.isis.incubator.viewer.vaadin.ui.binding.BindingsVaa;
import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentHandlerVaa;
import org.apache.isis.viewer.common.model.components.UiComponentFactory.ComponentRequest;
@@ -35,7 +34,7 @@ public class TextFieldFactory implements UiComponentHandlerVaa {
@Override
public boolean isHandling(final ComponentRequest request) {
- return request.hasFeatureTypeFacet(StringValueFacet.class);
+ return request.hasFacetForValueType(String.class);
}
@Override
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/components/UiComponentFactory.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/components/UiComponentFactory.java
index e5fbcd2..43caab3 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/components/UiComponentFactory.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/components/UiComponentFactory.java
@@ -115,7 +115,7 @@ public interface UiComponentFactory<B, C> {
: false;
}
- public boolean hasValueFacet(final @Nullable Class<?> valueType) {
+ public boolean hasFacetForValueType(final @Nullable Class<?> valueType) {
return valueType!=null
? getFeatureTypeSpec().lookupFacet(ValueFacet.class)
.map(ValueFacet::getValueType)
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
index 012ad9c..b25c502 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFa
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
-import org.apache.isis.core.metamodel.facets.value.string.StringValueSemanticsProvider;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
@@ -73,9 +72,9 @@ public interface ScalarUiModel {
.orElse(null);
}
- default int getTypicalLength() {
+ default Integer getTypicalLength() {
final TypicalLengthFacet facet = getMetaModel().getFacet(TypicalLengthFacet.class);
- return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH;
+ return facet != null? facet.value() : null;
}
default String getFileAccept() {