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 04ea3b7  ISIS-2877: clean up SchemaValueMarshaller(s)
04ea3b7 is described below

commit 04ea3b76870169488143ce3381a5150e25b6bce2
Author: Andi Huber <[email protected]>
AuthorDate: Fri Feb 4 13:41:30 2022 +0100

    ISIS-2877: clean up SchemaValueMarshaller(s)
---
 .../schema/SchemaValueMarshallerAbstract.java      | 12 +--
 .../command/SchemaValueMarshallerDefault.java      | 86 +++++++---------------
 2 files changed, 31 insertions(+), 67 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
index 2536dd3..5d5e8b3 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/schema/SchemaValueMarshallerAbstract.java
@@ -74,15 +74,13 @@ implements SchemaValueMarshaller {
                 final ObjectFeature feature,
                 final ValueSemanticsProvider<T> semantics) {
 
-            return of(correspondingClass, feature, Optional.of(semantics),
-                    semantics!=null
-                        ? Optional.ofNullable(semantics.getConverter())
-                        : Optional.empty());
+            return of(correspondingClass, feature, semantics,
+                    Optional.ofNullable(semantics.getConverter()));
         }
 
         private final @NonNull Class<T> correspondingClass;
         private final @NonNull ObjectFeature feature;
-        private final @NonNull Optional<ValueSemanticsProvider<T>> semantics;
+        private final @NonNull ValueSemanticsProvider<T> semantics;
         private final @NonNull Optional<Converter<T, ?>> converter;
 
         public ObjectSpecification getElementType() {
@@ -90,9 +88,7 @@ implements SchemaValueMarshaller {
         }
 
         public ValueType getSchemaValueType() {
-            return semantics
-                    .map(ValueSemanticsProvider::getSchemaValueType)
-                    .orElse(ValueType.REFERENCE); // fallback
+            return semantics.getSchemaValueType();
         }
 
     }
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
index 41dbe1c..8f2134a 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/SchemaValueMarshallerDefault.java
@@ -23,7 +23,6 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
@@ -74,7 +73,7 @@ extends SchemaValueMarshallerAbstract {
 
         switch (context.getSchemaValueType()) {
         case COMPOSITE:
-            valueDto.setComposite(toTypedTuple(context, (T)value.getPojo()));
+            valueDto.setComposite(toTypedTuple(context, 
_Casts.<T>uncheckedCast(value.getPojo())));
             return valueDto;
         case COLLECTION:
             recordValues(context, valueDto, 
((PackedManagedObject)value).unpack());
@@ -87,19 +86,12 @@ extends SchemaValueMarshallerAbstract {
             break;
         }
 
-        //TODO[ISIS-2877] remove conditional, once composer is always present
-        if(context.getSemantics().isPresent()) {
-            CommonDtoUtils.copy(
-                
context.getSemantics().get().decompose(_Casts.uncheckedCast(value.getPojo()))
-                        .leftIfAny(),
-                valueDto);
-            return valueDto;
-        }
+        val decomposedValueDto = context.getSemantics()
+                .decompose(_Casts.uncheckedCast(value.getPojo()))
+                .leftIfAny();
 
-        CommonDtoUtils.recordFundamentalValue(
-                context.getSchemaValueType(),
-                valueDto,
-                toFundamentalValue(context, 
_Casts.uncheckedCast(value.getPojo())));
+        // copy the decomposedValueDto into valueDto
+        CommonDtoUtils.copy(decomposedValueDto, valueDto);
 
         return valueDto;
     }
@@ -116,33 +108,6 @@ extends SchemaValueMarshallerAbstract {
         return valueWithTypeDto;
     }
 
-    // -- RECOVER VALUES FROM DTO
-
-    @Override
-    protected ManagedObject recoverScalarValue(
-            @NonNull final Context<?> context,
-            @NonNull final ValueWithTypeDto valueDto) {
-
-        val elementSpec = context.getElementType();
-
-        val recoveredValueAsPojo = valueDto.getType()==ValueType.COMPOSITE
-                ? fromTypedTuple(context, valueDto.getComposite())
-                : context.getSemantics().isPresent()
-                    ? 
context.getSemantics().get().compose(ValueDecomposition.ofFundamental(valueDto))
-                    : fromFundamentalValue(context, 
CommonDtoUtils.getValueAsObject(valueDto));
-
-        if(recoveredValueAsPojo==null) {
-            return ManagedObject.empty(context.getElementType());
-        }
-
-        val recoveredValue = recoveredValueAsPojo!=null
-                ? ManagedObject.of(elementSpec, recoveredValueAsPojo)
-                : ManagedObject.empty(context.getElementType());
-        return recoveredValue;
-    }
-
-    // -- HELPER - RECORDING
-
     private <T> CollectionDto asCollectionDto(
             final Context<T> context,
             final Can<ManagedObject> values) {
@@ -164,38 +129,41 @@ extends SchemaValueMarshallerAbstract {
 
     private <T> TypedTupleDto toTypedTuple(final Context<T> context, final T 
valuePojo) {
         return context.getSemantics()
-                .orElseThrow()
                 .decompose(valuePojo)
                 .rightIfAny();
     }
 
-    private <T> Object toFundamentalValue(final Context<T> context, final T 
valuePojo) {
-        return context.getConverter()
-                    
.<Object>map(converter->converter.toDelegateValue(valuePojo))
-                    .orElse(valuePojo);
-    }
+    // -- RECOVER VALUES FROM DTO
 
-    // -- HELPER - RECOVERY
+    @Override
+    protected ManagedObject recoverScalarValue(
+            @NonNull final Context<?> context,
+            @NonNull final ValueWithTypeDto valueDto) {
+
+        val elementSpec = context.getElementType();
+
+        val recoveredValueAsPojo = valueDto.getType()==ValueType.COMPOSITE
+                ? fromTypedTuple(context, valueDto.getComposite())
+                : 
context.getSemantics().compose(ValueDecomposition.ofFundamental(valueDto));
+
+        if(recoveredValueAsPojo==null) {
+            return ManagedObject.empty(context.getElementType());
+        }
+
+        val recoveredValue = recoveredValueAsPojo!=null
+                ? ManagedObject.of(elementSpec, recoveredValueAsPojo)
+                : ManagedObject.empty(context.getElementType());
+        return recoveredValue;
+    }
 
     private <T> T fromTypedTuple(final Context<T> context, final TypedTupleDto 
typedTupleDto) {
         if(typedTupleDto==null) {
             return null;
         }
         return context.getSemantics()
-                .orElseThrow()
                 .compose(ValueDecomposition.ofComposite(typedTupleDto));
     }
 
-    private <T> T fromFundamentalValue(final Context<T> context, final 
@Nullable Object fundamentalValue) {
-        if(fundamentalValue==null) {
-            return null;
-        }
-        val valuePojo = context.getConverter()
-                    
.<T>map(converter->converter.fromDelegateValue(_Casts.uncheckedCast(fundamentalValue)))
-                    .orElse(_Casts.uncheckedCast(fundamentalValue));
-        return valuePojo;
-    }
-
     // -- DEPENDENCIES
 
     @Override

Reply via email to