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/04/15 16:26:34 UTC

[isis] branch master updated: ISIS-2569: remove Oid.(un)marshaller()

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 97e97f7  ISIS-2569: remove Oid.(un)marshaller()
97e97f7 is described below

commit 97e97f7fb8a09fd8aaeffbb3e22ee6dd32a11825
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 18:26:15 2021 +0200

    ISIS-2569: remove Oid.(un)marshaller()
---
 .../isis/core/metamodel/adapter/oid/Oid.java       | 58 +++++++++-------------
 .../core/metamodel/adapter/oid/_OidMarshaller.java | 40 ++++-----------
 .../adapter/oid/{_RootOid.java => _SimpleOid.java} | 38 +++-----------
 .../adapter/oid/OidMarshallerTest_marshall.java    | 10 +---
 .../oid/OidMarshallerTest_roundtripping.java       |  4 +-
 .../adapter/oid/OidMarshallerTest_unmarshal.java   | 23 +++------
 .../component/FullCalendarWithEventHandling.java   |  2 +-
 .../restfulobjects/rendering/IResourceContext.java |  2 +-
 .../viewer/resources/JsonParserHelper.java         |  3 +-
 .../viewer/resources/ResourceAbstract.java         |  5 +-
 .../wicket/model/models/BookmarkTreeNode.java      | 10 ++--
 .../viewer/wicket/model/models/EntityModel.java    |  2 +-
 .../wicket/model/models/PageParameterUtil.java     |  4 +-
 .../widgets/breadcrumbs/BreadcrumbModel.java       |  2 +-
 .../widgets/breadcrumbs/BreadcrumbPanel.java       |  4 +-
 .../ObjectAdapterMementoProviderAbstract.java      |  2 +-
 .../integration/ConverterForObjectAdapter.java     |  2 +-
 .../ConverterForObjectAdapterMemento.java          |  2 +-
 .../viewer/services/mementos/ObjectMementoWkt.java |  2 +-
 19 files changed, 74 insertions(+), 141 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index 346f3dc..c2c3850 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -45,35 +45,44 @@ public interface Oid extends Serializable {
 
     // -- FACTORIES
 
-    
     public static Oid empty() {
         return _EmptyOid.INSTANCE;
     }
 
     public static Oid root(final LogicalType logicalType, final String identifier) {
-        return _RootOid.of(
+        return _SimpleOid.of(
                 logicalType.getLogicalTypeName(), 
                 identifier);
     }
     
     public static Oid forBookmark(final Bookmark bookmark) {
-        return _RootOid.of(
+        return _SimpleOid.of(
                 bookmark.getLogicalTypeName(), 
                 bookmark.getIdentifier());
     }
     
     public static Oid forDto(final OidDto oid) {
-        return _RootOid.of(
+        return _SimpleOid.of(
                 oid.getType(), 
                 oid.getId());
     }
     
+    public static Oid forLogicalTypeNameAndIdentifier(
+            final String logicalTypeName,
+            final String identifier) {
+        return _SimpleOid.of(
+                logicalTypeName, 
+                identifier);
+    }
+    
     // --
     
     /**
      * A string representation of this {@link Oid}.
      */
-    String enString();
+    default String enString() {
+        return _OidMarshaller.marshal(this);
+    }
 
     default boolean isEmpty() {
         return false; // default, only overridden by Oid_Value
@@ -85,43 +94,24 @@ public interface Oid extends Serializable {
      */
     String getLogicalTypeName();
 
-    // -- MARSHALLING
-
-    public static interface Marshaller {
-        String marshal(Oid oid);
-        String joinAsOid(String logicalTypeName, String instanceId);
-    }
-
-    public static Marshaller marshaller() {
-        return _OidMarshaller.INSTANCE;
-    }
-
-    // -- UN-MARSHALLING
-
-    public static interface Unmarshaller {
-        <T extends Oid> T unmarshal(String oidStr, Class<T> requestedType);
-        String splitInstanceId(String oidStr);
-    }
-
-    public static Unmarshaller unmarshaller() {
-        return _OidMarshaller.INSTANCE;
-    }
     
     // -- REFACTORING ...
     
     String getIdentifier();
 
-    Bookmark asBookmark();
-
-    // -- DECODE FROM STRING
-
-    public static Oid deStringEncoded(final String urlEncodedOidStr) {
+    public default Bookmark asBookmark() {
+        return Bookmark.of(getLogicalTypeName(), getIdentifier());
+    }
+    
+    // -- DECODE FROM STRING 
+    
+    public static Oid parseEncoded(final String urlEncodedOidStr) {
         final String oidStr = _UrlDecoderUtil.urlDecode(urlEncodedOidStr);
-        return deString(oidStr);
+        return parse(oidStr);
     }
 
-    public static Oid deString(final String oidStr) {
-        return Oid.unmarshaller().unmarshal(oidStr, Oid.class);
+    public static Oid parse(final String oidStr) {
+        return _OidMarshaller.unmarshal(oidStr, _SimpleOid.class);
     }
 
     // -- OBJECT LOADING
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
index bdea7b8..a832670 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_OidMarshaller.java
@@ -80,11 +80,7 @@ import static org.apache.isis.commons.internal.base._Strings.splitThenStream;
  * <p>
  * Note that # and ; were not chosen as separators to minimize noise when URL encoding OIDs.
  */
-final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
-
-    public static final _OidMarshaller INSTANCE = new _OidMarshaller();
-
-    private _OidMarshaller(){}
+final class _OidMarshaller {
 
     @Deprecated
     private static final String VIEWMODEL_INDICATOR = "*";
@@ -115,26 +111,16 @@ final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
                             "([\\" + SEPARATOR_VERSION + "].*)?" + // to be compatible with previous patterns, that optionally included version information
                     "$");
 
+    // -- MARSHAL
 
-    // -- join, split
-
-    @Override //implementing Oid.Marshaller
-    public String joinAsOid(String domainType, String instanceId) {
-        return domainType + SEPARATOR + instanceId;
-    }
-
-    @Override //implementing Oid.Unarshaller
-    public String splitInstanceId(String oidStr) {
-        final int indexOfSeperator = oidStr.indexOf(SEPARATOR);
-        return indexOfSeperator > 0? oidStr.substring(indexOfSeperator+1): null;
+    static final String marshal(Oid oid) {
+        _Assert.assertFalse(oid.isEmpty(), "cannot marshal an empty OID");
+        return oid.getLogicalTypeName() + SEPARATOR + oid.getIdentifier();
     }
 
+    // -- UNMARSHAL
 
-
-    // -- unmarshal
-
-    @Override
-    public <T extends Oid> T unmarshal(String oidStr, Class<T> requestedType) {
+    static <T extends Oid> T unmarshal(String oidStr, Class<T> requestedType) {
 
         final Matcher matcher = OIDSTR_PATTERN.matcher(oidStr);
         if (!matcher.matches()) {
@@ -174,7 +160,7 @@ final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
             if(aggregateOidParts.isEmpty()) {
                 ensureCorrectType(oidStr, requestedType, Oid.class);
                 return _Casts.uncheckedCast(
-                        _RootOid.of(rootObjectType, rootIdentifier));
+                        _SimpleOid.of(rootObjectType, rootIdentifier));
             } else {
                 throw _Exceptions.illegalArgument("Aggregated OIDs are no longer supported");
             }
@@ -197,7 +183,7 @@ final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
     }
 
 
-    private <T> void ensureCorrectType(String oidStr, Class<T> requestedType, 
+    private static <T> void ensureCorrectType(String oidStr, Class<T> requestedType, 
             final Class<? extends Oid> actualType) {
 
         if(!requestedType.isAssignableFrom(actualType)) {
@@ -208,7 +194,7 @@ final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
         }
     }
 
-    private String getGroup(final Matcher matcher, final int group) {
+    private static String getGroup(final Matcher matcher, final int group) {
         final int groupCount = matcher.groupCount();
         if(group > groupCount) {
             return null;
@@ -218,11 +204,5 @@ final class _OidMarshaller implements Oid.Marshaller, Oid.Unmarshaller {
     }
 
 
-    // -- marshal
-    @Override
-    public final String marshal(Oid oid) {
-        _Assert.assertFalse(oid.isEmpty(), "cannot marshal an empty OID");
-        return oid.getLogicalTypeName() + SEPARATOR + oid.getIdentifier();
-    }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_RootOid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
similarity index 70%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_RootOid.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
index d481584..325d19c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_RootOid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/_SimpleOid.java
@@ -21,13 +21,10 @@ package org.apache.isis.core.metamodel.adapter.oid;
 
 import java.util.Objects;
 
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.commons.internal.codec._UrlDecoderUtil;
-
 import lombok.Getter;
 import lombok.NonNull;
 
-final class _RootOid implements Oid {
+final class _SimpleOid implements Oid {
 
     private static final long serialVersionUID = 3L;
 
@@ -36,13 +33,13 @@ final class _RootOid implements Oid {
     
     private final int hashCode;
 
-    public static _RootOid of(
+    static _SimpleOid of(
             final @NonNull String logicalTypeName, 
             final @NonNull String identifier) {
-        return new _RootOid(logicalTypeName, identifier);
+        return new _SimpleOid(logicalTypeName, identifier);
     }
 
-    private _RootOid(
+    private _SimpleOid(
             final String logicalTypeName, 
             final String identifier) {
 
@@ -52,27 +49,8 @@ final class _RootOid implements Oid {
 
     }
 
-    // -- ENCODING 
+    // -- OBJECT CONTRACT
     
-    public static _RootOid deStringEncoded(final String urlEncodedOidStr) {
-        final String oidStr = _UrlDecoderUtil.urlDecode(urlEncodedOidStr);
-        return deString(oidStr);
-    }
-
-    public static _RootOid deString(final String oidStr) {
-        return Oid.unmarshaller().unmarshal(oidStr, _RootOid.class);
-    }
-
-    @Override
-    public String enString() {
-        return Oid.marshaller().marshal(this);
-    }
-
-    @Override
-    public Bookmark asBookmark() {
-        return Bookmark.of(logicalTypeName, getIdentifier());
-    }
-
     @Override
     public boolean equals(final Object other) {
         if (other == null) {
@@ -84,10 +62,10 @@ final class _RootOid implements Oid {
         if (getClass() != other.getClass()) {
             return false;
         }
-        return equals((_RootOid) other);
+        return equals((_SimpleOid) other);
     }
 
-    public boolean equals(final _RootOid other) {
+    public boolean equals(final _SimpleOid other) {
         return Objects.equals(logicalTypeName, other.getLogicalTypeName()) 
                 && Objects.equals(identifier, other.getIdentifier());
     }
@@ -101,7 +79,7 @@ final class _RootOid implements Oid {
     public String toString() {
         return enString();
     }
-
+    
     // -- HELPER
 
     private int calculateHash() {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java
index 0896bc4..afff9a5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_marshall.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.metamodel.adapter.oid;
 
-import org.junit.Before;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -26,16 +25,9 @@ import static org.hamcrest.MatcherAssert.assertThat;
 
 public class OidMarshallerTest_marshall {
 
-    private _OidMarshaller oidMarshaller;
-
-    @Before
-    public void setUp() throws Exception {
-        oidMarshaller = _OidMarshaller.INSTANCE;
-    }
-
     @Test
     public void oid() {
-        final String marshal = oidMarshaller.marshal(Oid.root(LogicalTypeTestFactory.cus(),  "123"));
+        final String marshal = _OidMarshaller.marshal(Oid.root(LogicalTypeTestFactory.cus(),  "123"));
         assertThat(marshal, equalTo("CUS:123"));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
index 547d349..64fc758 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
@@ -33,7 +33,7 @@ public class OidMarshallerTest_roundtripping {
         val oid = Oid.root(LogicalTypeTestFactory.cus(), "123");
 
         final String enString = oid.enString();
-        final Oid deString = Oid.deString(enString);
+        final Oid deString = Oid.parse(enString);
         assertThat(deString, is(oid));
     }
     
@@ -42,7 +42,7 @@ public class OidMarshallerTest_roundtripping {
         val oid = Oid.root(LogicalTypeTestFactory.cus(), "123");
 
         final String enString = oid.enString();
-        final Oid deString = Oid.deString(enString + "^" + 90807L);
+        final Oid deString = Oid.parse(enString + "^" + 90807L);
         assertThat(deString, is(oid));
     }
     
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
index cbabf43..fea8fa2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/oid/OidMarshallerTest_unmarshal.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.metamodel.adapter.oid;
 
-import org.junit.Before;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -55,22 +54,15 @@ import static org.hamcrest.MatcherAssert.assertThat;
  */
 public class OidMarshallerTest_unmarshal {
 
-    private _OidMarshaller oidMarshaller;
-
-    @Before
-    public void setUp() throws Exception {
-        oidMarshaller = _OidMarshaller.INSTANCE;
-    }
-
     @Test
     public void persistentRoot() {
         final String oidStr = "CUS:123";
 
-        final Oid oid = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid.getLogicalTypeName(), is("CUS"));
         assertThat(oid.getIdentifier(), is("123"));
 
-        final Oid oid2 = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid, equalTo(oid2));
     }
 
@@ -78,11 +70,11 @@ public class OidMarshallerTest_unmarshal {
     public void persistentRootWithFullyQualifiedSpecId() {
         final String oidStr = "com.planchase.ClassName:8";
 
-        final Oid oid = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid.getLogicalTypeName(), is("com.planchase.ClassName"));
         assertThat(oid.getIdentifier(), is("8"));
 
-        final Oid oid2 = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid, equalTo(oid2));
     }
 
@@ -99,20 +91,19 @@ public class OidMarshallerTest_unmarshal {
     public void transientRoot() {
         final String oidStr = "!CUS:123";
 
-        final Oid oid = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid.getLogicalTypeName(), is("CUS"));
         assertThat(oid.getIdentifier(), is("123"));
 
-        final Oid oid2 = oidMarshaller.unmarshal(oidStr, Oid.class);
+        final Oid oid2 = _OidMarshaller.unmarshal(oidStr, Oid.class);
         assertThat(oid, equalTo(oid2));
     }
 
 
     @Test(expected=IllegalArgumentException.class)
     public void badPattern() {
-        oidMarshaller.unmarshal("xxx", Oid.class);
+        _OidMarshaller.unmarshal("xxx", Oid.class);
     }
 
 
-
 }
diff --git a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
index bda6422..25b2a97 100644
--- a/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
+++ b/extensions/vw/fullcalendar/ui/src/main/java/org/apache/isis/extensions/fullcalendar/ui/component/FullCalendarWithEventHandling.java
@@ -61,7 +61,7 @@ final class FullCalendarWithEventHandling extends FullCalendar {
             final CalendarResponse response) {
 
         final String oidStr = (String) event.getEvent().getPayload();
-        final Oid oid = Oid.deString(oidStr);
+        final Oid oid = Oid.parse(oidStr);
 
         val commonContext = getCommonContext();
                 
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
index 1a84993..37ba0bf 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/IResourceContext.java
@@ -108,7 +108,7 @@ public interface IResourceContext {
 
     default Optional<ManagedObject> getObjectAdapterForOidFromHref(String oidFromHref) {
         String oidStrUnencoded = UrlDecoderUtils.urlDecode(oidFromHref);
-        val oid = Oid.deString(oidStrUnencoded);
+        val oid = Oid.parse(oidStrUnencoded);
         return oid.loadObject(getMetaModelContext());
     }
 
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
index a652114..bc68ed8 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/JsonParserHelper.java
@@ -151,7 +151,8 @@ public class JsonParserHelper {
         }
         String domainType = matcher.group(1);
         String instanceId = matcher.group(2);
-        return Oid.marshaller().joinAsOid(domainType, instanceId);
+        
+        return Oid.forLogicalTypeNameAndIdentifier(domainType, instanceId).enString();
     }
 
     private static String resourceFor(final ObjectSpecification objectSpec) {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
index 62e0263..7107222 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/ResourceAbstract.java
@@ -125,9 +125,8 @@ public abstract class ResourceAbstract {
 
     protected ManagedObject getObjectAdapterElseThrowNotFound(String domainType, final String instanceIdEncoded) {
         final String instanceIdUnencoded = UrlDecoderUtils.urlDecode(instanceIdEncoded);
-        final String oidStrUnencoded = Oid.marshaller().joinAsOid(domainType, instanceIdUnencoded);
-        val oid = Oid.deString(oidStrUnencoded);
-        
+
+        val oid = Oid.forLogicalTypeNameAndIdentifier(domainType, instanceIdUnencoded);
         return oid
                 .loadObject(metaModelContext)
                 .orElseThrow(()->RestfulObjectsApplicationException
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
index 4f313fa..869a82e 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
@@ -62,8 +62,8 @@ public class BookmarkTreeNode implements Serializable {
             final int depth) {
         pageParameters = bookmarkableModel.getPageParametersWithoutUiHints();
         Oid oid = oidFrom(pageParameters);
-        this.oidNoVerStr = Oid.marshaller().marshal(oid);
-        this.oidNoVer = Oid.unmarshaller().unmarshal(oidNoVerStr, Oid.class);
+        this.oidNoVerStr = oid.enString();
+        this.oidNoVer = Oid.parse(oidNoVerStr);
 
         // replace oid with the noVer equivalent.
         PageParameterNames.OBJECT_OID.removeFrom(pageParameters);
@@ -250,7 +250,7 @@ public class BookmarkTreeNode implements Serializable {
             return null;
         }
         try {
-            return Oid.unmarshaller().unmarshal(oidStr, Oid.class);
+            return Oid.parse(oidStr);
         } catch(Exception ex) {
             return null;
         }
@@ -258,7 +258,9 @@ public class BookmarkTreeNode implements Serializable {
 
     public static String oidStrFrom(BookmarkableModel candidateBookmarkableModel) {
         final Oid oid = oidFrom(candidateBookmarkableModel.getPageParametersWithoutUiHints());
-        return oid != null? Oid.marshaller().marshal(oid): null;
+        return oid != null
+                ? oid.enString()
+                : null;
     }
 
 }
\ No newline at end of file
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 63947ef..841d862 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -149,7 +149,7 @@ implements HasRenderingHints, ObjectAdapterModel, UiHintContainer, ObjectUiModel
     }
 
     private static Oid oidFrom(final PageParameters pageParameters) {
-        return Oid.unmarshaller().unmarshal(oidStr(pageParameters), Oid.class);
+        return Oid.parse(oidStr(pageParameters));
     }
 
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
index 5f5f60a..3661c44 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
@@ -200,7 +200,7 @@ public class PageParameterUtil {
 
     private static Oid oidFor(final PageParameters pageParameters) {
         final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
-        return Oid.unmarshaller().unmarshal(oidStr, Oid.class);
+        return Oid.parse(oidStr);
     }
 
     private static final String NULL_ARG = "$nullArg$";
@@ -232,7 +232,7 @@ public class PageParameterUtil {
         }
 
         try {
-            val oid = Oid.deStringEncoded(encoded);
+            val oid = Oid.parseEncoded(encoded);
             return oid.loadObject(mmc).orElse(null);
         } catch (final Exception e) {
             return null;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index af59403..87c8aa3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -102,7 +102,7 @@ public class BreadcrumbModel implements Serializable {
             return null;
         }
         try {
-            final Oid unmarshal = Oid.unmarshaller().unmarshal(oidStr, Oid.class);
+            final Oid unmarshal = Oid.parse(oidStr);
             return unmarshal.enString();
         } catch(Exception ex) {
             return null;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 21e90aa..1541ddd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -80,8 +80,8 @@ extends PanelAbstract<Void, IModel<Void>> {
                 try {
                     final PageParameters pageParameters = choice.getPageParametersWithoutUiHints();
                     final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
-                    final Oid result = Oid.deString(oidStr);
-                    return Oid.marshaller().marshal(result);
+                    final Oid resultOid = Oid.parse(oidStr);
+                    return resultOid.enString();
                 } catch (Exception ex) {
                     breadcrumbModel.remove(choice);
                     return null;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
index f487dbf..ee42a4f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/providers/ObjectAdapterMementoProviderAbstract.java
@@ -178,7 +178,7 @@ extends ChoiceProvider<ObjectMemento> {
         if(NULL_PLACEHOLDER.equals(id)) {
             return null;
         }
-        val oid = Oid.deString(id);
+        val oid = Oid.parse(id);
         return getCommonContext().mementoFor(oid);
     }
 
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
index f922234..d1c9b76 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapter.java
@@ -49,7 +49,7 @@ public class ConverterForObjectAdapter implements IConverter<ManagedObject> {
      */
     @Override
     public ManagedObject convertToObject(final String value, final Locale locale) {
-        val oid = Oid.deStringEncoded(value);
+        val oid = Oid.parseEncoded(value);
         val spec = objectManager.getMetaModelContext()
                 .getSpecificationLoader()
                 .specForLogicalTypeNameElseFail(oid.getLogicalTypeName());
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
index b3ec42d..2fe27f3 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/ConverterForObjectAdapterMemento.java
@@ -53,7 +53,7 @@ public class ConverterForObjectAdapterMemento implements IConverter<ObjectMement
         if (_Strings.isNullOrEmpty(value)) {
             return null;
         }
-        val oid = Oid.deStringEncoded(value);
+        val oid = Oid.parseEncoded(value);
         return commonContext.mementoFor(oid);
     }
 
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
index 343e010..fd52352 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoWkt.java
@@ -230,7 +230,7 @@ final class ObjectMementoWkt implements HasLogicalType, Serializable {
                             "need an id to lookup an object, got logical-type %s", memento.logicalType);
                 }
 
-                Oid oid = Oid.unmarshaller().unmarshal(memento.persistentOidStr, Oid.class);
+                Oid oid = Oid.parse(memento.persistentOidStr);
                 try {
 
                     log.debug("lookup by oid [{}]", oid);