This is an automated email from the ASF dual-hosted git repository.

danhaywood 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 904dc486ea master: ISIS-3101: changes signature of 
IdStringifier#destring - second param can be null, eg if used to reconstruct 
view model rather than an entity
904dc486ea is described below

commit 904dc486eabd4c8ffe2e052a6f27d4dc8c19c303
Author: Dan Haywood <[email protected]>
AuthorDate: Sun Jul 31 11:00:51 2022 +0100

    master: ISIS-3101: changes signature of IdStringifier#destring - second 
param can be null, eg if used to reconstruct view model rather than an entity
---
 .../isis/applib/services/bookmark/IdStringifier.java       | 14 ++++++++------
 .../bookmark/idstringifiers/IdStringifierForCharacter.java |  2 +-
 .../idstringifiers/IdStringifierForSerializable.java       |  2 +-
 .../bookmark/idstringifiers/IdStringifierForString.java    |  2 +-
 .../executionlog/jdo/dom/ExecutionLogEntryPK.java          |  2 +-
 .../executionlog/jpa/dom/ExecutionLogEntryPK.java          |  2 +-
 .../executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java    |  2 +-
 .../executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java    |  2 +-
 .../metamodel/facets/entity/IdStringifierForCharId.java    |  6 +++---
 .../facets/entity/IdStringifierForCharIdentity.java        |  6 +++---
 .../facets/entity/IdStringifierForDatastoreId.java         |  2 +-
 .../facets/entity/IdStringifierForDatastoreIdImpl.java     |  4 ++--
 .../entity/IdStringifierForDatastoreUniqueLongId.java      |  2 +-
 .../metamodel/facets/entity/IdStringifierForObjectId.java  |  8 ++++----
 .../facets/entity/IdStringifierForObjectIdentity.java      |  8 ++++----
 .../metamodel/facets/entity/IdStringifierForStringId.java  |  6 +++---
 .../facets/entity/IdStringifierForStringIdentity.java      |  6 +++---
 17 files changed, 39 insertions(+), 37 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
