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 b1feef0659 ISIS-3115: enforces IdStringifierForSerializable to go last
b1feef0659 is described below

commit b1feef065928ec47d5cb3f62ef412875c266edb6
Author: Andi Huber <[email protected]>
AuthorDate: Tue Aug 9 09:52:49 2022 +0200

    ISIS-3115: enforces IdStringifierForSerializable to go last
    
    - so any custom IdStringifier(s), that do not explicitly specify an
    @Order/@Precedence go earlier
---
 .../idstringifiers/IdStringifierForSerializable.java       |  2 +-
 .../runtime/idstringifier/IdStringifierLookupService.java  | 14 ++++++++++----
 .../extensions/commandlog/jpa/dom/CommandLogEntryPK.java   |  8 +++++---
 .../executionlog/jdo/dom/ExecutionLogEntryPK.java          |  4 ++++
 .../executionlog/jpa/dom/ExecutionLogEntryPK.java          |  3 +++
 .../executionoutbox/jdo/dom/ExecutionOutboxEntryPK.java    |  4 ++++
 .../executionoutbox/jpa/dom/ExecutionOutboxEntryPK.java    |  3 +++
 .../extensions/sessionlog/jpa/dom/SessionLogEntryPK.java   |  9 ++++++---
 8 files changed, 36 insertions(+), 11 deletions(-)

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 889a5e2f2f..a1507facc9 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
@@ -35,7 +35,7 @@ import 
org.apache.isis.commons.internal.resources._Serializables;
 import lombok.NonNull;
 
 @Component
-@Priority(PriorityPrecedence.LATE + 50) // after more specific stringifiers
+@Priority(PriorityPrecedence.LAST) // goes last - is also enforced by 
IdStringifierLookupService programmatically
 public class IdStringifierForSerializable extends 
