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 2018/09/26 11:47:35 UTC

[isis] branch v2 updated (2f96219 -> f774e22)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 2f96219  ISIS-1976: move Oid.State -> Oid_State and make it package private
     new c4b7d12  ISIS-1976: fixes memento cloning
     new f774e22  ISIS-1976: fixes tests: remove final modifier on 'Version' to allow mocking

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/isis/core/metamodel/adapter/oid/Oid.java   |  4 +---
 .../core/metamodel/adapter/oid/Oid_Marshaller.java    | 19 +++++++++++--------
 .../isis/core/metamodel/adapter/oid/Oid_Parented.java |  5 +++++
 .../isis/core/metamodel/adapter/oid/Oid_Root.java     |  6 ++++++
 .../isis/core/metamodel/adapter/oid/Oid_Value.java    |  5 +++++
 .../isis/core/metamodel/adapter/oid/RootOid.java      |  1 +
 .../isis/core/metamodel/adapter/version/Version.java  | 14 +++++++++++++-
 .../core/metamodel/adapter/version/VersionTest.java   | 16 ++++++++--------
 .../org/apache/isis/core/runtime/memento/Memento.java |  4 +---
 9 files changed, 51 insertions(+), 23 deletions(-)


[isis] 01/02: ISIS-1976: fixes memento cloning

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit c4b7d12aaae6223b2a2f85893f5c1ae79b00f3de
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 26 13:40:51 2018 +0200

    ISIS-1976: fixes memento cloning
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../apache/isis/core/metamodel/adapter/oid/Oid.java   |  4 +---
 .../core/metamodel/adapter/oid/Oid_Marshaller.java    | 19 +++++++++++--------
 .../isis/core/metamodel/adapter/oid/Oid_Parented.java |  5 +++++
 .../isis/core/metamodel/adapter/oid/Oid_Root.java     |  6 ++++++
 .../isis/core/metamodel/adapter/oid/Oid_Value.java    |  5 +++++
 .../isis/core/metamodel/adapter/oid/RootOid.java      |  1 +
 .../isis/core/metamodel/adapter/version/Version.java  | 12 ++++++++++++
 .../core/metamodel/adapter/version/VersionTest.java   | 16 ++++++++--------
 .../org/apache/isis/core/runtime/memento/Memento.java |  4 +---
 9 files changed, 50 insertions(+), 22 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
index d7441e9..089416b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid.java
@@ -157,9 +157,7 @@ public interface Oid extends Encodable {
         
     }
 
-
-
-    
+    Oid copy();
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Marshaller.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Marshaller.java
index bed9fa9..3a5aa9f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Marshaller.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Marshaller.java
@@ -225,10 +225,14 @@ final class Oid_Marshaller implements Oid.Marshaller, Oid.Unmarshaller {
     }
 
 
