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 db4e22f2b6 ISIS-3119: implement minimum value-semantics for jdo id
types
db4e22f2b6 is described below
commit db4e22f2b6d98df63f68c2b3a8f4bced6145bdf7
Author: Andi Huber <[email protected]>
AuthorDate: Thu Aug 11 14:21:42 2022 +0200
ISIS-3119: implement minimum value-semantics for jdo id types
- can always add Parser and Renderer late if required
---
...nIdStringifierWithTargetEntityClassSupport.java | 12 ----------
.../valuetypes/JdoByteIdValueSemantics.java | 27 ++++++++++++++++++++++
.../valuetypes/JdoByteIdentityValueSemantics.java | 26 +++++++++++++++++++++
.../valuetypes/JdoCharIdValueSemantics.java | 24 +++++++++++++++++++
.../valuetypes/JdoCharIdentityValueSemantics.java | 25 ++++++++++++++++++++
.../JdoDatastoreIdImplValueSemantics.java | 24 +++++++++++++++++++
.../valuetypes/JdoDatastoreIdValueSemantics.java | 25 ++++++++++++++++++++
.../JdoDatastoreUniqueLongIdValueSemantics.java | 19 +++++----------
.../valuetypes/JdoIntIdValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoIntIdentityValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoLongIdValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoLongIdentityValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoObjectIdValueSemantics.java | 25 ++++++++++++++++++++
.../JdoObjectIdentityValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoShortIdValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoShortIdentityValueSemantics.java | 25 ++++++++++++++++++++
.../valuetypes/JdoStringIdValueSemantics.java | 24 +++++++++++++++++++
.../JdoStringIdentityValueSemantics.java | 24 +++++++++++++++++++
.../oid/IdStringifierForByteIdentity_Test.java | 9 +++++++-
...erForDatastoreId_DatastoreIdImpl_long_Test.java | 8 ++++++-
...atastoreId_DatastoreUniqueLongId_long_Test.java | 16 +++++++++----
...DatastoreId_DatastoreUniqueLongId_str_Test.java | 15 ++++++++----
.../oid/IdStringifierForIntId_Test.java | 11 +++++----
.../oid/IdStringifierForIntIdentity_Test.java | 8 ++++++-
.../oid/IdStringifierForLongId_Test.java | 11 +++++----
.../oid/IdStringifierForLongIdentity_Test.java | 8 ++++++-
.../oid/IdStringifierForObjectIdentity_Test.java | 6 +++++
.../oid/IdStringifierForShortIdentity_Test.java | 8 ++++++-
.../oid/IdStringifierForStringIdentity_Test.java | 6 +++++
29 files changed, 488 insertions(+), 48 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
index 7401064ede..ccd179b90d 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/value/semantics/ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport.java
@@ -58,16 +58,4 @@ implements
return value.toString();
}
- // -- COMPOSER
-
- @Override
- public final ValueDecomposition decompose(final T value) {
- return decomposeAsString(value, this::enstring, ()->null);
- }
-
- @Override
- public final T compose(final ValueDecomposition decomposition) {
- return composeFromString(decomposition, this::destring, ()->null);
- }
-
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdValueSemantics.java
index cf7c11e0e0..919bb52955 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdValueSemantics.java
@@ -24,9 +24,14 @@ import org.datanucleus.identity.ByteId;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,8 +42,30 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ByteId> {
super(ByteId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ByteId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ByteId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ByteId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public ByteId destring(final @NonNull String stringified, final @NonNull
Class<?> targetEntityClass) {
return new ByteId(targetEntityClass, stringified);
}
+
+
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java
index fca3e71379..2b56eac52a 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoByteIdentityValueSemantics.java
@@ -24,9 +24,14 @@ import javax.jdo.identity.ByteIdentity;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,8 +42,29 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ByteIdent
super(ByteIdentity.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ByteIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ByteIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ByteIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public ByteIdentity destring(final @NonNull String stringified, final
@NonNull Class<?> targetEntityClass) {
return new ByteIdentity(targetEntityClass, stringified);
}
+
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdValueSemantics.java
index 8869d8e56e..0cb1bf68d1 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdValueSemantics.java
@@ -26,7 +26,11 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.IdStringifier;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
@@ -52,6 +56,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<CharId> {
this.idStringifierForCharacter = idStringifierForCharacter;
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final CharId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
CharId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public CharId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull CharId value) {
return idStringifierForCharacter.enstring(value.getKey());
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java
index 257a8f9a57..08b11e81a2 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoCharIdentityValueSemantics.java
@@ -26,7 +26,11 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.IdStringifier;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
@@ -52,6 +56,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<CharIdent
this.idStringifierForCharacter = idStringifierForCharacter;
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final CharIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
CharIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public CharIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull CharIdentity value) {
return idStringifierForCharacter.enstring(value.getKey());
@@ -64,4 +88,5 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<CharIdent
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/valuetypes/JdoDatastoreIdImplValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdImplValueSemantics.java
index b8994d3186..a4654d2993 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdImplValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdImplValueSemantics.java
@@ -24,7 +24,11 @@ import org.datanucleus.identity.DatastoreIdImpl;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
import lombok.SneakyThrows;
@@ -41,6 +45,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<Datastore
super(DatastoreIdImpl.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final DatastoreIdImpl value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
DatastoreIdImpl::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public DatastoreIdImpl compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull DatastoreIdImpl value) {
return value.getKeyAsObject().toString();
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
index 7f154a029d..2b9484b3c0 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreIdValueSemantics.java
@@ -28,12 +28,17 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.IdStringifier;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.context._Context;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
import lombok.SneakyThrows;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE + 100) // after the implementations of
DatastoreId; for a custom impl.
@@ -44,6 +49,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<Datastore
super(DatastoreId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final DatastoreId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
DatastoreId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public DatastoreId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull DatastoreId value) {
//
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreUniqueLongIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreUniqueLongIdValueSemantics.java
index 66b571c3b1..47f2bebe92 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreUniqueLongIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoDatastoreUniqueLongIdValueSemantics.java
@@ -21,34 +21,27 @@ package
org.apache.isis.persistence.jdo.datanucleus.valuetypes;
import javax.annotation.Priority;
import org.datanucleus.identity.DatastoreUniqueLongId;
-import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
-import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifier;
import lombok.NonNull;
-import lombok.SneakyThrows;
+/**
+ * @implNote has no targetEntityClass support
+ */
@Component
@Priority(PriorityPrecedence.LATE)
public class JdoDatastoreUniqueLongIdValueSemantics
-extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<DatastoreUniqueLongId>
{
+extends ValueSemanticsBasedOnIdStringifier<DatastoreUniqueLongId> {
public JdoDatastoreUniqueLongIdValueSemantics() {
super(DatastoreUniqueLongId.class);
}
@Override
- public String enstring(final @NonNull DatastoreUniqueLongId value) {
- return value.toString();
- }
-
- @SneakyThrows
- @Override
- public DatastoreUniqueLongId destring(
- final @NonNull String stringified,
- final @Nullable Class<?> targetEntityClass) {
+ public DatastoreUniqueLongId destring(@NonNull final String stringified) {
return new DatastoreUniqueLongId(stringified);
}
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdValueSemantics.java
index 1591d54010..2a43679336 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdValueSemantics.java
@@ -24,9 +24,14 @@ import org.datanucleus.identity.IntId;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<IntId> {
super(IntId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final IntId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
IntId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public IntId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public IntId destring(final @NonNull String stringified, final @NonNull
Class<?> targetEntityClass) {
return new IntId(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java
index ce12f28ae8..2a3605f03c 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoIntIdentityValueSemantics.java
@@ -24,9 +24,14 @@ import javax.jdo.identity.IntIdentity;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<IntIdenti
super(IntIdentity.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final IntIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
IntIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public IntIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public IntIdentity destring(final @NonNull String stringified, final
@NonNull Class<?> targetEntityClass) {
return new IntIdentity(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdValueSemantics.java
index 23efa2f5fc..af150efa6a 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdValueSemantics.java
@@ -24,9 +24,14 @@ import org.datanucleus.identity.LongId;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<LongId> {
super(LongId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final LongId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
LongId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public LongId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public LongId destring(final @NonNull String stringified, final @NonNull
Class<?> targetEntityClass) {
return new LongId(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java
index 74dc4cec98..00fc9646ff 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoLongIdentityValueSemantics.java
@@ -24,9 +24,14 @@ import javax.jdo.identity.LongIdentity;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<LongIdent
super(LongIdentity.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final LongIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
LongIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public LongIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public LongIdentity destring(final @NonNull String stringified, final
@NonNull Class<?> targetEntityClass) {
return new LongIdentity(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdValueSemantics.java
index 2a706818eb..8704363e6d 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdValueSemantics.java
@@ -26,10 +26,15 @@ import org.datanucleus.identity.ObjectId;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
+import lombok.val;
/**
* Implementation for application-defined primary keys.
@@ -53,6 +58,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ObjectId>
super(ObjectId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ObjectId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ObjectId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ObjectId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull ObjectId value) {
Object keyAsObject = value.getKeyAsObject();
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java
index 93f01efcc4..b7db0647f4 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoObjectIdentityValueSemantics.java
@@ -26,10 +26,15 @@ import javax.jdo.identity.ObjectIdentity;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
+import lombok.val;
/**
* Implementation for application-defined primary keys.
@@ -53,6 +58,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ObjectIde
super(ObjectIdentity.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ObjectIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ObjectIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ObjectIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull ObjectIdentity value) {
Object keyAsObject = value.getKeyAsObject();
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdValueSemantics.java
index bee54b5430..5493173a51 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdValueSemantics.java
@@ -24,9 +24,14 @@ import org.datanucleus.identity.ShortId;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ShortId>
super(ShortId.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ShortId value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ShortId::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ShortId compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public ShortId destring(final @NonNull String stringified, final @NonNull
Class<?> targetEntityClass) {
return new ShortId(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java
index 0d432f515f..2273fb91f4 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoShortIdentityValueSemantics.java
@@ -24,9 +24,14 @@ import javax.jdo.identity.ShortIdentity;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.NonNull;
+import lombok.val;
@Component
@Priority(PriorityPrecedence.LATE)
@@ -37,6 +42,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<ShortIden
super(ShortIdentity.class);
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final ShortIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
ShortIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public ShortIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public ShortIdentity destring(final @NonNull String stringified, final
@NonNull Class<?> targetEntityClass) {
return new ShortIdentity(targetEntityClass, stringified);
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdValueSemantics.java
index bdc1bb6f7c..2549c587ec 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdValueSemantics.java
@@ -26,7 +26,11 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.IdStringifier;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
@@ -52,6 +56,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<StringIde
this.idStringifierForString = idStringifierForString;
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final StringIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
StringIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public StringIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull StringIdentity value) {
return idStringifierForString.enstring(value.getKey());
diff --git
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java
index 7a3b23de0f..96a6dbf8bd 100644
---
a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java
+++
b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/valuetypes/JdoStringIdentityValueSemantics.java
@@ -26,7 +26,11 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.bookmark.IdStringifier;
+import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.apache.isis.applib.value.semantics.ValueDecomposition;
import
org.apache.isis.applib.value.semantics.ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport;
+import org.apache.isis.commons.internal.factory._InstanceUtil;
+import org.apache.isis.schema.common.v2.ValueType;
import lombok.Builder;
import lombok.NonNull;
@@ -52,6 +56,26 @@ extends
ValueSemanticsBasedOnIdStringifierWithTargetEntityClassSupport<StringIde
this.idStringifierForString = idStringifierForString;
}
+ // -- COMPOSER
+
+ @Override
+ public ValueDecomposition decompose(final StringIdentity value) {
+ return CommonDtoUtils.typedTupleBuilder(value)
+ .addFundamentalType(ValueType.STRING, "targetClassName",
StringIdentity::getTargetClassName)
+ .addFundamentalType(ValueType.STRING, "key", this::enstring)
+ .buildAsDecomposition();
+ }
+
+ @Override
+ public StringIdentity compose(final ValueDecomposition decomposition) {
+ val elementMap =
CommonDtoUtils.typedTupleAsMap(decomposition.rightIfAny());
+ final String targetClassName =
(String)elementMap.get("targetClassName");
+ final String key = (String)elementMap.get("key");
+ return destring(key, _InstanceUtil.loadClass(targetClassName));
+ }
+
+ // -- ID STRINGIFIER
+
@Override
public String enstring(final @NonNull StringIdentity value) {
return idStringifierForString.enstring(value.getKey());
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForByteIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForByteIdentity_Test.java
index 83a584bb27..307c7bdb1a 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForByteIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForByteIdentity_Test.java
@@ -49,7 +49,7 @@ class IdStringifierForByteIdentity_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(Byte value) {
+ void roundtrip(final Byte value) {
val entityType = Customer.class;
@@ -60,6 +60,13 @@ class IdStringifierForByteIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new ByteIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
+
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreIdImpl_long_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreIdImpl_long_Test.java
index 4560813f0c..4e795cacad 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreIdImpl_long_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreIdImpl_long_Test.java
@@ -48,7 +48,7 @@ class IdStringifierForDatastoreId_DatastoreIdImpl_long_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(long value, String enstringed) {
+ void roundtrip(final long value, final String enstringed) {
val entityType = Customer.class;
@@ -62,6 +62,12 @@ class IdStringifierForDatastoreId_DatastoreIdImpl_long_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClassName()).isEqualTo(entityType.getName());
+
+ val decomposed = stringifier.decompose(new
DatastoreIdImpl(entityType.getName(), value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+
Assertions.assertThat(composed.getTargetClassName()).isEqualTo(entityType.getName());
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_long_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_long_Test.java
index 55e99fbe21..cc7be6c054 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_long_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_long_Test.java
@@ -28,7 +28,6 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
-import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoDatastoreIdImplValueSemantics;
import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoDatastoreUniqueLongIdValueSemantics;
import lombok.val;
@@ -45,22 +44,29 @@ class
IdStringifierForDatastoreId_DatastoreUniqueLongId_long_Test {
);
}
- static class Customer {}
+ //static class Customer {}
@ParameterizedTest
@MethodSource()
- void roundtrip(long value) {
+ void roundtrip(final long value) {
- val entityType = Customer.class;
+ //val entityType = Customer.class;
val stringifier = new JdoDatastoreUniqueLongIdValueSemantics();
val stringified = stringifier.enstring(new
DatastoreUniqueLongId(value));
- val parse = stringifier.destring(stringified, null); // no need to
pass entityType
+ val parse = stringifier.destring(stringified); // no need to pass
entityType
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
// UnsupportedOperationException if attempt this.
//
Assertions.assertThat(parse.getTargetClassName()).isEqualTo(entityType.getName());
+
+ val decomposed = stringifier.decompose(new
DatastoreUniqueLongId(value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+
//Assertions.assertThat(composed.getTargetClassName()).isEqualTo(entityType.getName());
+
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_str_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_str_Test.java
index a00597b760..7a9afb8c0f 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_str_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForDatastoreId_DatastoreUniqueLongId_str_Test.java
@@ -28,7 +28,6 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
-import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoDatastoreIdImplValueSemantics;
import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoDatastoreUniqueLongIdValueSemantics;
import lombok.val;
@@ -45,23 +44,29 @@ class
IdStringifierForDatastoreId_DatastoreUniqueLongId_str_Test {
);
}
- static class Customer {}
+ //static class Customer {}
@ParameterizedTest
@MethodSource()
- void roundtrip(long value) {
+ void roundtrip(final long value) {
- val entityType = Customer.class;
+ //val entityType = Customer.class;
String strValue = "" + value;
val stringifier = new JdoDatastoreUniqueLongIdValueSemantics();
val stringified = stringifier.enstring(new
DatastoreUniqueLongId(strValue));
- val parse = stringifier.destring(stringified, null); // no need to
pass entityType
+ val parse = stringifier.destring(stringified); // no need to pass
entityType
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
// UnsupportedOperationException if attempt this.
//
Assertions.assertThat(parse.getTargetClassName()).isEqualTo(entityType.getName());
+
+ val decomposed = stringifier.decompose(new
DatastoreUniqueLongId(strValue));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+
//Assertions.assertThat(composed.getTargetClassName()).isEqualTo(entityType.getName());
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntId_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntId_Test.java
index 8980a8e0e5..24f256c1f4 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntId_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntId_Test.java
@@ -22,8 +22,6 @@ package org.apache.isis.persistence.jdo.datanucleus.oid;
import java.util.stream.Stream;
-import javax.jdo.identity.IntIdentity;
-
import org.assertj.core.api.Assertions;
import org.datanucleus.identity.IntId;
import org.junit.jupiter.params.ParameterizedTest;
@@ -31,7 +29,6 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoIntIdValueSemantics;
-import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoIntIdentityValueSemantics;
import lombok.val;
@@ -51,7 +48,7 @@ class IdStringifierForIntId_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(Integer value) {
+ void roundtrip(final Integer value) {
val entityType = Customer.class;
@@ -62,6 +59,12 @@ class IdStringifierForIntId_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClassName()).isEqualTo(entityType.getName());
+
+ val decomposed = stringifier.decompose(new IntId(entityType, value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+
Assertions.assertThat(composed.getTargetClassName()).isEqualTo(entityType.getName());
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntIdentity_Test.java
index 51eeaac7d3..58e60096c4 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForIntIdentity_Test.java
@@ -49,7 +49,7 @@ class IdStringifierForIntIdentity_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(Integer value) {
+ void roundtrip(final Integer value) {
val entityType = Customer.class;
@@ -60,6 +60,12 @@ class IdStringifierForIntIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new IntIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongId_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongId_Test.java
index bef3968e01..e4ec1c7f91 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongId_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongId_Test.java
@@ -22,8 +22,6 @@ package org.apache.isis.persistence.jdo.datanucleus.oid;
import java.util.stream.Stream;
-import javax.jdo.identity.LongIdentity;
-
import org.assertj.core.api.Assertions;
import org.datanucleus.identity.LongId;
import org.junit.jupiter.params.ParameterizedTest;
@@ -31,7 +29,6 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoLongIdValueSemantics;
-import
org.apache.isis.persistence.jdo.datanucleus.valuetypes.JdoLongIdentityValueSemantics;
import lombok.val;
@@ -51,7 +48,7 @@ class IdStringifierForLongId_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(long value) {
+ void roundtrip(final long value) {
val entityType = Customer.class;
@@ -62,6 +59,12 @@ class IdStringifierForLongId_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClassName()).isEqualTo(entityType.getName());
+
+ val decomposed = stringifier.decompose(new LongId(entityType, value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+
Assertions.assertThat(composed.getTargetClassName()).isEqualTo(entityType.getName());
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongIdentity_Test.java
index 9ba0455f7b..169797554e 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForLongIdentity_Test.java
@@ -49,7 +49,7 @@ class IdStringifierForLongIdentity_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(long value) {
+ void roundtrip(final long value) {
val entityType = Customer.class;
@@ -60,6 +60,12 @@ class IdStringifierForLongIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new LongIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForObjectIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForObjectIdentity_Test.java
index 5072e3ab38..081eebd7a7 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForObjectIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForObjectIdentity_Test.java
@@ -60,6 +60,12 @@ class IdStringifierForObjectIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new ObjectIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForShortIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForShortIdentity_Test.java
index e92dd8630b..5ee28be801 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForShortIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForShortIdentity_Test.java
@@ -49,7 +49,7 @@ class IdStringifierForShortIdentity_Test {
@ParameterizedTest
@MethodSource()
- void roundtrip(short value) {
+ void roundtrip(final short value) {
val entityType = Customer.class;
@@ -60,6 +60,12 @@ class IdStringifierForShortIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new ShortIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
}
}
diff --git
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForStringIdentity_Test.java
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForStringIdentity_Test.java
index 9f9421d517..90ae55b4a6 100644
---
a/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForStringIdentity_Test.java
+++
b/persistence/jdo/datanucleus/src/test/java/org/apache/isis/persistence/jdo/datanucleus/oid/IdStringifierForStringIdentity_Test.java
@@ -67,6 +67,12 @@ class IdStringifierForStringIdentity_Test {
Assertions.assertThat(parse.getKeyAsObject()).isEqualTo(value);
Assertions.assertThat(parse.getTargetClass()).isEqualTo(entityType);
+
+ val decomposed = stringifier.decompose(new StringIdentity(entityType,
value));
+ val composed = stringifier.compose(decomposed);
+
+ Assertions.assertThat(composed.getKeyAsObject()).isEqualTo(value);
+ Assertions.assertThat(composed.getTargetClass()).isEqualTo(entityType);
}
}