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 2020/06/05 08:41:24 UTC

[isis] branch master updated: ISIS-2340: simplify adapter creation from OidDto

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 ea669d3  ISIS-2340: simplify adapter creation from OidDto
ea669d3 is described below

commit ea669d39580698a5b6ad88dac6a5711d021326a4
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jun 5 10:40:58 2020 +0200

    ISIS-2340: simplify adapter creation from OidDto
---
 .../java/org/apache/isis/core/metamodel/adapter/oid/Oid.java  | 11 +++++++++--
 .../command/CommandExecutorServiceDefault.java                |  8 +-------
 2 files changed, 10 insertions(+), 9 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 0a640e1..28cb756 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
@@ -25,6 +25,7 @@ import org.apache.isis.applib.annotation.Value;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.schema.common.v2.OidDto;
 
 
 /**
@@ -90,13 +91,19 @@ public interface Oid extends Serializable {
             return Oid_Value.INSTANCE;
         }
 
-        public static RootOid ofBookmark(Bookmark bookmark) {
+        public static RootOid ofBookmark(final Bookmark bookmark) {
             return Oid_Root.of(
                     ObjectSpecId.of(bookmark.getObjectType()), 
                     bookmark.getIdentifier());
         }
+        
+        public static RootOid ofDto(final OidDto oid) {
+            return Oid_Root.of(
+                    ObjectSpecId.of(oid.getType()), 
+                    oid.getId());
+        }
 
-        public static RootOid root(ObjectSpecId objectSpecId, String identifier) {
+        public static RootOid root(final ObjectSpecId objectSpecId, final String identifier) {
             return Oid_Root.of(objectSpecId, identifier);
         }
         
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
index 1d01192..68fb7a0 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
@@ -362,7 +362,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
             return ManagedObject.unspecified();
         }
         if(pojo instanceof OidDto) {
-            return adapterFor((OidDto)pojo);
+            return adapterFor(Oid.Factory.ofDto((OidDto)pojo));
         }
         if(pojo instanceof RootOid) {
             return adapterFor((RootOid) pojo);
@@ -371,12 +371,6 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
         return ManagedObject.of(getSpecificationLoader()::loadSpecification, pojo);
     }
 
-    private ManagedObject adapterFor(final OidDto oid) {
-        val oidStr = Oid.marshaller().joinAsOid(oid.getType(), oid.getId());
-        val rootOid = Oid.unmarshaller().unmarshal(oidStr, RootOid.class);
-        return adapterFor(rootOid);
-    }
-
     private ManagedObject adapterFor(final RootOid oid) {
         val objectSpec = specificationLoader.loadSpecification(oid.getObjectSpecId());
         val loadRequest = ObjectLoader.Request.of(objectSpec, oid.getIdentifier());