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 534d4ae12e ISIS-3119: simplifies IdStringifier interface
534d4ae12e is described below
commit 534d4ae12eb05e5b5352f06b6d8ffaaec52e2785
Author: Andi Huber <[email protected]>
AuthorDate: Thu Aug 11 12:33:34 2022 +0200
ISIS-3119: simplifies IdStringifier interface
---
.../applib/services/bookmark/IdStringifier.java | 27 +++++++++++++++++-----
.../ValueSemanticsBasedOnIdStringifier.java | 9 --------
.../valuesemantics/BigDecimalValueSemantics.java | 3 +--
.../valuesemantics/BigIntegerValueSemantics.java | 3 +--
.../valuesemantics/ByteValueSemantics.java | 3 +--
.../valuesemantics/CharacterValueSemantics.java | 3 +--
.../valuesemantics/IntValueSemantics.java | 3 +--
.../valuesemantics/LongValueSemantics.java | 3 +--
.../valuesemantics/SerializableValueSemantics.java | 2 +-
.../valuesemantics/ShortValueSemantics.java | 3 +--
.../valuesemantics/StringValueSemantics.java | 3 +--
.../valuesemantics/UUIDValueSemantics.java | 2 +-
.../IdStringifierForBigDecimal_Test.java | 4 +---
.../IdStringifierForBigInteger_Test.java | 4 +---
.../valuesemantics/IdStringifierForByte_Test.java | 4 +---
.../IdStringifierForByte_primitive_Test.java | 4 +---
.../IdStringifierForCharacter_Test.java | 4 +---
.../IdStringifierForInteger_Test.java | 4 +---
.../IdStringifierForInteger_primitive_Test.java | 4 +---
.../valuesemantics/IdStringifierForLong_Test.java | 4 +---
.../IdStringifierForLong_primitive_Test.java | 4 +---
.../IdStringifierForSerializable_Test.java | 5 +---
.../valuesemantics/IdStringifierForShort_Test.java | 4 +---
.../IdStringifierForShort_primitive_Test.java | 4 +---
.../IdStringifierForString_Test.java | 4 +---
.../valuesemantics/IdStringifierForUuid_Test.java | 4 +---
.../commandlog/jpa/dom/CommandLogEntryPK.java | 2 +-
.../dom/CommandLogEntryPK_Stringifier_Test.java | 4 +---
.../facets/entity/IdStringifierForCharId.java | 2 +-
.../entity/IdStringifierForCharIdentity.java | 2 +-
.../facets/entity/IdStringifierForStringId.java | 2 +-
.../entity/IdStringifierForStringIdentity.java | 2 +-
.../metamodel/facets/entity/JdoEntityFacet.java | 13 ++++++-----
.../jpa/integration/entity/JpaEntityFacet.java | 11 +++++----
34 files changed, 65 insertions(+), 94 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 7ecc3699c4..04c8e96033 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
@@ -23,6 +23,7 @@ package org.apache.isis.applib.services.bookmark;
import org.springframework.util.ClassUtils;
import org.apache.isis.commons.internal.assertions._Assert;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
import lombok.Getter;
import lombok.NonNull;
@@ -63,17 +64,17 @@ public interface IdStringifier<T> {
// *
// * @param candidateValueClass
// */
+ @Deprecated
default boolean handles(final @NonNull Class<?> candidateValueClass) {
return getCorrespondingClass()
.isAssignableFrom(ClassUtils.resolvePrimitiveIfNecessary(candidateValueClass));
}
-
/**
* Convert the value (which will be of the same type as is {@link
#handles(Class) handled} into a string
* representation.
*
- * @see #destring(String, Class)
+ * @see #destring(String)
* @see #handles(Class)
*/
String enstring(@NonNull T value);
@@ -83,11 +84,8 @@ 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>.
*/
- T destring(@NonNull String stringified, @NonNull Class<?>
targetEntityClass);
+ T destring(@NonNull String stringified);
abstract class Abstract<T> implements IdStringifier<T> {
@@ -107,6 +105,7 @@ public interface IdStringifier<T> {
this.correspondingClass = correspondingClass;
}
+ @Deprecated
@Override
public final boolean handles(final @NonNull Class<?>
candidateValueClass) {
return getCorrespondingClass()
@@ -122,6 +121,22 @@ public interface IdStringifier<T> {
return value.toString();
}
+ /**
+ * Convert a string representation of the identifier (as returned by
{@link #enstring(Object)}) into an object
+ * 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>.
+ */
+ public abstract T destring(@NonNull String stringified, @NonNull
Class<?> targetEntityClass);
+
+ @Override
+ public final T destring(@NonNull final String stringified) {
+ throw _Exceptions.unsupportedOperation();
+ }
+
}
/**
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
index 6a07f027dc..0ebaf7772f 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifier.java
@@ -63,11 +63,6 @@ implements
return value.toString();
}
- @Override
- public final T destring(@NonNull final String stringified, @NonNull final
Class<?> targetEntityClass) {
- return destring(stringified);
- }
-
// -- COMPOSER
@Override
@@ -80,8 +75,4 @@ implements
return composeFromString(decomposition, this::destring, ()->null);
}
- // --
-
- protected abstract T destring(@NonNull String stringified);
-
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index d4c4b13495..6b0af5ff2e 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -97,8 +97,7 @@ implements
@Override
public BigDecimal destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return new BigDecimal(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
index e93648d9a2..10dfbb6e13 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
@@ -99,8 +99,7 @@ implements
@Override
public BigInteger destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return new BigInteger(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
index be758b969c..3321e23ce5 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ByteValueSemantics.java
@@ -93,8 +93,7 @@ implements
@Override
public Byte destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return Byte.parseByte(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
index ba5366247c..68b2f0808c 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/CharacterValueSemantics.java
@@ -112,8 +112,7 @@ implements
@Override
public Character destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
if(stringified.startsWith(REGULAR_PREFIX)) {
return stringified.substring(REGULAR_PREFIX.length()).charAt(0);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
index 1e52d8dc26..5767b375dc 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/IntValueSemantics.java
@@ -93,8 +93,7 @@ implements
@Override
public Integer destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return Integer.parseInt(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
index 31d9e60c5a..2499a680a1 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/LongValueSemantics.java
@@ -93,8 +93,7 @@ implements
@Override
public Long destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return Long.parseLong(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/SerializableValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/SerializableValueSemantics.java
index 252a5c9fd0..19c85d2202 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/SerializableValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/SerializableValueSemantics.java
@@ -77,7 +77,7 @@ extends ValueSemanticsBasedOnIdStringifier<Serializable> {
// -- HELPER
@Override
- protected Serializable destring(
+ public Serializable destring(
@NonNull final String stringified) {
return destringAs(stringified, Serializable.class);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
index c5071c822d..065e884076 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/ShortValueSemantics.java
@@ -93,8 +93,7 @@ implements
@Override
public Short destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
return Short.parseShort(stringified);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
index 9021cd8787..7a1e709dbc 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/StringValueSemantics.java
@@ -88,8 +88,7 @@ implements
@Override
public String destring(
- final @NonNull String stringified,
- final @NonNull Class<?> targetEntityClass) {
+ final @NonNull String stringified) {
if(stringified.startsWith(REGULAR_PREFIX)) {
return stringified.substring(REGULAR_PREFIX.length());
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
index 75563c08cb..5a57dcd907 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
@@ -79,7 +79,7 @@ implements
}
@Override
- public UUID destring(final @NonNull String stringified, @NonNull final
Class<?> targetEntityClass) {
+ public UUID destring(final @NonNull String stringified) {
return UUID.fromString(stringified);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigDecimal_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigDecimal_Test.java
index 22e6594b6b..6d5c85d480 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigDecimal_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigDecimal_Test.java
@@ -50,8 +50,6 @@ class IdStringifierForBigDecimal_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final BigDecimal bigDecimal) {
@@ -59,7 +57,7 @@ class IdStringifierForBigDecimal_Test {
val stringifier = new BigDecimalValueSemantics();
String stringified = stringifier.enstring(bigDecimal);
- BigDecimal parse = stringifier.destring(stringified, Customer.class);
+ BigDecimal parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(bigDecimal);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigInteger_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigInteger_Test.java
index 20ce00e7e7..30bfbce5c0 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigInteger_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForBigInteger_Test.java
@@ -47,8 +47,6 @@ class IdStringifierForBigInteger_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final BigInteger bigInteger) {
@@ -56,7 +54,7 @@ class IdStringifierForBigInteger_Test {
val stringifier = new BigIntegerValueSemantics();
String stringified = stringifier.enstring(bigInteger);
- BigInteger parse = stringifier.destring(stringified, Customer.class);
+ BigInteger parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(bigInteger);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_Test.java
index f7424b1a43..e1faa37321 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_Test.java
@@ -42,8 +42,6 @@ class IdStringifierForByte_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final Byte value) {
@@ -51,7 +49,7 @@ class IdStringifierForByte_Test {
val stringifier = new ByteValueSemantics();
String stringified = stringifier.enstring(value);
- Byte parse = stringifier.destring(stringified, Customer.class);
+ Byte parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_primitive_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_primitive_Test.java
index e3430968bd..7e742d9c57 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_primitive_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForByte_primitive_Test.java
@@ -43,8 +43,6 @@ class IdStringifierForByte_primitive_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final byte value) {
@@ -52,7 +50,7 @@ class IdStringifierForByte_primitive_Test {
val stringifier = new ByteValueSemantics();
String stringified = stringifier.enstring(value);
- Byte parse = stringifier.destring(stringified, Customer.class);
+ Byte parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForCharacter_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForCharacter_Test.java
index ea42a09394..3848302928 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForCharacter_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForCharacter_Test.java
@@ -57,8 +57,6 @@ class IdStringifierForCharacter_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final char value) {
@@ -66,7 +64,7 @@ class IdStringifierForCharacter_Test {
val stringifier = new CharacterValueSemantics();
val stringified = stringifier.enstring(value);
- val parse = stringifier.destring(stringified, Customer.class);
+ val parse = stringifier.destring(stringified);
Assertions.assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_Test.java
index 6329c3cf4f..ee2cd66029 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_Test.java
@@ -43,8 +43,6 @@ class IdStringifierForInteger_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final Integer value) {
@@ -52,7 +50,7 @@ class IdStringifierForInteger_Test {
val stringifier = new IntValueSemantics();
String stringified = stringifier.enstring(value);
- Integer parse = stringifier.destring(stringified, Customer.class);
+ Integer parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_primitive_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_primitive_Test.java
index 1eb6aa1696..fe15d53e28 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_primitive_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForInteger_primitive_Test.java
@@ -42,8 +42,6 @@ class IdStringifierForInteger_primitive_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final int value) {
@@ -51,7 +49,7 @@ class IdStringifierForInteger_primitive_Test {
val stringifier = new IntValueSemantics();
String stringified = stringifier.enstring(value);
- Integer parse = stringifier.destring(stringified, Customer.class);
+ Integer parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_Test.java
index 628f854b48..350d2a90cc 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_Test.java
@@ -42,8 +42,6 @@ class IdStringifierForLong_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final Long value) {
@@ -51,7 +49,7 @@ class IdStringifierForLong_Test {
val stringifier = new LongValueSemantics();
String stringified = stringifier.enstring(value);
- Long parse = stringifier.destring(stringified, Customer.class);
+ Long parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_primitive_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_primitive_Test.java
index 6d64e88e31..bae004145e 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_primitive_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForLong_primitive_Test.java
@@ -43,8 +43,6 @@ class IdStringifierForLong_primitive_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final long value) {
@@ -52,7 +50,7 @@ class IdStringifierForLong_primitive_Test {
val stringifier = new LongValueSemantics();
String stringified = stringifier.enstring(value);
- Long parse = stringifier.destring(stringified, Customer.class);
+ Long parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForSerializable_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForSerializable_Test.java
index 646fe680ff..b62c780834 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForSerializable_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForSerializable_Test.java
@@ -40,9 +40,6 @@ class IdStringifierForSerializable_Test {
// -- SCENARIO
- static class Customer {
- }
-
@Value
static class CustomerPK implements Serializable{
private static final long serialVersionUID = 1L;
@@ -71,7 +68,7 @@ class IdStringifierForSerializable_Test {
val stringifier = new SerializableValueSemantics(codec);
String stringified = stringifier.enstring(value);
- Serializable parse = stringifier.destring(stringified, Customer.class);
+ Serializable parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_Test.java
index 27d8907785..a68ed23389 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_Test.java
@@ -42,8 +42,6 @@ class IdStringifierForShort_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final Short value) {
@@ -51,7 +49,7 @@ class IdStringifierForShort_Test {
val stringifier = new ShortValueSemantics();
String stringified = stringifier.enstring(value);
- Short parse = stringifier.destring(stringified, Customer.class);
+ Short parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_primitive_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_primitive_Test.java
index 9ad428493c..c10552c669 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_primitive_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForShort_primitive_Test.java
@@ -42,8 +42,6 @@ class IdStringifierForShort_primitive_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final short value) {
@@ -51,7 +49,7 @@ class IdStringifierForShort_primitive_Test {
val stringifier = new ShortValueSemantics();
String stringified = stringifier.enstring(value);
- Short parse = stringifier.destring(stringified, Customer.class);
+ Short parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForString_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForString_Test.java
index be2a222542..cdb7e53d8f 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForString_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForString_Test.java
@@ -47,8 +47,6 @@ class IdStringifierForString_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final String value) {
@@ -56,7 +54,7 @@ class IdStringifierForString_Test {
val stringifier = new StringValueSemantics();
val stringified = stringifier.enstring(value);
- val parse = stringifier.destring(stringified, Customer.class);
+ val parse = stringifier.destring(stringified);
Assertions.assertThat(parse).isEqualTo(value);
}
diff --git
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForUuid_Test.java
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForUuid_Test.java
index 72b57bfa35..9aad689fa4 100644
---
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForUuid_Test.java
+++
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/valuesemantics/IdStringifierForUuid_Test.java
@@ -41,8 +41,6 @@ class IdStringifierForUuid_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final UUID value) {
@@ -50,7 +48,7 @@ class IdStringifierForUuid_Test {
val stringifier = new UUIDValueSemantics();
String stringified = stringifier.enstring(value);
- UUID parse = stringifier.destring(stringified, Customer.class);
+ UUID parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
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 0e8a8c0ae2..049e5f634d 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
@@ -77,7 +77,7 @@ public class CommandLogEntryPK implements Serializable {
}
@Override
- protected CommandLogEntryPK destring(
+ public CommandLogEntryPK destring(
@NonNull final String stringified) {
return new CommandLogEntryPK(UUID.fromString(stringified));
}
diff --git
a/extensions/core/commandlog/persistence-jpa/src/test/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK_Stringifier_Test.java
b/extensions/core/commandlog/persistence-jpa/src/test/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK_Stringifier_Test.java
index 31a2fc76f3..b9aa8c8b55 100644
---
a/extensions/core/commandlog/persistence-jpa/src/test/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK_Stringifier_Test.java
+++
b/extensions/core/commandlog/persistence-jpa/src/test/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntryPK_Stringifier_Test.java
@@ -41,8 +41,6 @@ class CommandLogEntryPK_Stringifier_Test {
);
}
- static class Customer {}
-
@ParameterizedTest
@MethodSource()
void roundtrip(final UUID uuid) {
@@ -51,7 +49,7 @@ class CommandLogEntryPK_Stringifier_Test {
val stringifier = new CommandLogEntryPK.Semantics();
String stringified = stringifier.enstring(value);
- val parse = stringifier.destring(stringified, Customer.class);
+ val parse = stringifier.destring(stringified);
assertThat(parse).isEqualTo(value);
}
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 00797bb422..9835a2641f 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,7 +59,7 @@ public class IdStringifierForCharId extends
IdStringifier.Abstract<CharId> {
public CharId destring(
final @NonNull String stringified,
final @NonNull Class<?> targetEntityClass) {
- val idValue = idStringifierForCharacter.destring(stringified,
targetEntityClass);
+ val idValue = idStringifierForCharacter.destring(stringified);
return new CharId(targetEntityClass, 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 5e27490c2b..3ce97b71b6 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,7 +59,7 @@ public class IdStringifierForCharIdentity extends
IdStringifier.Abstract<CharIde
public CharIdentity destring(
final @NonNull String stringified,
final @NonNull Class<?> targetEntityClass) {
- val idValue = idStringifierForCharacter.destring(stringified,
targetEntityClass);
+ val idValue = idStringifierForCharacter.destring(stringified);
return new CharIdentity(targetEntityClass, idValue);
}
}
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 ffd4e4e94e..cfcd09b637 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,7 +59,7 @@ public class IdStringifierForStringId extends
IdStringifier.Abstract<StringIdent
public StringIdentity destring(
final @NonNull String stringified,
final @NonNull Class<?> targetEntityClass) {
- val idValue = idStringifierForString.destring(stringified,
targetEntityClass);
+ val idValue = idStringifierForString.destring(stringified);
return new StringIdentity(targetEntityClass, 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 0f5c604840..b10991ae3a 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,7 +59,7 @@ public class IdStringifierForStringIdentity extends
IdStringifier.Abstract<Strin
public StringIdentity destring(
final @NonNull String stringified,
final @NonNull Class<?> targetEntityClass) {
- val idValue = idStringifierForString.destring(stringified,
targetEntityClass);
+ val idValue = idStringifierForString.destring(stringified);
return new StringIdentity(targetEntityClass, idValue);
}
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
index 4c92f3a0b1..426a9eeea6 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacet.java
@@ -38,8 +38,6 @@ import org.apache.isis.applib.query.NamedQuery;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.IdStringifier;
-import
org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
-import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
import org.apache.isis.applib.services.exceprecog.Category;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
import org.apache.isis.applib.services.repository.EntityState;
@@ -58,9 +56,10 @@ import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
+import
org.apache.isis.core.metamodel.services.objectlifecycle.ObjectLifecyclePublisher;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.transaction.changetracking.EntityChangeTracker;
+import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
import
org.apache.isis.persistence.jdo.datanucleus.entities.DnEntityStateProvider;
import
org.apache.isis.persistence.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetFactory;
import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
@@ -157,7 +156,9 @@ implements EntityFacet {
val primaryKeyType = primaryKeyTypeFor(entityClass);
val idStringifier =
idStringifierLookupService.lookupElseFail(primaryKeyType);
- val primaryKey = idStringifier.destring(bookmark.getIdentifier(),
entityClass);
+ val primaryKey = _Casts.castTo(IdStringifier.Abstract.class,
idStringifier)
+
.map(stringifier->stringifier.destring(bookmark.getIdentifier(), entityClass))
+
.orElseGet(()->idStringifier.destring(bookmark.getIdentifier()));
val fetchPlan = persistenceManager.getFetchPlan();
fetchPlan.addGroup(FetchGroup.DEFAULT);
@@ -187,11 +188,11 @@ implements EntityFacet {
private Map<Class<?>, Class<?>> primaryKeyClassByEntityClass = new
ConcurrentHashMap<>();
- private Class<?> primaryKeyTypeFor(Class<?> entityClass) {
+ private Class<?> primaryKeyTypeFor(final Class<?> entityClass) {
return primaryKeyClassByEntityClass.computeIfAbsent(entityClass,
this::lookupPrimaryKeyTypeFor);
}
- private Class<?> lookupPrimaryKeyTypeFor(Class<?> entityClass) {
+ private Class<?> lookupPrimaryKeyTypeFor(final Class<?> entityClass) {
val persistenceManager = getPersistenceManager();
val pmf = (JDOPersistenceManagerFactory)
persistenceManager.getPersistenceManagerFactory();
diff --git
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
index b4fe2c3dcf..74138f2944 100644
---
a/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
+++
b/persistence/jpa/integration/src/main/java/org/apache/isis/persistence/jpa/integration/entity/JpaEntityFacet.java
@@ -35,7 +35,6 @@ import org.apache.isis.applib.query.NamedQuery;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.IdStringifier;
-import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.repository.EntityState;
import org.apache.isis.commons.collections.Can;
@@ -48,6 +47,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
import lombok.NonNull;
import lombok.val;
@@ -106,12 +106,12 @@ public class JpaEntityFacet
return identifierFor(primaryKeyType, _Casts.uncheckedCast(primaryKey));
}
- private <T> String identifierFor(Class<T> primaryKeyType, T primaryKey) {
+ private <T> String identifierFor(final Class<T> primaryKeyType, final T
primaryKey) {
val stringifier = lookupIdStringifier(primaryKeyType);
return stringifier.enstring(primaryKey);
}
- private <T> IdStringifier<T> lookupIdStringifier(Class<T> primaryKeyType) {
+ private <T> IdStringifier<T> lookupIdStringifier(final Class<T>
primaryKeyType) {
return
_Casts.uncheckedCast(idStringifierLookupService.lookupElseFail(primaryKeyType));
}
@@ -122,7 +122,10 @@ public class JpaEntityFacet
log.debug("fetchEntity; bookmark={}", bookmark);
val idStringifier = lookupIdStringifier(getPrimaryKeyType());
- val primaryKey = idStringifier.destring(bookmark.getIdentifier(),
entityClass);
+ val primaryKey = _Casts.castTo(IdStringifier.Abstract.class,
idStringifier)
+
.map(stringifier->stringifier.destring(bookmark.getIdentifier(), entityClass))
+
.orElseGet(()->idStringifier.destring(bookmark.getIdentifier()));
+
val entityManager = getEntityManager();
val entityPojo = entityManager.find(entityClass, primaryKey);