IdStringifier.Abstract<Serializable> {
 
     private final UrlEncodingService codec;
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
index 8fef47c3cf..dcde5b425c 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/idstringifier/IdStringifierLookupService.java
@@ -61,10 +61,16 @@ public class IdStringifierLookupService {
     private final Map<Class<?>, IdStringifier<?>> stringifierByClass = new 
ConcurrentHashMap<>();
 
     @Inject
-    public IdStringifierLookupService(final List<IdStringifier<?>> 
idStringifiers, final IdStringifierForSerializable x) {
-        //FIXME[ISIS-3115] remove this hotfix
-        
idStringifiers.removeIf(s->IdStringifierForSerializable.class.equals(s.getClass()));
-        idStringifiers.add(x); // put last
+    public IdStringifierLookupService(
+            final List<IdStringifier<?>> idStringifiers,
+            final Optional<IdStringifierForSerializable> 
idStringifierForSerializableIfAny) {
+        // IdStringifierForSerializable is enforced to go last, so any custom 
IdStringifier(s)
+        // that do not explicitly specify an @Order/@Precedence go earlier
+        idStringifierForSerializableIfAny
+        .ifPresent(idStringifierForSerializable->{
+            
idStringifiers.removeIf(idStringifier->IdStringifierForSerializable.class.equals(idStringifier.getClass()));
+            idStringifiers.add(idStringifierForSerializable); // put last
+        });
         this.idStringifiers = Can.ofCollection(idStringifiers);
     }
 
diff --git 
a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK.java
 
b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK.java
index 2b979e88bd..d3d2667e3f 100644
--- 
a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK.java
+++ 
b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK.java
@@ -17,18 +17,19 @@
  * under the License.
  *
  */
-
 package org.apache.isis.extensions.commandlog.jpa.dom;
 
 import java.io.Serializable;
 import java.util.UUID;
 
+import javax.annotation.Priority;
 import javax.persistence.Column;
 import javax.persistence.Convert;
 import javax.persistence.Embeddable;
 
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 import org.apache.isis.extensions.commandlog.applib.dom.CommandLogEntry;
 import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
@@ -60,6 +61,7 @@ public class CommandLogEntryPK implements Serializable {
 
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<CommandLogEntryPK> {
 
         public Stringifier() {
@@ -67,12 +69,12 @@ public class CommandLogEntryPK implements Serializable {
         }
 
         @Override
-        public String enstring(CommandLogEntryPK value) {
+        public String enstring(final CommandLogEntryPK value) {
             return value.getInteractionId().toString();
         }
 
         @Override
-        public CommandLogEntryPK destring(@NonNull String stringified, 
@NonNull Class<?> targetEntityClass) {
+        public CommandLogEntryPK destring(@NonNull final String stringified, 
@NonNull final Class<?> targetEntityClass) {
             return new CommandLogEntryPK(UUID.fromString(stringified));
         }
     }
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..1cb39e0ad0 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
@@ -22,8 +22,11 @@ import java.io.Serializable;
 import java.util.StringTokenizer;
 import java.util.UUID;
 
+import javax.annotation.Priority;
+
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 
 import lombok.EqualsAndHashCode;
@@ -58,6 +61,7 @@ public class ExecutionLogEntryPK implements Serializable {
     }
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<ExecutionLogEntryPK> {
 
         public Stringifier() {
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..d7d7eb56b5 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
@@ -22,12 +22,14 @@ import java.io.Serializable;
 import java.util.StringTokenizer;
 import java.util.UUID;
 
+import javax.annotation.Priority;
 import javax.persistence.Column;
 import javax.persistence.Convert;
 import javax.persistence.Embeddable;
 
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
 
@@ -70,6 +72,7 @@ public class ExecutionLogEntryPK implements Serializable {
     }
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<ExecutionLogEntryPK> {
 
         public Stringifier() {
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..662c67452b 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
@@ -22,8 +22,11 @@ import java.io.Serializable;
 import java.util.StringTokenizer;
 import java.util.UUID;
 
+import javax.annotation.Priority;
+
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 
 import lombok.EqualsAndHashCode;
@@ -58,6 +61,7 @@ public class ExecutionOutboxEntryPK implements Serializable {
     }
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<ExecutionOutboxEntryPK> {
 
         public Stringifier() {
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..98f854f364 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
@@ -22,12 +22,14 @@ import java.io.Serializable;
 import java.util.StringTokenizer;
 import java.util.UUID;
 
+import javax.annotation.Priority;
 import javax.persistence.Column;
 import javax.persistence.Convert;
 import javax.persistence.Embeddable;
 
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
 
@@ -70,6 +72,7 @@ public class ExecutionOutboxEntryPK implements Serializable {
     }
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<ExecutionOutboxEntryPK> {
 
         public Stringifier() {
diff --git 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java
 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java
index 7512d6b86e..f9c1e1cc94 100644
--- 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java
+++ 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/sessionlog/jpa/dom/SessionLogEntryPK.java
@@ -23,15 +23,17 @@ package org.apache.isis.extensions.sessionlog.jpa.dom;
 import java.io.Serializable;
 import java.util.UUID;
 
+import javax.annotation.Priority;
 import javax.persistence.Column;
 import javax.persistence.Convert;
 import javax.persistence.Embeddable;
 
 import org.springframework.stereotype.Component;
 
+import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
-import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
 import org.apache.isis.extensions.sessionlog.applib.dom.SessionLogEntry;
+import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
 
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
@@ -60,6 +62,7 @@ public class SessionLogEntryPK implements Serializable {
 
 
     @Component
+    @Priority(PriorityPrecedence.MIDPOINT)
     public static class Stringifier extends 
IdStringifier.Abstract<SessionLogEntryPK> {
 
         public Stringifier() {
@@ -67,12 +70,12 @@ public class SessionLogEntryPK implements Serializable {
         }
 
         @Override
-        public String enstring(SessionLogEntryPK value) {
+        public String enstring(final SessionLogEntryPK value) {
             return value.getSessionGuid().toString();
         }
 
         @Override
-        public SessionLogEntryPK destring(@NonNull String stringified, 
@NonNull Class<?> targetEntityClass) {
+        public SessionLogEntryPK destring(@NonNull final String stringified, 
@NonNull final Class<?> targetEntityClass) {
             return new SessionLogEntryPK(UUID.fromString(stringified));
         }
     }

Reply via email to