index a516cccc83..50074aac9b 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
@@ -75,11 +75,13 @@ public interface IdStringifier<T> {
      * that can be used to retrieve.
      *
      * @param stringified - as returned by {@link #enstring(Object)}
-     * @param targetEntityClass - the class of the target entity, eg 
<code>Customer</code>.  For both JDO and JPA,
-     *                            we always have this information available, 
and is needed (at least) by the JDO
-     *                            implementations of application primary keys 
using built-ins, eg <code>LongIdentity</code>.
+     * @param targetEntityClassIfAny - the class of the target entity, eg 
<code>Customer</code>.  For both JDO and JPA,
+     *                                 we always have this information 
available, and is needed (at least) by the JDO
+     *                                 implementations of application primary 
keys using built-ins, eg <code>LongIdentity</code>.
+     *                                 For Bookmarks of view models, there 
won't be any targetEntityClass, so this parameter
+     *                                 could be null.
      */
-    T destring(@NonNull String stringified, @NonNull Class<?> 
targetEntityClass);
+    T destring(@NonNull String stringified, Class<?> targetEntityClassIfAny);
 
     abstract class Abstract<T> implements IdStringifier<T> {
 
@@ -146,9 +148,9 @@ public interface IdStringifier<T> {
         @Override
         public final T destring(
                 final @NonNull String stringified,
-                final @NonNull Class<?> targetEntityClass) {
+                final Class<?> targetEntityClassIfAny) {
             val suffix = removePrefix(stringified);
-            return doDestring(suffix, targetEntityClass);
+            return doDestring(suffix, targetEntityClassIfAny);
         }
 
         /**
diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
index 80eb05b834..0cfb3b7901 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
@@ -62,7 +62,7 @@ public class IdStringifierForCharacter extends 
IdStringifier.Abstract<Character>
     @Override
     public Character destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         if(stringified.startsWith(REGULAR_PREFIX)) {
             return stringified.substring(REGULAR_PREFIX.length()).charAt(0);
         }
diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForSerializable.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForSerializable.java
index a7d31638ee..8f0646d64d 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForSerializable.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForSerializable.java
@@ -79,7 +79,7 @@ public class IdStringifierForSerializable extends 
IdStringifier.Abstract<Seriali
     @Override
     public Serializable destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         if (_Strings.isEmpty(stringified)) {
             return null;
         }
diff --git 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForString.java
 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForString.java
index 66774f9193..2796e5b109 100644
--- 
a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForString.java
+++ 
b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForString.java
@@ -61,7 +61,7 @@ public class IdStringifierForString extends 
IdStringifier.Abstract<String> {
     @Override
     public String destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         if(stringified.startsWith(REGULAR_PREFIX)) {
             return stringified.substring(REGULAR_PREFIX.length());
         }
diff --git 
a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java
 
b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java
index 427cac1586..52393b37b2 100644
--- 
a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java
+++ 
b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntryPK.java
@@ -72,7 +72,7 @@ public class ExecutionLogEntryPK implements Serializable {
         @Override
         public ExecutionLogEntryPK destring(
                 final @NonNull String stringified,
-                final @NonNull Class<?> targetEntityClass) {
+                final Class<?> targetEntityClassIfAny) {
             return new ExecutionLogEntryPK(stringified);
         }
     }
diff --git 
a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java
 
b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java
index 15c2e3c412..f948781794 100644
--- 
a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java
+++ 
b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntryPK.java
@@ -84,7 +84,7 @@ public class ExecutionLogEntryPK implements Serializable {
         @Override
         public ExecutionLogEntryPK destring(
                 final @NonNull String stringified,
-                final @NonNull Class<?> targetEntityClass) {
+                final Class<?> targetEntityClassIfAny) {
             return new ExecutionLogEntryPK(stringified);
         }
     }
diff --git 
a/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/isis/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java
 
b/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/isis/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java
index e9a367c9b2..855da96b67 100644
--- 
a/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/isis/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java
+++ 
b/extensions/core/executionoutbox/persistence-jdo/src/main/java/org/apache/isis/extensions/executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java
@@ -72,7 +72,7 @@ public class ExecutionOutboxEntryPK implements Serializable {
         @Override
         public ExecutionOutboxEntryPK destring(
                 final @NonNull String stringified,
-                final @NonNull Class<?> targetEntityClass) {
+                final Class<?> targetEntityClassIfAny) {
             return new ExecutionOutboxEntryPK(stringified);
         }
     }
diff --git 
a/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/isis/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java
 
b/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/isis/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java
index 398657596f..7c289d4157 100644
--- 
a/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/isis/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java
+++ 
b/extensions/core/executionoutbox/persistence-jpa/src/main/java/org/apache/isis/extensions/executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java
@@ -84,7 +84,7 @@ public class ExecutionOutboxEntryPK implements Serializable {
         @Override
         public ExecutionOutboxEntryPK destring(
                 final @NonNull String stringified,
-                final @NonNull Class<?> targetEntityClass) {
+                final Class<?> targetEntityClassIfAny) {
             return new ExecutionOutboxEntryPK(stringified);
         }
     }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharId.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharId.java
index 5a1b8c1fe8..14d9062bb9 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharId.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharId.java
@@ -59,8 +59,8 @@ public class IdStringifierForCharId extends 
IdStringifier.Abstract<CharId> {
     @Override
     public CharId destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
-        val idValue = idStringifierForCharacter.destring(stringified, 
targetEntityClass);
-        return new CharId(targetEntityClass, idValue);
+            final Class<?> targetEntityClassIfAny) {
+        val idValue = idStringifierForCharacter.destring(stringified, 
targetEntityClassIfAny);
+        return new CharId(targetEntityClassIfAny, idValue);
     }
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharIdentity.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharIdentity.java
index 095830df77..2bdf7e0d9b 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharIdentity.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForCharIdentity.java
@@ -59,8 +59,8 @@ public class IdStringifierForCharIdentity extends 
IdStringifier.Abstract<CharIde
     @Override
     public CharIdentity destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
-        val idValue = idStringifierForCharacter.destring(stringified, 
targetEntityClass);
-        return new CharIdentity(targetEntityClass, idValue);
+            final Class<?> targetEntityClassIfAny) {
+        val idValue = idStringifierForCharacter.destring(stringified, 
targetEntityClassIfAny);
+        return new CharIdentity(targetEntityClassIfAny, idValue);
     }
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreId.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreId.java
index 628998c2fd..bc54955156 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreId.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreId.java
@@ -56,7 +56,7 @@ public class IdStringifierForDatastoreId extends 
IdStringifier.Abstract<Datastor
     @Override
     public DatastoreId destring(
             final @NonNull String stringified,
-            final @Nullable Class<?> targetEntityClass) {
+            final @Nullable Class<?> targetEntityClassIfAny) {
         int idx = stringified.indexOf(SEPARATOR);
         String clsName = stringified.substring(0, idx);
         String keyStr = stringified.substring(idx + 1);
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreIdImpl.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreIdImpl.java
index de6449efd9..c341c3842f 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreIdImpl.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreIdImpl.java
@@ -49,9 +49,9 @@ public class IdStringifierForDatastoreIdImpl extends 
IdStringifier.Abstract<Data
     @Override
     public DatastoreIdImpl destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         // enString invoked toString() on the original key; invoking 
toString() on its stringified form does not change it
-        val proto = new DatastoreIdImpl(targetEntityClass.getName(), 
stringified);
+        val proto = new DatastoreIdImpl(targetEntityClassIfAny.getName(), 
stringified);
         // now render in the form that the DataStoreImpl constructor expects; 
it will take it apart itself.
         val str = proto.toString();
         return new DatastoreIdImpl(str);
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreUniqueLongId.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreUniqueLongId.java
index b56d1a6ed2..193146c586 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreUniqueLongId.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForDatastoreUniqueLongId.java
@@ -47,7 +47,7 @@ public class IdStringifierForDatastoreUniqueLongId extends 
IdStringifier.Abstrac
     @Override
     public DatastoreUniqueLongId destring(
             final @NonNull String stringified,
-            final @Nullable Class<?> targetEntityClass) {
+            final @Nullable Class<?> targetEntityClassIfAny) {
         return new DatastoreUniqueLongId(stringified);
     }
 
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectId.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectId.java
index 07319b83b9..e3d122019c 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectId.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectId.java
@@ -68,11 +68,11 @@ public class IdStringifierForObjectId extends 
IdStringifier.Abstract<ObjectId> {
     @Override
     public ObjectId destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         if (idStringifierForUuid.recognizes(stringified)) {
-            UUID uuid = idStringifierForUuid.destring(stringified, 
targetEntityClass);
-            return new ObjectId(targetEntityClass, uuid);
+            UUID uuid = idStringifierForUuid.destring(stringified, 
targetEntityClassIfAny);
+            return new ObjectId(targetEntityClassIfAny, uuid);
         }
-        return new ObjectId(targetEntityClass, stringified);
+        return new ObjectId(targetEntityClassIfAny, stringified);
     }
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectIdentity.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectIdentity.java
index 01dd261733..a27c9f0668 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectIdentity.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForObjectIdentity.java
@@ -68,11 +68,11 @@ public class IdStringifierForObjectIdentity extends 
IdStringifier.Abstract<Objec
     @Override
     public ObjectIdentity destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
+            final Class<?> targetEntityClassIfAny) {
         if (idStringifierForUuid.recognizes(stringified)) {
-            UUID uuid = idStringifierForUuid.destring(stringified, 
targetEntityClass);
-            return new ObjectIdentity(targetEntityClass, uuid);
+            UUID uuid = idStringifierForUuid.destring(stringified, 
targetEntityClassIfAny);
+            return new ObjectIdentity(targetEntityClassIfAny, uuid);
         }
-        return new ObjectIdentity(targetEntityClass, stringified);
+        return new ObjectIdentity(targetEntityClassIfAny, stringified);
     }
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringId.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringId.java
index 83046b1b45..620d7338c2 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringId.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringId.java
@@ -59,8 +59,8 @@ public class IdStringifierForStringId extends 
IdStringifier.Abstract<StringIdent
     @Override
     public StringIdentity destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
-        val idValue = idStringifierForString.destring(stringified, 
targetEntityClass);
-        return new StringIdentity(targetEntityClass, idValue);
+            final Class<?> targetEntityClassIfAny) {
+        val idValue = idStringifierForString.destring(stringified, 
targetEntityClassIfAny);
+        return new StringIdentity(targetEntityClassIfAny, idValue);
     }
 }
diff --git 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringIdentity.java
 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringIdentity.java
index e5a759d856..7da2115316 100644
--- 
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringIdentity.java
+++ 
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/IdStringifierForStringIdentity.java
@@ -59,8 +59,8 @@ public class IdStringifierForStringIdentity extends 
IdStringifier.Abstract<Strin
     @Override
     public StringIdentity destring(
             final @NonNull String stringified,
-            final @NonNull Class<?> targetEntityClass) {
-        val idValue = idStringifierForString.destring(stringified, 
targetEntityClass);
-        return new StringIdentity(targetEntityClass, idValue);
+            final Class<?> targetEntityClassIfAny) {
+        val idValue = idStringifierForString.destring(stringified, 
targetEntityClassIfAny);
+        return new StringIdentity(targetEntityClassIfAny, idValue);
     }
 }

Reply via email to