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 2022/12/01 13:02:53 UTC

[isis] branch master updated: ISIS-3275: add jaxb marshalling support to Bookmark

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 0be204b169 ISIS-3275: add jaxb marshalling support to Bookmark
0be204b169 is described below

commit 0be204b1692832c5e7aa724716899eeff7312a75
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 1 14:02:45 2022 +0100

    ISIS-3275: add jaxb marshalling support to Bookmark
---
 .../causeway/applib/services/bookmark/Bookmark.java     | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/Bookmark.java b/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/Bookmark.java
index 88fcd4805f..8367e0e625 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/Bookmark.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/bookmark/Bookmark.java
@@ -23,6 +23,8 @@ import java.util.Optional;
 import java.util.StringTokenizer;
 
 import javax.inject.Named;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.springframework.lang.Nullable;
 
@@ -46,6 +48,7 @@ import lombok.val;
  */
 @Named(Bookmark.LOGICAL_TYPE_NAME)
 @org.apache.causeway.applib.annotation.Value
+@XmlJavaTypeAdapter(Bookmark.JaxbToStringAdapter.class) // for JAXB view model support
 @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public final class Bookmark implements Oid {
 
@@ -223,6 +226,20 @@ public final class Bookmark implements Oid {
         return identifier==null;
     }
 
+    // -- UTILITY
+
+    public static class JaxbToStringAdapter extends XmlAdapter<String, Bookmark> {
+        @Override
+        public Bookmark unmarshal(final String literal) {
+            return Bookmark.parse(literal).orElse(null);
+        }
+
+        @Override
+        public String marshal(final Bookmark bookmark) {
+            return bookmark != null ? bookmark.stringify() : null;
+        }
+    }
+
     // -- HELPER
 
     private String stringify(final String id) {