-    private <T> void ensureCorrectType(String oidStr, Class<T> requestedType, final Class<? extends Oid> actualType) {
+    private <T> void ensureCorrectType(String oidStr, Class<T> requestedType, 
+            final Class<? extends Oid> actualType) {
+        
         if(!requestedType.isAssignableFrom(actualType)) {
-            throw new IllegalArgumentException("OID '" + oidStr + "' does not represent a " +
-                    actualType.getSimpleName());
+            throw new IllegalArgumentException(
+                    String.format("OID '%s' was unmarshealled to type '%s' which cannot be assigned "
+                            + "to requested type '%s'",
+                            oidStr, actualType.getSimpleName(), requestedType.getSimpleName()) );
         }
     }
 
@@ -269,16 +273,15 @@ final class Oid_Marshaller implements Oid.Marshaller, Oid.Unmarshaller {
 
     @Override
     public final String marshal(Version version) {
-        if(version == null) {
+        if(Version.isEmpty(version)) {
             return "";
         }
         final String versionUser = version.getUser();
-        return SEPARATOR_VERSION + version.getSequence() + SEPARATOR + _Strings.nullToEmpty(versionUser) + SEPARATOR + nullToEmpty(version.getUtcTimestamp());
+        return SEPARATOR_VERSION + version.getSequence() + SEPARATOR 
+                + _Strings.nullToEmpty(versionUser) + SEPARATOR + 
+                (version.hasTimestamp() ? version.getUtcTimestamp() : "");
     }
 
-    private static String nullToEmpty(Object obj) {
-        return obj == null? "": "" + obj;
-    }
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Parented.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Parented.java
index bc6f835..2f4544d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Parented.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Parented.java
@@ -187,6 +187,11 @@ 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/core/metamodel/adapter/oid/Oid_Root.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Root.java
index 03c67ba..98f1d67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Root.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Root.java
@@ -198,4 +198,10 @@ final class Oid_Root implements RootOid {
         return enString();
     }
 
+    @Override
+    public Oid copy() {
+        // these are all immutable ...
+        return of(objectSpecId, identifier, state, version);
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Value.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Value.java
index 09df592..a376e08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Value.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/Oid_Value.java
@@ -106,4 +106,9 @@ 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/core/metamodel/adapter/oid/RootOid.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/RootOid.java
index 4c483cb..4972587 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/RootOid.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/oid/RootOid.java
@@ -46,5 +46,6 @@ public interface RootOid extends Oid, Serializable {
     public static RootOid deString(final String oidStr) {
         return Oid.unmarshaller().unmarshal(oidStr, RootOid.class);
     }
+    
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
index 5ffb94f..e562b56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
@@ -69,7 +69,17 @@ public final class Version implements Serializable, Encodable {
         return new Version(sequence, user, utcTimestamp);
     }
     
+    // -- LOGIC FOR EMPTY
+    
+    public static boolean isEmpty(Version version) {
+        return version == Factory.EMPTY_VERSION;
+    }
+    
+    public boolean hasTimestamp() {
+        return utcTimestamp!=Factory.EMPTY_TIMESTAMP;
+    }
 
+    
     // -- constructor, fields
     private final long sequence;
     private final String user;
@@ -236,4 +246,6 @@ public final class Version implements Serializable, Encodable {
 
 
 
+
+
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/version/VersionTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/version/VersionTest.java
index bcefefc..b572436 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/version/VersionTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/adapter/version/VersionTest.java
@@ -38,35 +38,35 @@ public class VersionTest {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
     
     @Mock
-    private DataInputExtended extended;
+    private DataInputExtended input;
 
     @Mock
-    private DataOutputExtended outputExtended;
+    private DataOutputExtended output;
 
     @Mock
     private Version version;;
 
     @Before
     public void setUp() throws Exception {
-        context.ignoring(extended);
+        context.ignoring(input);
     }
     
     @Test
     public void instantiate_usingDataInputExtended() throws Exception {
-        new Version(extended);
+        new Version(input);
     }
 
     @Test
     public void encode() throws Exception {
-        context.ignoring(outputExtended);
+        context.ignoring(output);
         
-        final Version oidVersion = new Version(extended);
-        oidVersion.encode(outputExtended);
+        final Version oidVersion = new Version(input);
+        oidVersion.encode(output);
     }
 
     @Test
     public void sequence_and_toString() throws Exception {
-        final Version testVersion = new Version(extended);
+        final Version testVersion = new Version(input);
         
         assertTrue(testVersion.sequence().length() > 0);
         assertTrue(testVersion.getSequence() == 0);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
index f052bb2..c2f7675 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/memento/Memento.java
@@ -167,9 +167,7 @@ public class Memento implements Serializable {
 
     private static <T extends Oid> T clone(final T oid) {
         if(oid == null) { return null; }
-        if(oid.isValue()) { return oid; } // immutable, so just reuse
-        final String oidStr = oid.enString();
-        return _Casts.uncheckedCast(Oid.unmarshaller().unmarshal(oidStr, oid.getClass()));
+        return _Casts.uncheckedCast(oid.copy()); 
     }
 
     private Data createStandaloneData(final ObjectAdapter adapter) {


[isis] 02/02: ISIS-1976: fixes tests: remove final modifier on 'Version' to allow mocking

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit f774e220a60e0967b220c40560f791a7254ffd75
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 26 13:47:28 2018 +0200

    ISIS-1976: fixes tests: remove final modifier on 'Version' to allow
    mocking
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../java/org/apache/isis/core/metamodel/adapter/version/Version.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
index e562b56..96b89b2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/version/Version.java
@@ -49,7 +49,7 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
  * The user's name and a timestamp should also be kept so that when an message
  * is passed to the user it can be of the form "user has change object at time"
  */
-public final class Version implements Serializable, Encodable {
+public class Version implements Serializable, Encodable {
 
     private static final long serialVersionUID = 1L;