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;
}