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 08:32:00 UTC
[isis] branch master updated: ISIS-2871: factor out rendering from
Parser into Renderer
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 f088327 ISIS-2871: factor out rendering from Parser<T> into Renderer<T>
f088327 is described below
commit f0883279085aee84f57e49458e6f12c56f6e5c56
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 16 10:31:24 2021 +0200
ISIS-2871: factor out rendering from Parser<T> into Renderer<T>
---
.../adapters/AbstractValueSemanticsProvider.java | 37 ++++++------
.../org/apache/isis/applib/adapters/Parser.java | 20 +------
.../org/apache/isis/applib/adapters/Renderer.java | 9 ++-
.../applib/adapters/ValueSemanticsProvider.java | 13 +++++
.../core/metamodel/IsisModuleCoreMetamodel.java | 8 +--
.../choices/enums/EnumValueSemanticsProvider.java | 4 +-
.../parser/ParseableFacetUsingParser.java | 5 +-
...ingParser.java => TitleFacetUsingRenderer.java} | 27 ++++-----
.../metamodel/facets/object/value/ValueFacet.java | 3 +
.../facets/object/value/ValueFacetAbstract.java | 6 ++
.../facets/object/value/ValueFacetSimple.java | 14 ++---
...ionOrAnyMatchingValueSemanticsFacetFactory.java | 6 ++
.../ValueFacetUsingSemanticsProviderFactory.java | 15 +++--
.../ValueSemanticsProviderAndFacetAbstract.java | 18 ++++--
.../chg/v2/ChangesDtoValueSemanticsProvider.java | 4 +-
.../cmd/v2/CommandDtoValueSemanticsProvider.java | 4 +-
.../v2/InteractionDtoValueSemanticsProvider.java | 4 +-
.../ValueSemanticsProviderAbstractTemporal.java | 4 +-
.../value/bigdecimal/BigDecimalValueSemantics.java | 20 ++++---
.../BigIntegerValueSemanticsProvider.java | 4 +-
...lobValueFacetUsingSemanticsProviderFactory.java | 46 ---------------
...anticsProvider.java => BlobValueSemantics.java} | 66 +++++-----------------
.../value/booleans/BooleanValueSemantics.java | 35 +++++++-----
.../bytes/ByteValueSemanticsProviderAbstract.java | 4 +-
.../chars/CharValueSemanticsProviderAbstract.java | 4 +-
.../facets/value/clobs/ClobValueFacet.java | 25 --------
...lobValueFacetUsingSemanticsProviderFactory.java | 46 ---------------
...anticsProvider.java => ClobValueSemantics.java} | 64 +++++----------------
.../JodaLocalDateValueSemanticsProvider.java | 4 +-
.../JodaLocalDateTimeValueSemanticsProvider.java | 4 +-
.../DoubleValueSemanticsProviderAbstract.java | 4 +-
.../FloatValueSemanticsProviderAbstract.java | 4 +-
.../image/ImageValueSemanticsProviderAbstract.java | 3 +-
.../integer/IntValueSemanticsProviderAbstract.java | 4 +-
.../LocalResourcePathValueSemanticsProvider.java | 4 +-
.../longs/LongValueSemanticsProviderAbstract.java | 4 +-
.../facets/value/markup/MarkupValueSemantics.java | 15 +++--
.../password/PasswordValueSemanticsProvider.java | 4 +-
.../ShortValueSemanticsProviderAbstract.java | 4 +-
.../value/string/StringValueSemanticsProvider.java | 4 +-
.../TemporalValueSemanticsProviderAbstract.java | 4 +-
.../treenode/TreeNodeValueSemanticsProvider.java | 3 +-
.../facets/value/url/URLValueSemantics.java | 15 +++--
.../facets/value/uuid/UUIDValueSemantics.java | 15 +++--
.../dflt/ProgrammingModelFacetsJava11.java | 4 --
.../parseable/ParseableFacetUsingParserTest.java | 10 +---
...eFacetAnnotationOrConfigurationFactoryTest.java | 19 ++-----
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
.../value/BlobValueSemanticsProviderTest.java | 11 +---
.../value/BooleanValueSemanticsProviderTest.java | 4 +-
.../value/ClobValueSemanticsProviderTest.java | 10 +---
.../ValueSemanticsProviderAbstractTestCase.java | 4 +-
.../other/embedded/EmbeddedTypeVm-description.adoc | 21 ++++---
.../jdo/ComplexNumberJdoValueSemantics.java | 30 +++++++---
.../jpa/ComplexNumberJpaValueSemantics.java | 28 ++++++---
.../value/CalendarEventSemanticsProvider.java | 25 +++-----
.../ui/components/blob/BlobFieldFactory.java | 3 +-
.../ui/components/clob/ClobFieldFactory.java | 3 +-
.../semantics/AsciiDocValueSemanticsProvider.java | 17 +++---
.../facets/MarkdownValueSemanticsProvider.java | 4 +-
.../model/components/UiComponentFactory.java | 14 ++++-
61 files changed, 342 insertions(+), 477 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
index b64ff21..f55f3a7 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/AbstractValueSemanticsProvider.java
@@ -18,48 +18,55 @@
*/
package org.apache.isis.applib.adapters;
-import java.net.URL;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.Optional;
+import java.util.function.Function;
import org.springframework.lang.Nullable;
-import org.apache.isis.applib.adapters.Parser.Context;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
/**
- * @since 1.x {@index}
+ * @since 2.x {@index}
*/
public abstract class AbstractValueSemanticsProvider<T>
implements ValueSemanticsProvider<T> {
+ public static final String NULL_REPRESENTATION = "[none]";
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Renderer<T> getRenderer() {
+ return this instanceof Renderer ? (Renderer<T>)this : null;
+ }
+
@SuppressWarnings("unchecked")
@Override
public EncoderDecoder<T> getEncoderDecoder() {
- return (EncoderDecoder<T>) (this instanceof EncoderDecoder ? this : null);
+ return this instanceof EncoderDecoder ? (EncoderDecoder<T>)this : null;
}
@SuppressWarnings("unchecked")
@Override
public Parser<T> getParser() {
- return (Parser<T>) (this instanceof Parser ? this : null);
+ return this instanceof Parser ? (Parser<T>)this : null;
}
@SuppressWarnings("unchecked")
@Override
public DefaultsProvider<T> getDefaultsProvider() {
- return (DefaultsProvider<T>) (this instanceof DefaultsProvider ? this : null);
+ return this instanceof DefaultsProvider ? (DefaultsProvider<T>)this : null;
}
/**
* @param context - nullable in support of JUnit testing
* @return {@link Locale} from given context or else system's default
*/
- protected Locale getLocale(final @Nullable Context context) {
+ protected Locale getLocale(final @Nullable ValueSemanticsProvider.Context context) {
return Optional.ofNullable(context)
- .map(Context::getInteractionContext)
+ .map(ValueSemanticsProvider.Context::getInteractionContext)
.map(InteractionContext::getLocale)
.orElseGet(Locale::getDefault);
}
@@ -69,20 +76,12 @@ implements ValueSemanticsProvider<T> {
* @return {@link NumberFormat} the default from from given context's locale
* or else system's default locale
*/
- protected DecimalFormat getNumberFormat(final @Nullable Context context) {
+ protected DecimalFormat getNumberFormat(final @Nullable ValueSemanticsProvider.Context context) {
return (DecimalFormat)NumberFormat.getNumberInstance(getLocale(context));
}
- @Deprecated
- protected final URL doParse(final Context context, final String entry) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Deprecated
- protected final String titleString(final Object object) {
- // TODO Auto-generated method stub
- return null;
+ protected String render(final T value, final Function<T, String> toString) {
+ return value != null ? toString.apply(value) : NULL_REPRESENTATION;
}
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/Parser.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/Parser.java
index 21865e6..cbca4ab 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/Parser.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/Parser.java
@@ -18,11 +18,6 @@
*/
package org.apache.isis.applib.adapters;
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-
-import lombok.Value;
-
/**
* Provides a mechanism for parsing and rendering string representations of
* objects.
@@ -74,17 +69,6 @@ import lombok.Value;
*/
public interface Parser<T> {
- @Value(staticConstructor = "of")
- static class Context {
- Identifier identifier;
- InteractionContext interactionContext;
- }
-
- /**
- * The value in its read-only presentation form, eg. html. (irreversible)
- */
- String presentationValue(Context context, T value);
-
/**
* A title for the object that is valid but which may be easier to edit than
* the title provided by a <code>TitleFacet</code>. (bijective)
@@ -95,12 +79,12 @@ public interface Parser<T> {
* field. So, a date might be rendered via a <code>TitleFacet</code> as
* <tt>May 2, 2007</tt>, but its editable form might be <tt>20070502</tt>.
*/
- String parseableTextRepresentation(Context context, T value);
+ String parseableTextRepresentation(ValueSemanticsProvider.Context context, T value);
/**
* Parses a string to an instance of the object. (bijective)
*/
- T parseTextRepresentation(Context context, String text);
+ T parseTextRepresentation(ValueSemanticsProvider.Context context, String text);
/**
* The typical length of objects that can be parsed.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacet.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
similarity index 77%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacet.java
rename to api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
index 61bbe03..6acf062 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacet.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/Renderer.java
@@ -16,10 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.value.blobs;
+package org.apache.isis.applib.adapters;
-import org.apache.isis.core.metamodel.facetapi.Facet;
+public interface Renderer<T> {
-public interface BlobValueFacet extends Facet {
+ /**
+ * The value in its read-only presentation form, eg. html. (irreversible)
+ */
+ String presentationValue(ValueSemanticsProvider.Context context, T value);
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsProvider.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsProvider.java
index 520800e..a1e3e72 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsProvider.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsProvider.java
@@ -19,7 +19,9 @@
package org.apache.isis.applib.adapters;
+import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Value;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
/**
* Provides a mechanism for providing a set of value semantics.
@@ -42,6 +44,17 @@ import org.apache.isis.applib.annotation.Value;
*/
public interface ValueSemanticsProvider<T> {
+ @lombok.Value(staticConstructor = "of")
+ class Context {
+ Identifier identifier;
+ InteractionContext interactionContext;
+ }
+
+ /**
+ * The {@link Renderer}, if any.
+ */
+ Renderer<T> getRenderer();
+
/**
* The {@link Parser}, if any.
*/
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 c09cbbd..ed661d3 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,9 +28,9 @@ 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.blobs.BlobValueSemanticsProvider;
+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.ClobValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
import org.apache.isis.core.metamodel.facets.value.localrespath.LocalResourcePathValueSemanticsProvider;
import org.apache.isis.core.metamodel.facets.value.markup.MarkupValueSemantics;
import org.apache.isis.core.metamodel.facets.value.password.PasswordValueSemanticsProvider;
@@ -91,12 +91,12 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
// Value Semantics (built-in defaults)
BooleanValueSemantics.class,
BigDecimalValueSemantics.class,
+ BlobValueSemantics.class,
+ ClobValueSemantics.class,
MarkupValueSemantics.class,
URLValueSemantics.class,
UUIDValueSemantics.class,
//TODO convert to non-facets ...
- BlobValueSemanticsProvider.class,
- ClobValueSemanticsProvider.class,
LocalResourcePathValueSemanticsProvider.class,
PasswordValueSemanticsProvider.class,
TreeNodeValueSemanticsProvider.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
index f1c8b18..ca3c2e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/choices/enums/EnumValueSemanticsProvider.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.choices.enums;
import java.lang.reflect.Method;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.applib.services.i18n.TranslatableString;
@@ -88,7 +88,7 @@ implements EnumFacet {
}
@Override
- protected T doParse(final Parser.Context context, final String entry) {
+ protected T doParse(final ValueSemanticsProvider.Context context, final String entry) {
final T[] enumConstants = getAdaptedClass().getEnumConstants();
for (final T enumConstant : enumConstants) {
if (toEncodedString(enumConstant).equals(entry)) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index 21fcad4..8f75265 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -26,6 +26,7 @@ import org.springframework.lang.Nullable;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.adapters.ParsingException;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResultSet;
@@ -145,12 +146,12 @@ implements ParseableFacet {
return ((Parser)parser).parseableTextRepresentation(parserContext(), pojo);
}
- private Parser.Context parserContext() {
+ private ValueSemanticsProvider.Context parserContext() {
val iaProvider = super.getInteractionProvider();
if(iaProvider==null) {
return null; // JUnit context
}
- return Parser.Context.of(
+ return ValueSemanticsProvider.Context.of(
((FacetHolderAbstract)getFacetHolder()).getFeatureIdentifier(),
iaProvider.currentInteractionContext().orElse(null));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingRenderer.java
similarity index 71%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingRenderer.java
index e9e7f98..56cb416 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/parser/TitleFacetUsingRenderer.java
@@ -20,7 +20,8 @@ package org.apache.isis.core.metamodel.facets.object.title.parser;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -32,25 +33,25 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
import lombok.NonNull;
import lombok.val;
-public final class TitleFacetUsingParser
+public final class TitleFacetUsingRenderer
extends FacetAbstract
implements TitleFacet {
- private final @NonNull Parser<?> parser;
+ private final @NonNull Renderer<?> renderer;
- public static TitleFacetUsingParser create(final Parser<?> parser, final FacetHolder holder) {
- return new TitleFacetUsingParser(parser, holder);
+ public static TitleFacetUsingRenderer create(final Renderer<?> parser, final FacetHolder holder) {
+ return new TitleFacetUsingRenderer(parser, holder);
}
- private TitleFacetUsingParser(final Parser<?> parser, final FacetHolder holder) {
+ private TitleFacetUsingRenderer(final Renderer<?> parser, final FacetHolder holder) {
super(TitleFacet.class, holder, Precedence.LOW);
- this.parser = parser;
+ this.renderer = parser;
}
@Override
public boolean semanticEquals(final @NonNull Facet other) {
- return other instanceof TitleFacetUsingParser
- ? this.parser.getClass() == ((TitleFacetUsingParser)other).parser.getClass()
+ return other instanceof TitleFacetUsingRenderer
+ ? this.renderer.getClass() == ((TitleFacetUsingRenderer)other).renderer.getClass()
: false;
}
@@ -63,21 +64,21 @@ implements TitleFacet {
if (object == null) {
return null;
}
- return parser.presentationValue(parserContext(), _Casts.uncheckedCast(object));
+ return renderer.presentationValue(valueSemanticsContext(), _Casts.uncheckedCast(object));
}
@Override
public void visitAttributes(final BiConsumer<String, Object> visitor) {
super.visitAttributes(visitor);
- visitor.accept("parser", parser.toString());
+ visitor.accept("parser", renderer.toString());
}
- private Parser.Context parserContext() {
+ private ValueSemanticsProvider.Context valueSemanticsContext() {
val iaProvider = super.getInteractionProvider();
if(iaProvider==null) {
return null; // JUnit context
}
- return Parser.Context.of(
+ return ValueSemanticsProvider.Context.of(
((FacetHolderAbstract)getFacetHolder()).getFeatureIdentifier(),
iaProvider.currentInteractionContext().orElse(null));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacet.java
index c855a28..b4cf352 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacet.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.object.value;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.core.metamodel.facetapi.Facet;
/**
@@ -31,4 +32,6 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
*/
public interface ValueFacet extends Facet {
+ LogicalType getValueType();
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index caba1fd..85c9118 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.value;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -57,4 +58,9 @@ implements ValueFacet {
return !this.semanticsProviders.isEmpty();
}
+ @Override
+ public final LogicalType getValueType() {
+ return getFacetHolder().getFeatureIdentifier().getLogicalType();
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
index 6186b98..39bfcdc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetSimple.java
@@ -18,18 +18,14 @@
*/
package org.apache.isis.core.metamodel.facets.object.value;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
+import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ValueFacetSimple extends FacetAbstract implements ValueFacet {
+public class ValueFacetSimple
+extends ValueFacetAbstract {
- private static final Class<? extends Facet> type() {
- return ValueFacet.class;
- }
-
- public ValueFacetSimple(FacetHolder holder) {
- super(type(), holder);
+ public ValueFacetSimple(final FacetHolder holder) {
+ super(Can.empty(), holder, Precedence.LOW);
}
}
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 e84c9b6..6b39527 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
@@ -26,6 +26,7 @@ import org.springframework.util.ClassUtils;
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.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.annotation.Value;
import org.apache.isis.commons.collections.Can;
@@ -118,6 +119,11 @@ extends ValueFacetUsingSemanticsProviderFactory {
private static class NoopValueSemantics implements ValueSemanticsProvider<Object> {
@Override
+ public Renderer<Object> getRenderer() {
+ return null;
+ }
+
+ @Override
public Parser<Object> getParser() {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 50f5aee..8a3387d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.value.vsp;
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.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -32,7 +33,7 @@ import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;
import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
-import org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser;
+import org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingRenderer;
import org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics;
import org.apache.isis.core.metamodel.facets.object.value.MaxLengthFacetUsingParser;
import org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser;
@@ -72,19 +73,23 @@ extends FacetFactoryAbstract {
// install the EncodeableFacet if we've been given an EncoderDecoder
final EncoderDecoder<?> encoderDecoder = semanticsProvider.getEncoderDecoder();
if (encoderDecoder != null) {
- getServiceInjector().injectServicesInto(encoderDecoder);
+ //getServiceInjector().injectServicesInto(encoderDecoder);
FacetUtil.addFacet(new EncodableFacetUsingEncoderDecoder(encoderDecoder, holder));
}
+ final Renderer<?> renderer = semanticsProvider.getRenderer();
+ if (renderer != null) {
+ holder.addFacet(TitleFacetUsingRenderer.create(renderer, holder));
+ }
+
// install the ParseableFacet and other facets if we've been given a
// Parser
final Parser<?> parser = semanticsProvider.getParser();
if (parser != null) {
- holder.getServiceInjector().injectServicesInto(parser);
+ //holder.getServiceInjector().injectServicesInto(parser);
holder.addFacet(ParseableFacetUsingParser.create(parser, holder));
- holder.addFacet(TitleFacetUsingParser.create(parser, holder));
holder.addFacet(new TypicalLengthFacetUsingParser(parser, holder));
final int maxLength = parser.maxLength();
if(maxLength >=0) {
@@ -95,7 +100,7 @@ extends FacetFactoryAbstract {
// install the DefaultedFacet if we've been given a DefaultsProvider
final DefaultsProvider<?> defaultsProvider = semanticsProvider.getDefaultsProvider();
if (defaultsProvider != null) {
- holder.getServiceInjector().injectServicesInto(defaultsProvider);
+ //holder.getServiceInjector().injectServicesInto(defaultsProvider);
holder.addFacet(new DefaultedFacetUsingDefaultsProvider(defaultsProvider, holder));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 515b7d9..e1ff842 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -25,6 +25,7 @@ import java.util.function.BiConsumer;
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.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.InvalidEntryException;
import org.apache.isis.applib.exceptions.unrecoverable.UnknownTypeException;
@@ -37,7 +38,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@Deprecated
public abstract class ValueSemanticsProviderAndFacetAbstract<T>
extends FacetAbstract
-implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
+implements ValueSemanticsProvider<T>, Renderer<T>, EncoderDecoder<T>, Parser<T>, DefaultsProvider<T> {
private final Class<T> adaptedClass;
private final int typicalLength;
@@ -124,6 +125,11 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
}
@Override
+ public Renderer<T> getRenderer() {
+ return this;
+ }
+
+ @Override
public Parser<T> getParser() {
return this;
}
@@ -138,7 +144,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
// ///////////////////////////////////////////////////////////////////////////
@Override
- public T parseTextRepresentation(final Parser.Context context, final String entry) {
+ public T parseTextRepresentation(final ValueSemanticsProvider.Context context, final String entry) {
if (entry == null) {
throw new IllegalArgumentException();
}
@@ -152,7 +158,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
return doParse(context, entry);
}
- public Optional<Exception> tryParseTextEntry(final Parser.Context context, final String entry) {
+ public Optional<Exception> tryParseTextEntry(final ValueSemanticsProvider.Context context, final String entry) {
try {
parseTextRepresentation(context, entry);
} catch (Exception e) {
@@ -168,7 +174,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
* - the proposed new object, as a string representation to be
* parsed
*/
- protected abstract T doParse(final Parser.Context context, final String entry);
+ protected abstract T doParse(final ValueSemanticsProvider.Context context, final String entry);
/**
@@ -182,7 +188,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
}
@Override
- public String presentationValue(final Parser.Context context, final Object object) {
+ public String presentationValue(final ValueSemanticsProvider.Context context, final Object object) {
if (object == null) {
return "";
}
@@ -193,7 +199,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
* Defaults to {@link Parser#presentationValue(org.apache.isis.applib.adapters.Parser.Context, Object)}.
*/
@Override
- public String parseableTextRepresentation(final Parser.Context context, final Object existing) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final Object existing) {
return presentationValue(context, existing);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
index 818a2ab..35b3acf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/chg/v2/ChangesDtoValueSemanticsProvider.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.schema.chg.v2;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.util.schema.ChangesDtoUtils;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -47,7 +47,7 @@ implements ChangesDtoValueFacet {
@Override
- protected ChangesDto doParse(final Parser.Context context, final String str) {
+ protected ChangesDto doParse(final ValueSemanticsProvider.Context context, final String str) {
return fromEncodedString(str);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
index c20c0f2..2d706d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/cmd/v2/CommandDtoValueSemanticsProvider.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.schema.cmd.v2;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.util.schema.CommandDtoUtils;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,7 +46,7 @@ implements CommandDtoValueFacet {
}
@Override
- protected CommandDto doParse(final Parser.Context context, final String str) {
+ protected CommandDto doParse(final ValueSemanticsProvider.Context context, final String str) {
return fromEncodedString(str);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
index 4f56f1b..401bf8f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/schema/ixn/v2/InteractionDtoValueSemanticsProvider.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.schema.ixn.v2;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,7 +46,7 @@ implements InteractionDtoValueFacet {
}
@Override
- protected InteractionDto doParse(final Parser.Context context, final String str) {
+ protected InteractionDto doParse(final ValueSemanticsProvider.Context context, final String str) {
return fromEncodedString(str);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 106a8b7..c3813f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -31,7 +31,7 @@ import java.util.TimeZone;
import java.util.function.BiConsumer;
import org.apache.isis.applib.adapters.EncodingException;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -125,7 +125,7 @@ implements DateValueFacet {
@Override
protected T doParse(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
buildDefaultFormatIfRequired();
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 6ba29d6..9bf1be3 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
@@ -28,6 +28,8 @@ 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.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.UnrecoverableException;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.commons.internal.base._Strings;
@@ -38,7 +40,8 @@ extends AbstractValueSemanticsProvider<BigDecimal>
implements
DefaultsProvider<BigDecimal>,
EncoderDecoder<BigDecimal>,
- Parser<BigDecimal> {
+ Parser<BigDecimal>,
+ Renderer<BigDecimal> {
public static final int DEFAULT_LENGTH = 18;
public static final int DEFAULT_SCALE = 2;
@@ -64,18 +67,17 @@ implements
return new BigDecimal(data);
}
- // -- PARSER
+ // -- RENDERER
@Override
- public String presentationValue(final Context context, final BigDecimal value) {
- return value==null
- ? ""
- : getNumberFormat(context)
- .format(value);
+ public String presentationValue(final ValueSemanticsProvider.Context context, final BigDecimal value) {
+ return render(value, getNumberFormat(context)::format);
}
+ // -- PARSER
+
@Override
- public String parseableTextRepresentation(final Context context, final BigDecimal value) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final BigDecimal value) {
return value==null
? null
: getNumberFormat(context)
@@ -83,7 +85,7 @@ implements
}
@Override
- public BigDecimal parseTextRepresentation(final Context context, final String text) {
+ public BigDecimal parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
final var input = _Strings.blankToNullOrTrim(text);
if(input==null) {
return null;
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
index 966c4e1..53c56b8 100644
--- 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
@@ -24,7 +24,7 @@ import java.text.NumberFormat;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -66,7 +66,7 @@ implements BigIntegerValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected BigInteger doParse(final Parser.Context context, final String entry) {
+ protected BigInteger doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return new BigInteger(entry);
} catch (final NumberFormatException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index df0f848..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueFacetUsingSemanticsProviderFactory.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.blobs;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.value.Blob;
-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 BlobValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Blob> {
-
- @Inject
- public BlobValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
- if (type != Blob.class) {
- return;
- }
- addValueFacet(new BlobValueSemanticsProvider(holder));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemantics.java
similarity index 54%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemanticsProvider.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemantics.java
index 1469543..2e3d816 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/blobs/BlobValueSemantics.java
@@ -26,67 +26,30 @@ import javax.activation.MimeTypeParseException;
import org.springframework.stereotype.Component;
-import org.apache.isis.applib.adapters.DefaultsProvider;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider.Context;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.commons.internal.base._Bytes;
import org.apache.isis.commons.internal.base._Strings;
-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;
@Component
-public class BlobValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<Blob>
-implements BlobValueFacet {
+public class BlobValueSemantics
+extends AbstractValueSemanticsProvider<Blob>
+implements
+ EncoderDecoder<Blob>,
+ Renderer<Blob> {
- private static final int TYPICAL_LENGTH = 0;
-
- private static Class<? extends Facet> type() {
- return BlobValueFacet.class;
- }
-
- private static final Blob DEFAULT_VALUE = null;
-
- public BlobValueSemanticsProvider() {
- this(null);
- }
-
- public BlobValueSemanticsProvider(final FacetHolder holder) {
- super(type(), holder, Blob.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
- }
+ // RENDERER
@Override
- public String titleString(final Object object) {
- return object != null? ((Blob)object).getName(): "[null]";
+ public String presentationValue(final ValueSemanticsProvider.Context context, final Blob value) {
+ return render(value, Blob::getName);
}
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public Parser<Blob> getParser() {
- return null;
- }
-
- @Override
- protected Blob doParse(final Context context, final String entry) {
- return null;
- }
-
- // //////////////////////////////////////////////////////////////////
- // DefaultsProvider
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public DefaultsProvider<Blob> getDefaultsProvider() {
- return null;
- }
-
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
+ // -- ENCODER DECODER
@Override
public String toEncodedString(final Blob blob) {
@@ -109,5 +72,4 @@ implements BlobValueFacet {
}
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
index dacf62d..286ccae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/booleans/BooleanValueSemantics.java
@@ -24,6 +24,8 @@ 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.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.UnrecoverableException;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.commons.internal.base._Strings;
@@ -37,22 +39,29 @@ extends AbstractValueSemanticsProvider<Boolean>
implements
DefaultsProvider<Boolean>,
EncoderDecoder<Boolean>,
- Parser<Boolean> {
+ Parser<Boolean>,
+ Renderer<Boolean> {
@Override
public Boolean getDefaultValue() {
- return Boolean.TRUE;
+ return Boolean.FALSE;
}
// -- ENCODER DECODER
@Override
- public String toEncodedString(final Boolean object) {
- return isSet(object) ? "T" : "F";
+ public String toEncodedString(final Boolean value) {
+ if(value==null) {
+ return null;
+ }
+ return value.booleanValue() ? "T" : "F";
}
@Override
public Boolean fromEncodedString(final String data) {
+ if(data==null) {
+ return null;
+ }
final int dataLength = data.length();
if (dataLength == 1) {
switch (data.charAt(0)) {
@@ -76,20 +85,22 @@ implements
throw new UnrecoverableException("Invalid data for logical, expected 1, 4 or 5 bytes, got " + dataLength + ": " + data);
}
- // -- PARSER
+ // -- RENDERER
@Override
- public String presentationValue(final Context context, final Boolean value) {
- return value == null ? "" : isSet(value) ? "True" : "False";
+ public String presentationValue(final ValueSemanticsProvider.Context context, final Boolean value) {
+ return render(value, v->v.booleanValue() ? "True" : "False");
}
+ // -- PARSER
+
@Override
- public String parseableTextRepresentation(final Context context, final Boolean value) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final Boolean value) {
return value != null ? value.toString(): null;
}
@Override
- public Boolean parseTextRepresentation(final Context context, final String text) {
+ public Boolean parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
final var input = _Strings.blankToNullOrTrim(text);
if(input==null) {
return null;
@@ -113,10 +124,4 @@ implements
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/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
index 9f9c147..eac566f 100644
--- 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
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -60,7 +60,7 @@ implements ByteValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Byte doParse(final Parser.Context context, final String entry) {
+ protected Byte doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Byte.valueOf(format.parse(entry).byteValue());
} catch (final ParseException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
index 9a3dd15..71ef2b7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.value.chars;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.InvalidEntryException;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -46,7 +46,7 @@ implements CharValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- public Character doParse(final Parser.Context context, final String entry) {
+ public Character doParse(final ValueSemanticsProvider.Context context, final String entry) {
if (entry.length() > 1) {
throw new InvalidEntryException("Only a single character is required");
} else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacet.java
deleted file mode 100644
index c0bcf3d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacet.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.clobs;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-
-public interface ClobValueFacet extends Facet {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacetUsingSemanticsProviderFactory.java
deleted file mode 100644
index 5b445d4..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueFacetUsingSemanticsProviderFactory.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.clobs;
-
-import javax.inject.Inject;
-
-import org.apache.isis.applib.value.Clob;
-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 ClobValueFacetUsingSemanticsProviderFactory
-extends ValueFacetUsingSemanticsProviderFactory<Clob> {
-
- @Inject
- public ClobValueFacetUsingSemanticsProviderFactory(final MetaModelContext mmc) {
- super(mmc);
- }
-
- @Override
- public void process(final ProcessClassContext processClassContext) {
- final Class<?> type = processClassContext.getCls();
- final FacetHolder holder = processClassContext.getFacetHolder();
- if (type != Clob.class) {
- return;
- }
- addValueFacet(new ClobValueSemanticsProvider(holder));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemantics.java
similarity index 50%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemanticsProvider.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemantics.java
index 3c8bb1c..d8f0718 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/clobs/ClobValueSemantics.java
@@ -23,65 +23,27 @@ import javax.activation.MimeTypeParseException;
import org.springframework.stereotype.Component;
-import org.apache.isis.applib.adapters.DefaultsProvider;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.value.Clob;
-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;
@Component
-public class ClobValueSemanticsProvider
-extends ValueSemanticsProviderAndFacetAbstract<Clob>
-implements ClobValueFacet {
+public class ClobValueSemantics
+extends AbstractValueSemanticsProvider<Clob>
+implements
+ EncoderDecoder<Clob>,
+ Renderer<Clob> {
- private static final int TYPICAL_LENGTH = 0;
-
- private static Class<? extends Facet> type() {
- return ClobValueFacet.class;
- }
-
- private static final Clob DEFAULT_VALUE = null;
-
- public ClobValueSemanticsProvider() {
- this(null);
- }
-
- public ClobValueSemanticsProvider(final FacetHolder holder) {
- super(type(), holder, Clob.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
- }
-
- @Override
- public String titleString(final Object object) {
- return object != null? ((Clob)object).getName(): "[null]";
- }
-
- // //////////////////////////////////////////////////////////////////
- // Parser
- // //////////////////////////////////////////////////////////////////
-
- @Override
- public Parser<Clob> getParser() {
- return null;
- }
-
- @Override
- protected Clob doParse(final Context context, final String entry) {
- return null;
- }
-
- // //////////////////////////////////////////////////////////////////
- // DefaultsProvider
- // //////////////////////////////////////////////////////////////////
+ // RENDERER
@Override
- public DefaultsProvider<Clob> getDefaultsProvider() {
- return null;
+ public String presentationValue(final ValueSemanticsProvider.Context context, final Clob value) {
+ return render(value, Clob::getName);
}
- // //////////////////////////////////////////////////////////////////
- // EncoderDecoder
- // //////////////////////////////////////////////////////////////////
+ // -- ENCODER DECODER
@Override
public String toEncodedString(final Clob clob) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index c47f019..5aee141 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -27,7 +27,7 @@ import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.apache.isis.applib.adapters.EncodingException;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -137,7 +137,7 @@ implements JodaLocalDateValueFacet {
@Override
protected LocalDate doParse(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
updateTitleStringFormatterIfOverridden();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
index 3454447..7a7619f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
@@ -28,7 +28,7 @@ import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
import org.apache.isis.applib.adapters.EncodingException;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -139,7 +139,7 @@ implements JodaLocalDateTimeValueFacet {
@Override
protected LocalDateTime doParse(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
updateTitleStringFormatterIfOverridden();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
index ec8a867..63c36fa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -60,7 +60,7 @@ implements DoubleFloatingPointValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Double doParse(final Parser.Context context, final String entry) {
+ protected Double doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Double.valueOf(format.parse(entry).doubleValue());
} catch (final ParseException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
index 97449d8..20c4719 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -61,7 +61,7 @@ implements FloatingPointValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Float doParse(final Parser.Context context, final String entry) {
+ protected Float doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Float.valueOf(format.parse(entry).floatValue());
} catch (final ParseException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProviderAbstract.java
index 4f0466e..9c17a8e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProviderAbstract.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.value.image;
import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.unrecoverable.UnexpectedCallException;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
@@ -44,7 +45,7 @@ implements ImageValueFacet {
}
@Override
- protected T doParse(final Parser.Context context, final String entry) {
+ protected T doParse(final ValueSemanticsProvider.Context context, final String entry) {
throw new UnexpectedCallException();
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
index 7d80a88..73e4651 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -65,7 +65,7 @@ implements IntegerValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Integer doParse(final Parser.Context context, final String entry) {
+ protected Integer doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Integer.valueOf(format.parse(entry).intValue());
} catch (final ParseException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
index 91a3b00..f5ee443 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
@@ -22,7 +22,7 @@ import java.nio.file.InvalidPathException;
import org.springframework.stereotype.Component;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.value.LocalResourcePath;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -57,7 +57,7 @@ implements LocalResourcePathValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected LocalResourcePath doParse(final Parser.Context context, final String entry) {
+ protected LocalResourcePath doParse(final ValueSemanticsProvider.Context context, final String entry) {
if (entry.trim().equals("")) {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
index 69e9323..478972a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -61,7 +61,7 @@ implements LongValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Long doParse(final Parser.Context context, final String entry) {
+ protected Long doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Long.valueOf(format.parse(entry).longValue());
} catch (final ParseException e) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
index ff662a3..7439df8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemantics.java
@@ -23,6 +23,8 @@ 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.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.value.Markup;
@Component
@@ -30,7 +32,8 @@ public class MarkupValueSemantics
extends AbstractValueSemanticsProvider<Markup>
implements
EncoderDecoder<Markup>,
- Parser<Markup> {
+ Parser<Markup>,
+ Renderer<Markup>{
// -- ENCODER DECODER
@@ -44,20 +47,22 @@ implements
return new Markup(html);
}
- // -- PARSER
+ // -- RENDERER
@Override
- public String presentationValue(final Context context, final Markup value) {
+ public String presentationValue(final ValueSemanticsProvider.Context context, final Markup value) {
return value != null? value.asHtml(): "[null]";
}
+ // -- PARSER
+
@Override
- public String parseableTextRepresentation(final Context context, final Markup value) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final Markup value) {
return toEncodedString(value);
}
@Override
- public Markup parseTextRepresentation(final Context context, final String text) {
+ public Markup parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
return fromEncodedString(text);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
index 3970d32..52ae32c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
@@ -20,7 +20,7 @@ package org.apache.isis.core.metamodel.facets.value.password;
import org.springframework.stereotype.Component;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.value.Password;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -52,7 +52,7 @@ implements PasswordValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Password doParse(final Parser.Context context, final String text) {
+ protected Password doParse(final ValueSemanticsProvider.Context context, final String text) {
return new Password(text);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
index e97bf0b..087ae92 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
@@ -24,7 +24,7 @@ import java.text.ParseException;
import java.util.Locale;
import java.util.function.BiConsumer;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -63,7 +63,7 @@ implements ShortValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected Short doParse(final Parser.Context context, final String entry) {
+ protected Short doParse(final ValueSemanticsProvider.Context context, final String entry) {
try {
return Short.valueOf(format.parse(entry).shortValue());
} catch (final ParseException e) {
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
index 550ce3d..8ce7540 100644
--- 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
@@ -18,7 +18,7 @@
*/
package org.apache.isis.core.metamodel.facets.value.string;
-import org.apache.isis.applib.adapters.Parser;
+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;
@@ -43,7 +43,7 @@ implements StringValueFacet {
// //////////////////////////////////////////////////////////////////
@Override
- protected String doParse(final Parser.Context context, final String entry) {
+ protected String doParse(final ValueSemanticsProvider.Context context, final String entry) {
if (entry.trim().equals("")) {
return null;
} else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
index 3e531ee..680261f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
@@ -34,7 +34,7 @@ import java.util.stream.Stream;
import org.springframework.lang.Nullable;
import org.apache.isis.applib.adapters.EncodingException;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
@@ -195,7 +195,7 @@ implements TemporalValueFacet<T> {
@Override
protected T doParse(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
T contextTemporal = _Casts.uncheckedCast(context);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java
index 5475759..160054d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/treenode/TreeNodeValueSemanticsProvider.java
@@ -22,6 +22,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.adapters.DefaultsProvider;
import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.graph.tree.TreeNode;
import org.apache.isis.applib.graph.tree.TreeState;
import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
@@ -71,7 +72,7 @@ implements TreeNodeValueFacet {
}
@Override
- protected TreeNode doParse(final Context context, final String entry) {
+ protected TreeNode doParse(final ValueSemanticsProvider.Context context, final String entry) {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemantics.java
index 81c9ddc..328f85a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemantics.java
@@ -26,6 +26,8 @@ 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.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._Strings;
@Component
@@ -33,7 +35,8 @@ public class URLValueSemantics
extends AbstractValueSemanticsProvider<java.net.URL>
implements
EncoderDecoder<java.net.URL>,
- Parser<java.net.URL> {
+ Parser<java.net.URL>,
+ Renderer<java.net.URL> {
// -- ENCODER DECODER
@@ -54,20 +57,22 @@ implements
}
}
- // -- PARSER
+ // -- RENDERER
@Override
- public String presentationValue(final Context context, final URL value) {
+ public String presentationValue(final ValueSemanticsProvider.Context context, final URL value) {
return value != null ? value.toString(): "";
}
+ // -- PARSER
+
@Override
- public String parseableTextRepresentation(final Context context, final URL value) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final URL value) {
return value != null ? value.toString(): null;
}
@Override
- public URL parseTextRepresentation(final Context context, final String text) {
+ public URL parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
final var input = _Strings.blankToNullOrTrim(text);
if(input==null) {
return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemantics.java
index 393f89f..45ee560 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemantics.java
@@ -23,13 +23,16 @@ import java.util.UUID;
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;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._Strings;
public class UUIDValueSemantics
extends AbstractValueSemanticsProvider<UUID>
implements
EncoderDecoder<UUID>,
- Parser<UUID> {
+ Parser<UUID>,
+ Renderer<UUID> {
// -- ENCODER DECODER
@@ -43,20 +46,22 @@ implements
return UUID.fromString(data);
}
- // -- PARSER
+ // -- RENDERER
@Override
- public String presentationValue(final Context context, final UUID value) {
+ public String presentationValue(final ValueSemanticsProvider.Context context, final UUID value) {
return value == null ? "" : value.toString();
}
+ // -- PARSER
+
@Override
- public String parseableTextRepresentation(final Context context, final UUID value) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final UUID value) {
return value == null ? null : value.toString();
}
@Override
- public UUID parseTextRepresentation(final Context context, final String text) {
+ public UUID parseTextRepresentation(final ValueSemanticsProvider.Context context, final String text) {
final var input = _Strings.blankToNullOrTrim(text);
return input!=null
? UUID.fromString(input)
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 6da7efd..8406168 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
@@ -85,12 +85,10 @@ import org.apache.isis.core.metamodel.facets.properties.update.PropertySetterFac
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.blobs.BlobValueFacetUsingSemanticsProviderFactory;
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.clobs.ClobValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.datejodalocal.JodaLocalDateValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.datesql.JavaSqlDateValueFacetUsingSemanticsProviderFactory;
import org.apache.isis.core.metamodel.facets.value.datetimejoda.JodaDateTimeValueFacetUsingSemanticsProviderFactory;
@@ -296,8 +294,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new JavaAwtImageValueFacetUsingSemanticsProviderFactory(mmc));
// applib values
- addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new BlobValueFacetUsingSemanticsProviderFactory(mmc));
- addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new ClobValueFacetUsingSemanticsProviderFactory(mmc));
addFactory(FacetProcessingOrder.G1_VALUE_TYPES, new PasswordValueFacetUsingSemanticsProviderFactory(mmc));
// jodatime values
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 1b19776..563e969 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -28,6 +28,7 @@ import org.junit.Test;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.adapters.ParsingException;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.applib.services.iactn.InteractionProvider;
import org.apache.isis.applib.services.inject.ServiceInjector;
@@ -81,7 +82,7 @@ public class ParseableFacetUsingParserTest {
final Parser<String> parser = new Parser<String>() {
@Override
- public String parseTextRepresentation(final Parser.Context context, final String entry) {
+ public String parseTextRepresentation(final ValueSemanticsProvider.Context context, final String entry) {
if (entry.equals("invalid")) {
throw new ParsingException();
}
@@ -100,12 +101,7 @@ public class ParseableFacetUsingParserTest {
}
@Override
- public String presentationValue(final Parser.Context context, final String object) {
- return null;
- }
-
- @Override
- public String parseableTextRepresentation(final Parser.Context context, final String existing) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final String existing) {
return null;
}
};
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
index d8b78eb..1eae4a9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAnnotationOrConfigurationFactoryTest.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.facets.object.value;
import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
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.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -61,18 +62,13 @@ public class ValueFacetAnnotationOrConfigurationFactoryTest extends AbstractFace
@Override
public MyValueWithSemanticsProviderSpecifiedUsingConfiguration parseTextRepresentation(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
return null;
}
@Override
- public String presentationValue(final Parser.Context context, final MyValueWithSemanticsProviderSpecifiedUsingConfiguration object) {
- return null;
- }
-
- @Override
- public String parseableTextRepresentation(final Parser.Context context, final MyValueWithSemanticsProviderSpecifiedUsingConfiguration existing) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final MyValueWithSemanticsProviderSpecifiedUsingConfiguration existing) {
return null;
}
@@ -91,18 +87,13 @@ public class ValueFacetAnnotationOrConfigurationFactoryTest extends AbstractFace
@Override
public NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration parseTextRepresentation(
- final Parser.Context context,
+ final ValueSemanticsProvider.Context context,
final String entry) {
return null;
}
@Override
- public String presentationValue(final Parser.Context context, final NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration object) {
- return null;
- }
-
- @Override
- public String parseableTextRepresentation(final Parser.Context context, final NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration existing) {
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final NonAnnotatedValueSemanticsProviderSpecifiedUsingConfiguration existing) {
return null;
}
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 7b2710d..3e69903 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(100, programmingModel.streamFactories().count());
+ assertEquals(98, 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/BlobValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BlobValueSemanticsProviderTest.java
index 831f762..3bbc705 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BlobValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/BlobValueSemanticsProviderTest.java
@@ -26,24 +26,19 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import org.apache.isis.applib.value.Blob;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
-import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueSemantics;
public class BlobValueSemanticsProviderTest
extends ValueSemanticsProviderAbstractTestCase {
- private BlobValueSemanticsProvider value;
+ private BlobValueSemantics value;
private Blob blob;
- private FacetHolder holder;
@Before
public void setUpObjects() throws Exception {
blob = new Blob("myfile1.docx", "application", "vnd.ms-word", new byte[]{1,2,3,4});
allowMockAdapterToReturn(blob);
- holder = FacetHolderAbstract.forTesting(metaModelContext);
-
- setValue(value = new BlobValueSemanticsProvider(holder));
+ setSemanitcs(value = new BlobValueSemantics());
}
@Test
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 5f3b18d..07ccde4 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
@@ -24,6 +24,7 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
+import org.apache.isis.applib.adapters.AbstractValueSemanticsProvider;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
import org.apache.isis.core.metamodel.facets.value.booleans.BooleanValueSemantics;
@@ -80,7 +81,8 @@ extends ValueSemanticsProviderAbstractTestCase {
@Test
public void testTitleWhenNotSet() throws Exception {
- assertEquals("", value.presentationValue(null, null));
+ assertEquals(AbstractValueSemanticsProvider.NULL_REPRESENTATION,
+ value.presentationValue(null, null));
}
@Test
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ClobValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ClobValueSemanticsProviderTest.java
index 41c524e..a82da5f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ClobValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ClobValueSemanticsProviderTest.java
@@ -26,24 +26,20 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import org.apache.isis.applib.value.Clob;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
-import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemanticsProvider;
+import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemantics;
public class ClobValueSemanticsProviderTest
extends ValueSemanticsProviderAbstractTestCase {
- private ClobValueSemanticsProvider value;
+ private ClobValueSemantics value;
private Clob clob;
- private FacetHolder holder;
@Before
public void setUpObjects() throws Exception {
clob = new Clob("myfile1.xml", "application", "xml", "abcdef");
allowMockAdapterToReturn(clob);
- holder = FacetHolderAbstract.forTesting(metaModelContext);
- setValue(value = new ClobValueSemanticsProvider(holder));
+ setSemanitcs(value = new ClobValueSemantics());
}
@Test
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 9c459e0..cda6e78 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,6 +36,7 @@ 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;
@@ -183,7 +184,8 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
((ValueSemanticsProviderAndFacetAbstract<?>)valueSemanticsProvider)
.presentationValue(null, null));
} else {
- assertEquals("", valueSemanticsProvider.getParser().presentationValue(null, null));
+ assertEquals(AbstractValueSemanticsProvider.NULL_REPRESENTATION,
+ valueSemanticsProvider.getRenderer().presentationValue(null, null));
}
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm-description.adoc
index b2933b4..ad12a2c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/EmbeddedTypeVm-description.adoc
@@ -55,14 +55,14 @@ This class defines some behaviour:
+
[source,java,indent=0]
----
-include::ComplexNumberJdo.java[tags=title]
+include::jdo/ComplexNumberJdo.java[tags=title]
----
* how to parse a string:
+
[source,java]
----
-include::ComplexNumberJdo.java[tags=parse,indent=0]
+include::jdo/ComplexNumberJdo.java[tags=parse,indent=0]
----
+
This is used by the "value semantics provider", discussed in the next section.
@@ -73,7 +73,7 @@ The `NumberConstantJdo_updateNumber` mixin allows the value of the complex numbe
[source,java]
.NumberConstantJdo_updateNumber.java
----
-include::NumberConstantJdo_updateNumber.java[tags=class]
+include::jdo/NumberConstantJdo_updateNumber.java[tags=class]
----
@@ -84,16 +84,23 @@ As mentioned in the previous section, the framework uses an implementation of `V
[source,java]
.ComplexNumberJdoValueSemantics.java
----
-include::ComplexNumberJdoValueSemantics.java[tags=class]
+include::jdo/ComplexNumberJdoValueSemantics.java[tags=class]
----
where:
+* `getRenderer()` is responsible for rendering the value:
++
+[source,java,indent=0]
+----
+include::jdo/ComplexNumberJdoValueSemantics.java[tags=getRenderer]
+----
+
* `getParser()` is responsible for parsing the entered string (for either an editable property or a parameter):
+
[source,java,indent=0]
----
-include::ComplexNumberJdoValueSemantics.java[tags=getParser]
+include::jdo/ComplexNumberJdoValueSemantics.java[tags=getParser]
----
+
In this case the implementation just delegates to the `ComplexNumberJdo` class itself.
@@ -102,13 +109,13 @@ In this case the implementation just delegates to the `ComplexNumberJdo` class i
+
[source,java,indent=0]
----
-include::ComplexNumberJdoValueSemantics.java[tags=getEncoderDecoder]
+include::jdo/ComplexNumberJdoValueSemantics.java[tags=getEncoderDecoder]
----
* `getDefaultsProvider()` returns the default value to be used for non-optional parameters and properties:
+
[source,java,indent=0]
----
-include::ComplexNumberJdoValueSemantics.java[tags=getDefaultsProvider]
+include::jdo/ComplexNumberJdoValueSemantics.java[tags=getDefaultsProvider]
----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
index 4ba49e3..c699102 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jdo/ComplexNumberJdoValueSemantics.java
@@ -22,9 +22,11 @@ import java.util.stream.Collectors;
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.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.base._Strings;
@@ -34,9 +36,23 @@ import lombok.val;
// tag::class[]
@Component
public class ComplexNumberJdoValueSemantics
- implements ValueSemanticsProvider<ComplexNumberJdo>{
+ extends AbstractValueSemanticsProvider<ComplexNumberJdo>{
-// end::class[]
+ // end::class[]
+ // tag::getRenderer[]
+ @Override
+ public Renderer<ComplexNumberJdo> getRenderer() {
+ // end::getRenderer[]
+ // ...
+ // tag::getRenderer[]
+ return new Renderer<ComplexNumberJdo>() {
+ @Override
+ public String presentationValue(final ValueSemanticsProvider.Context context, final ComplexNumberJdo object) {
+ return object!=null ? object.title() : "NaN";
+ }
+ };
+ }
+ // end::getRenderer[]
// tag::getParser[]
@Override
public Parser<ComplexNumberJdo> getParser() {
@@ -45,7 +61,7 @@ public class ComplexNumberJdoValueSemantics
// tag::getParser[]
return new Parser<ComplexNumberJdo>() {
@Override
- public ComplexNumberJdo parseTextRepresentation(final Parser.Context context, final String entry) {
+ public ComplexNumberJdo parseTextRepresentation(final ValueSemanticsProvider.Context context, final String entry) {
return ComplexNumberJdo.parse(entry).orElse(null);
}
@Override
@@ -53,12 +69,8 @@ public class ComplexNumberJdoValueSemantics
return 30;
}
@Override
- public String presentationValue(final Parser.Context context, final ComplexNumberJdo object) {
- return object!=null ? object.title() : "NaN";
- }
- @Override
- public String parseableTextRepresentation(final Parser.Context context, final ComplexNumberJdo existing) {
- return presentationValue(context, existing);
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final ComplexNumberJdo existing) {
+ return existing!=null ? existing.title() : null;
}
};
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
index d2c7ada..e5c3360 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/embedded/jpa/ComplexNumberJpaValueSemantics.java
@@ -23,9 +23,11 @@ import java.util.stream.Collectors;
import org.springframework.context.annotation.Profile;
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.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.base._Strings;
@@ -36,9 +38,23 @@ import lombok.val;
// tag::class[]
@Component
public class ComplexNumberJpaValueSemantics
- implements ValueSemanticsProvider<ComplexNumberJpa>{
+ extends AbstractValueSemanticsProvider<ComplexNumberJpa>{
// end::class[]
+// tag::getRenderer[]
+ @Override
+ public Renderer<ComplexNumberJpa> getRenderer() {
+// end::getRenderer[]
+ // ...
+// tag::getRenderer[]
+ return new Renderer<ComplexNumberJpa>() {
+ @Override
+ public String presentationValue(final ValueSemanticsProvider.Context context, final ComplexNumberJpa object) {
+ return object!=null ? object.title() : "NaN";
+ }
+ };
+ }
+// end::getRenderer[]
// tag::getParser[]
@Override
public Parser<ComplexNumberJpa> getParser() {
@@ -47,7 +63,7 @@ public class ComplexNumberJpaValueSemantics
// tag::getParser[]
return new Parser<ComplexNumberJpa>() {
@Override
- public ComplexNumberJpa parseTextRepresentation(final Parser.Context context, final String entry) {
+ public ComplexNumberJpa parseTextRepresentation(final ValueSemanticsProvider.Context context, final String entry) {
return ComplexNumberJpa.parse(entry).orElse(null);
}
@Override
@@ -55,12 +71,8 @@ public class ComplexNumberJpaValueSemantics
return 30;
}
@Override
- public String presentationValue(final Parser.Context context, final ComplexNumberJpa object) {
- return object!=null ? object.title() : "NaN";
- }
- @Override
- public String parseableTextRepresentation(final Parser.Context context, final ComplexNumberJpa existing) {
- return presentationValue(context, existing);
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final ComplexNumberJpa existing) {
+ return existing!=null ? existing.title() : null;
}
};
}
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
index a74160c..c6c27f3 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemanticsProvider.java
@@ -22,29 +22,18 @@ import java.time.Instant;
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.ValueSemanticsProvider;
@Component
public class CalendarEventSemanticsProvider
-implements ValueSemanticsProvider<CalendarEvent> {
+extends AbstractValueSemanticsProvider<CalendarEvent>
+implements DefaultsProvider<CalendarEvent>{
@Override
- public DefaultsProvider<CalendarEvent> getDefaultsProvider() {
- return ()->new CalendarEvent(
- Instant.now().toEpochMilli(), "Default Calendar", "New Event", "empty");
- }
-
- @Override
- public EncoderDecoder<CalendarEvent> getEncoderDecoder() {
- return null;
- }
-
- @Override
- public Parser<CalendarEvent> getParser() {
- return null;
- }
+ public CalendarEvent getDefaultValue() {
+ return new CalendarEvent(
+ Instant.now().toEpochMilli(), "Default Calendar", "New Event", "empty");
+ }
}
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 ede9934..d6a9cb3 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
@@ -22,7 +22,6 @@ import com.vaadin.flow.component.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.value.Blob;
-import org.apache.isis.core.metamodel.facets.value.blobs.BlobValueFacet;
import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentHandlerVaa;
import org.apache.isis.viewer.common.model.components.UiComponentFactory.ComponentRequest;
@@ -34,7 +33,7 @@ public class BlobFieldFactory implements UiComponentHandlerVaa {
@Override
public boolean isHandling(final ComponentRequest request) {
- return request.hasFeatureTypeFacet(BlobValueFacet.class);
+ return request.hasValueFacet(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 551e895..4913a86 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
@@ -22,7 +22,6 @@ import com.vaadin.flow.component.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.value.Clob;
-import org.apache.isis.core.metamodel.facets.value.clobs.ClobValueFacet;
import org.apache.isis.incubator.viewer.vaadin.ui.components.UiComponentHandlerVaa;
import org.apache.isis.viewer.common.model.components.UiComponentFactory.ComponentRequest;
@@ -34,7 +33,7 @@ public class ClobFieldFactory implements UiComponentHandlerVaa {
@Override
public boolean isHandling(final ComponentRequest request) {
- return request.hasFeatureTypeFacet(ClobValueFacet.class);
+ return request.hasValueFacet(Clob.class);
}
@Override
diff --git a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java
index 5c819ec..66523af 100644
--- a/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java
+++ b/valuetypes/asciidoc/metamodel/src/main/java/org/apache/isis/valuetypes/asciidoc/metamodel/semantics/AsciiDocValueSemanticsProvider.java
@@ -22,33 +22,36 @@ 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.adapters.ValueSemanticsProvider;
import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
@Component
@Named("isis.val.AsciiDocValueSemanticsProvider")
public class AsciiDocValueSemanticsProvider
+extends AbstractValueSemanticsProvider<AsciiDoc>
implements
- ValueSemanticsProvider<AsciiDoc>,
//EncoderDecoder<AsciiDoc>,
+ Renderer<AsciiDoc>,
Parser<AsciiDoc> {
@Override
- public String parseableTextRepresentation(final Parser.Context context, final AsciiDoc adoc) {
- return adoc!=null ? adoc.getAdoc() : null;
+ public String presentationValue(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
+ return adoc != null? adoc.asHtml(): "[null]";
}
@Override
- public AsciiDoc parseTextRepresentation(final Parser.Context context, final String adoc) {
- return adoc!=null ? AsciiDoc.valueOf(adoc) : null;
+ public String parseableTextRepresentation(final ValueSemanticsProvider.Context context, final AsciiDoc adoc) {
+ return adoc!=null ? adoc.getAdoc() : null;
}
@Override
- public String presentationValue(final Parser.Context context, final AsciiDoc adoc) {
- return adoc != null? adoc.asHtml(): "[null]";
+ public AsciiDoc parseTextRepresentation(final ValueSemanticsProvider.Context context, final String adoc) {
+ return adoc!=null ? AsciiDoc.valueOf(adoc) : null;
}
@Override
diff --git a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java
index e2c8a5d..19bff4a 100644
--- a/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java
+++ b/valuetypes/markdown/metamodel/src/main/java/org/apache/isis/valuetypes/markdown/metamodel/facets/MarkdownValueSemanticsProvider.java
@@ -19,7 +19,7 @@
package org.apache.isis.valuetypes.markdown.metamodel.facets;
import org.apache.isis.applib.adapters.EncoderDecoder;
-import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
@@ -44,7 +44,7 @@ implements MarkdownValueFacet {
@Override
- protected Markdown doParse(final Parser.Context context, final String html) {
+ protected Markdown doParse(final ValueSemanticsProvider.Context context, final String html) {
return fromEncodedString(html);
}
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 2cb725e..e5fbcd2 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
@@ -24,11 +24,13 @@ import java.util.function.Consumer;
import org.springframework.lang.Nullable;
import org.apache.isis.applib.annotation.LabelPosition;
+import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.handler.ChainOfResponsibility;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.functions._Predicates;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.core.metamodel.interactions.managed.InteractionVeto;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.metamodel.interactions.managed.ManagedFeature;
@@ -109,7 +111,17 @@ public interface UiComponentFactory<B, C> {
*/
public <T extends Facet> boolean hasFeatureTypeFacet(final @Nullable Class<T> facetType) {
return facetType!=null
- ? getFeatureTypeSpec().getFacet(facetType)!=null
+ ? getFeatureTypeSpec().containsFacet(facetType)
+ : false;
+ }
+
+ public boolean hasValueFacet(final @Nullable Class<?> valueType) {
+ return valueType!=null
+ ? getFeatureTypeSpec().lookupFacet(ValueFacet.class)
+ .map(ValueFacet::getValueType)
+ .map(LogicalType::getCorrespondingClass)
+ .map(valueType::equals)
+ .orElse(false)
: false;
}