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