You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/12/06 11:09:14 UTC
[isis] branch master updated: ISIS-2177: remove Oid.copy() (Oid is
immutable)
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 21f2c1d ISIS-2177: remove Oid.copy() (Oid is immutable)
21f2c1d is described below
commit 21f2c1d534fe04f53d7c690931c643dca6e8f9cd
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 6 12:09:04 2019 +0100
ISIS-2177: remove Oid.copy() (Oid is immutable)
also improving some method naming and java-doc
---
.../org/apache/isis/metamodel/adapter/oid/Oid.java | 14 ++++-----
.../isis/metamodel/adapter/oid/Oid_Marshaller.java | 6 ++--
.../isis/metamodel/adapter/oid/Oid_Parented.java | 34 ++++------------------
.../isis/metamodel/adapter/oid/Oid_Root.java | 6 ----
.../isis/metamodel/adapter/oid/Oid_Value.java | 5 ----
.../isis/metamodel/adapter/oid/ParentedOid.java | 12 +++++++-
.../oid/CollectionOidTest_valueSemantics.java | 10 +++----
.../oid/OidMarshallerTest_roundtripping.java | 2 +-
.../transaction/PojoAdapterBuilder.java | 2 +-
.../java/org/apache/isis/runtime/memento/Data.java | 2 +-
.../org/apache/isis/runtime/memento/Memento.java | 4 +--
.../isis/runtime/memento/StandaloneData.java | 2 +-
12 files changed, 36 insertions(+), 63 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid.java
index 539be4b..9dfd5ee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid.java
@@ -121,18 +121,14 @@ public interface Oid extends Serializable {
// -- PARENTED COLLECTIONS
- public static ParentedOid parentedOfOneToMany(RootOid parentRootOid, OneToManyAssociation otma) {
- return Oid_Parented.ofName(parentRootOid, otma.getId());
+ public static ParentedOid parentedOfOneToMany(RootOid parentRootOid, OneToManyAssociation oneToMany) {
+ return Oid_Parented.ofOneToManyId(parentRootOid, oneToMany.getId());
}
- public static ParentedOid parentedOfName(RootOid parentRootOid, String name) {
- return Oid_Parented.ofName(parentRootOid, name);
+ public static ParentedOid parentedOfOneToManyId(RootOid parentRootOid, String oneToManyId) {
+ return Oid_Parented.ofOneToManyId(parentRootOid, oneToManyId);
}
-
-
+
}
- Oid copy();
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Marshaller.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Marshaller.java
index f3d99c0..d8a935b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Marshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Marshaller.java
@@ -178,9 +178,9 @@ final class Oid_Marshaller implements Oid.Marshaller, Oid.Unmarshaller {
}
final String collectionPart = getGroup(matcher, 8);
- final String collectionName = collectionPart != null ? collectionPart.substring(1) : null;
+ final String oneToManyId = collectionPart != null ? collectionPart.substring(1) : null;
- if(collectionName == null) {
+ if(oneToManyId == null) {
if(aggregateOidParts.isEmpty()) {
ensureCorrectType(oidStr, requestedType, RootOid.class);
return _Casts.uncheckedCast(
@@ -195,7 +195,7 @@ final class Oid_Marshaller implements Oid.Marshaller, Oid.Unmarshaller {
RootOid parentOid = this.unmarshal(parentOidStr, RootOid.class);
ensureCorrectType(oidStr, requestedType, ParentedOid.class);
- return _Casts.uncheckedCast( Oid_Parented.ofName(parentOid, collectionName) );
+ return _Casts.uncheckedCast( Oid_Parented.ofOneToManyId(parentOid, oneToManyId) );
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Parented.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Parented.java
index 64f6d85..46a8966 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Parented.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Parented.java
@@ -22,6 +22,8 @@ package org.apache.isis.metamodel.adapter.oid;
import java.io.IOException;
import java.util.Objects;
+import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
+
import static org.apache.isis.commons.internal.base._With.requires;
final class Oid_Parented implements ParentedOid {
@@ -33,15 +35,14 @@ final class Oid_Parented implements ParentedOid {
private final RootOid parentRootOid;
- // package private to support testing
- static Oid_Parented ofName(RootOid parentRootOid, String name) {
- return new Oid_Parented(parentRootOid, name);
+ static Oid_Parented ofOneToManyId(RootOid parentRootOid, String oneToManyId) {
+ return new Oid_Parented(parentRootOid, oneToManyId);
}
- private Oid_Parented(RootOid parentRootOid, String name) {
+ private Oid_Parented(RootOid parentRootOid, String oneToManyId) {
requires(parentRootOid, "parentRootOid");
this.parentRootOid = parentRootOid;
- this.name = name;
+ this.name = oneToManyId;
this.hashCode = calculateHash();
}
@@ -65,16 +66,10 @@ final class Oid_Parented implements ParentedOid {
return getParentOid().isPersistent();
}
-
- // /////////////////////////////////////////////////////////
- // enstring
- // /////////////////////////////////////////////////////////
-
public static Oid_Parented deString(String oidStr) {
return Oid.unmarshaller().unmarshal(oidStr, Oid_Parented.class);
}
-
@Override
public String enString() {
return Oid.marshaller().marshal(this);
@@ -86,10 +81,6 @@ final class Oid_Parented implements ParentedOid {
this.hashCode = calculateHash();
}
- // /////////////////////////////////////////////////////////
- // Properties
- // /////////////////////////////////////////////////////////
-
@Override
public String getName() {
return name;
@@ -105,8 +96,6 @@ final class Oid_Parented implements ParentedOid {
return enString();
}
-
-
// /////////////////////////////////////////////////////////
// Value semantics
// /////////////////////////////////////////////////////////
@@ -139,11 +128,6 @@ final class Oid_Parented implements ParentedOid {
return Objects.hash(getParentOid(), name);
}
-
- // /////////////////////////////////////////////////////////
- // asPersistent
- // /////////////////////////////////////////////////////////
-
/**
* When the RootOid is persisted, all its "children"
* need updating similarly.
@@ -152,11 +136,5 @@ final class Oid_Parented implements ParentedOid {
return new Oid_Parented(newParentRootOid, name);
}
- @Override
- public Oid copy() {
- return ofName((RootOid) parentRootOid.copy(), name);
- }
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Root.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Root.java
index 1365091..d4794ad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Root.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Root.java
@@ -157,12 +157,6 @@ final class Oid_Root implements RootOid {
return enString();
}
- @Override
- public Oid copy() {
- // these are all immutable ... of(objectSpecId, identifier, state);
- return this;
- }
-
// -- HELPER
private int calculateHash() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Value.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Value.java
index 53948fa..1d0821b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Value.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/Oid_Value.java
@@ -84,9 +84,4 @@ final class Oid_Value implements RootOid {
return null;
}
- @Override
- public Oid copy() {
- return this; // immutable singleton, just reuse
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/ParentedOid.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/ParentedOid.java
index 3ee771a..b84c7d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/ParentedOid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/oid/ParentedOid.java
@@ -19,15 +19,25 @@
package org.apache.isis.metamodel.adapter.oid;
+import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.commons.internal.url.UrlDecoderUtil;
+import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
/**
- * Used as the {@link Oid} for collections.
+ * Used as the {@link Oid} for {@link OneToManyAssociation} (collections).
*/
public interface ParentedOid extends Oid {
+ /**
+ * object identifier of the domain object that is holding the {@link OneToManyAssociation}
+ * this instance is representing
+ */
RootOid getParentOid();
+ /**
+ * id of the {@link OneToManyAssociation} this instance is representing, that is
+ * the member name, that is annotated with {@link Collection}
+ */
String getName();
// -- DECODE FROM STRING
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/CollectionOidTest_valueSemantics.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/CollectionOidTest_valueSemantics.java
index 1d29ff1..d573a05 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/CollectionOidTest_valueSemantics.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/CollectionOidTest_valueSemantics.java
@@ -32,16 +32,16 @@ public class CollectionOidTest_valueSemantics extends ValueTypeContractTestAbstr
@Override
protected List<ParentedOid> getObjectsWithSameValue() {
return Arrays.asList(
- Oid.Factory.parentedOfName(parent, "456"),
- Oid.Factory.parentedOfName(parent, "456"),
- Oid.Factory.parentedOfName(parent, "456"));
+ Oid.Factory.parentedOfOneToManyId(parent, "456"),
+ Oid.Factory.parentedOfOneToManyId(parent, "456"),
+ Oid.Factory.parentedOfOneToManyId(parent, "456"));
}
@Override
protected List<ParentedOid> getObjectsWithDifferentValue() {
return Arrays.asList(
- Oid.Factory.parentedOfName(otherParent, "456"),
- Oid.Factory.parentedOfName(parent, "457"));
+ Oid.Factory.parentedOfOneToManyId(otherParent, "456"),
+ Oid.Factory.parentedOfOneToManyId(parent, "457"));
}
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
index dd71b36..f216608 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/adapter/oid/OidMarshallerTest_roundtripping.java
@@ -41,7 +41,7 @@ public class OidMarshallerTest_roundtripping {
@Test
public void collectionOid() {
RootOid parentOid = Factory.persistentOf(ObjectSpecId.of("CUS"), "123");
- ParentedOid oid = Factory.parentedOfName(parentOid, "items");
+ ParentedOid oid = Factory.parentedOfOneToManyId(parentOid, "items");
final String enString = oid.enString();
final ParentedOid deString = ParentedOid.deString(enString);
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 1a627f9..428db3f 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -79,7 +79,7 @@ public class PojoAdapterBuilder {
}, COLLECTION {
@Override
Oid oidFor(RootOid rootOid, ObjectSpecId objectSpecId, String collectionId) {
- return Oid.Factory.parentedOfName(rootOid, collectionId);
+ return Oid.Factory.parentedOfOneToManyId(rootOid, collectionId);
}
}, VALUE {
@Override
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Data.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/Data.java
index 2ded560..f039157 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Data.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/Data.java
@@ -40,6 +40,6 @@ class Data implements Serializable {
* @apiNote could be <tt>null</tt> if represents a value (standalone adapter).
*/
@Getter @Nullable private final Oid oid;
- @Getter private final String className;
+ @Getter private final String specId;
}
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/Memento.java
index c98862f..8f7fc53 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/Memento.java
@@ -71,14 +71,14 @@ class Memento implements Serializable {
if (data == null) {
return null;
}
- val spec = specLoader.lookupBySpecIdElseLoad(ObjectSpecId.of(data.getClassName()));
+ val spec = specLoader.lookupBySpecIdElseLoad(ObjectSpecId.of(data.getSpecId()));
val oid = data.getOid();
return mementoStore.adapterOfMemento(spec, oid, data);
}
@Override
public String toString() {
- return "[" + (data == null ? null : data.getClassName() + "/" + data.getOid() + data) + "]";
+ return "[" + (data == null ? null : data.getSpecId() + "/" + data.getOid() + data) + "]";
}
// -- HELPER
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
index c37bcf6..be39cd9 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/StandaloneData.java
@@ -62,7 +62,7 @@ final class StandaloneData extends Data {
return objectAdapterProvider.adapterFor(objectAsSerializable);
} else {
val spec =
- specificationLoader.lookupBySpecIdElseLoad(ObjectSpecId.of(getClassName()));
+ specificationLoader.lookupBySpecIdElseLoad(ObjectSpecId.of(getSpecId()));
val encodeableFacet = spec.getFacet(EncodableFacet.class);
return encodeableFacet.fromEncodedString(objectAsEncodedString);
}