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 bbb9514  ISIS-2877: simplify CalendarEvent.JaxbAdapter
bbb9514 is described below

commit bbb951497685d5bae185fbeb3820f63ddc026318
Author: Andi Huber <[email protected]>
AuthorDate: Tue Feb 1 14:26:10 2022 +0100

    ISIS-2877: simplify CalendarEvent.JaxbAdapter
---
 .../metamodel/facets/object/value/ValueFacet.java  |  2 +-
 .../fullcalendar/applib/value/CalendarEvent.java   | 71 +++-------------------
 2 files changed, 8 insertions(+), 65 deletions(-)

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 6e26c1c..2ca7786 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
@@ -79,7 +79,7 @@ public interface ValueFacet<T> extends Facet {
     /** no qualifiers allowed on the default semantics provider*/
     Optional<EncoderDecoder<T>> selectDefaultEncoderDecoder();
 
-    // -- ENCODER DECODER
+    // -- COMPOSER
 
     /** no qualifiers allowed on the default semantics provider*/
     Optional<ValueComposer<T>> selectDefaultComposer();
diff --git 
a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
 
b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
index 2349c5f..817fc39 100644
--- 
a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
+++ 
b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEvent.java
@@ -18,30 +18,19 @@
  */
 package org.apache.isis.extensions.fullcalendar.applib.value;
 
-import java.io.IOException;
 import java.io.Serializable;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
-import java.util.Objects;
 
 import javax.xml.bind.annotation.adapters.XmlAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import com.fasterxml.jackson.core.JacksonException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-
 import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.IsisModuleApplib;
-import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.commons.internal.resources._Json;
-import 
org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent.CalendarEventDeserializer;
+import org.apache.isis.schema.common.v2.TypedTupleDto;
 
 import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
@@ -49,7 +38,6 @@ import lombok.Getter;
 import lombok.NonNull;
 import lombok.ToString;
 import lombok.With;
-import lombok.val;
 
 /**
  * Value type representing an event on a calendar.
@@ -59,7 +47,6 @@ import lombok.val;
 @org.apache.isis.applib.annotation.Value(
         logicalTypeName = IsisModuleApplib.NAMESPACE + ".value.CalendarEvent")
 @XmlJavaTypeAdapter(CalendarEvent.JaxbAdapter.class)
-@JsonDeserialize(using = CalendarEventDeserializer.class)
 @Getter @With
 @ToString @EqualsAndHashCode
 @AllArgsConstructor
@@ -115,20 +102,6 @@ implements
 
     // -- OBJECT CONTRACT
 
-    /** FIXME[ISIS-2877] 'null' for null bug */
-    @Override
-    public boolean equals(final Object obj) {
-        if(obj instanceof CalendarEvent) {
-            val other = (CalendarEvent) obj;
-            return this.epochMillis == other.epochMillis
-                    && Objects.equals(this.getCalendarName(), 
other.getCalendarName())
-                    && Objects.equals(this.getTitle(), other.getTitle()
-                    //&& Objects.equals(this.getNotes(), other.getNotes()
-                            );
-        }
-        return false;
-    }
-
     @Override
     public int compareTo(final CalendarEvent other) {
         return Long.compare(this.epochMillis, other.getEpochMillis());
@@ -136,50 +109,20 @@ implements
 
     // -- UTILITY
 
-    public static class CalendarEventDeserializer
-    extends StdDeserializer<CalendarEvent> {
-        private static final long serialVersionUID = 1L;
-
-        public CalendarEventDeserializer() {
-            this(null);
-        }
-
-        protected CalendarEventDeserializer(final Class<?> vc) {
-            super(vc);
-        }
-
-        @Override
-        public CalendarEvent deserialize(final JsonParser jp, final 
DeserializationContext ctxt)
-                throws IOException, JacksonException {
-
-            final JsonNode node = jp.getCodec().readTree(jp);
-
-            final ZonedDateTime dateTime = ZonedDateTime.ofInstant(
-                    Instant.ofEpochMilli(node.get("epochMillis").asLong()),
-                    ZoneId.systemDefault());
-            final String calendarName = node.get("calendarName").asText();
-            final String title = node.get("title").asText();
-            final String notes = node.get("notes").asText();
-
-            return CalendarEvent.of(dateTime, calendarName, title, notes);
-        }
-
-    }
-
     public static final class JaxbAdapter
-    extends XmlAdapter<String, CalendarEvent> {
+    extends XmlAdapter<TypedTupleDto, CalendarEvent> {
 
         @Override
-        public CalendarEvent unmarshal(final String v) {
-            return _Strings.isNotEmpty(v)
-                    ? _Json.readJson(CalendarEvent.class, v).presentElseFail()
+        public CalendarEvent unmarshal(final TypedTupleDto dto) {
+            return dto!=null
+                    ? new CalendarEventSemantics().compose(dto)
                     : null;
         }
 
         @Override
-        public String marshal(final CalendarEvent v) {
+        public TypedTupleDto marshal(final CalendarEvent v) {
             return v!=null
-                    ? _Json.toString(v).presentElseFail()
+                    ? new CalendarEventSemantics().decompose(v)
                     : null;
         }
 

Reply via email to