You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/09/08 08:51:16 UTC

[05/12] isis git commit: ISIS-1194: simplified the Oid hierarchy to just two : RootOid and ParentedCollectionOid

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index ceea0a7..cc1c2b5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.services.command.Command.Executor;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
@@ -157,7 +156,7 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
             return adapterFor(arg);
         } else {
             final Bookmark argBookmark = (Bookmark)arg;
-            final RootOid rootOid = RootOidDefault.create(argBookmark);
+            final RootOid rootOid = RootOid.create(argBookmark);
             return adapterFor(rootOid);
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
index 070de34..197ce61 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
@@ -20,15 +20,18 @@
 package org.apache.isis.core.runtime.system.persistence;
 
 import java.util.List;
+
 import org.apache.isis.core.commons.components.SessionScopedComponent;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
+import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.runtime.persistence.objectstore.transaction.*;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
+import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
 
 public interface ObjectStore extends TransactionalResource, DebuggableWithTitle, SessionScopedComponent {
 
@@ -108,7 +111,7 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
     // ///////////////////////////////////////////////////////
 
     /**
-     * Retrieves the object identified by the specified {@link TypedOid} from the object
+     * Retrieves the object identified by the specified {@link RootOid} from the object
      * store, {@link AdapterManager#mapRecreatedPojo(org.apache.isis.core.metamodel.adapter.oid.Oid, Object) mapped by the adapter manager}.
      * 
      * <p>The cache should be checked first and, if the object is cached,
@@ -126,12 +129,12 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
      * 
      * <p>
      * If the persistence mechanism does not known of an object with the
-     * specified {@link TypedOid} then a {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} should be
+     * specified {@link RootOid} then a {@link org.apache.isis.core.runtime.persistence.ObjectNotFoundException} should be
      * thrown.
      * 
      * <p>
      * Note that the OID could be for an internal collection, and is
-     * therefore related to the parent object (using a {@link CollectionOid}).
+     * therefore related to the parent object (using a {@link ParentedCollectionOid}).
      * The elements for an internal collection are commonly stored as
      * part of the parent object, so to get element the parent object needs to
      * be retrieved first, and the internal collection can be got from that.
@@ -141,12 +144,12 @@ public interface ObjectStore extends TransactionalResource, DebuggableWithTitle,
      * 
      * 
      * @return the requested {@link ObjectAdapter} that has the specified
-     *         {@link TypedOid}.
+     *         {@link RootOid}.
      * 
      * @throws org.apache.isis.core.runtime.persistence.ObjectNotFoundException
      *             when no object corresponding to the oid can be found
      */
-    ObjectAdapter loadInstanceAndAdapt(TypedOid oid);
+    ObjectAdapter loadInstanceAndAdapt(RootOid oid);
 
 
     // ///////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
index f207992..f8a1e18 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/OidGenerator.java
@@ -19,12 +19,11 @@
 
 package org.apache.isis.core.runtime.system.persistence;
 
-import org.apache.isis.applib.annotation.Aggregated;
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.*;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid.State;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -60,7 +59,7 @@ public class OidGenerator implements DebuggableWithTitle {
         final ObjectSpecId objectSpecId = spec.getSpecId();
         final String transientIdentifier = identifierGenerator.createTransientIdentifierFor(objectSpecId, pojo);
         final State state = spec.containsDoOpFacet(ViewModelFacet.class)? State.VIEWMODEL:State.TRANSIENT;
-        return new RootOidDefault(objectSpecId, transientIdentifier, state);
+        return new RootOid(objectSpecId, transientIdentifier, state);
     }
 
     /**
@@ -82,7 +81,7 @@ public class OidGenerator implements DebuggableWithTitle {
         
         final ObjectSpecification spec = getSpecificationLoader().lookupBySpecId(objectSpecId);
         final State state = spec != null && spec.containsFacet(ViewModelFacet.class)? State.VIEWMODEL:State.PERSISTENT;
-        return new RootOidDefault(objectSpecId, persistentIdentifier, state);
+        return new RootOid(objectSpecId, persistentIdentifier, state);
     }
 
     

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 155467f..ce9ca1b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -40,9 +40,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.ParentedOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
@@ -511,10 +509,10 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
     // ///////////////////////////////////////////////////////////////////////////
 
     /**
-     * Loads the object identified by the specified {@link TypedOid} from the
+     * Loads the object identified by the specified {@link RootOid} from the
      * persisted set of objects.
      */
-    public ObjectAdapter loadObject(final TypedOid oid) {
+    public ObjectAdapter loadObject(final RootOid oid) {
         
         // REVIEW: 
         // this method does not account for the oid possibly being a view model
@@ -533,7 +531,7 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
         return loadMappedObjectFromObjectStore(oid);
     }
 
-    private ObjectAdapter loadMappedObjectFromObjectStore(final TypedOid oid) {
+    private ObjectAdapter loadMappedObjectFromObjectStore(final RootOid oid) {
         final ObjectAdapter adapter = getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
             @Override
             public ObjectAdapter execute() {

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
index d82e19b..be4baef 100644
--- a/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/DataNucleusObjectStore.java
@@ -44,10 +44,8 @@ import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -356,7 +354,7 @@ public class DataNucleusObjectStore implements ObjectStore {
     // loadMappedObject, resolveImmediately, resolveField
     // ///////////////////////////////////////////////////////////////////////
 
-    public ObjectAdapter loadInstanceAndAdapt(final TypedOid oid) {
+    public ObjectAdapter loadInstanceAndAdapt(final RootOid oid) {
         ensureOpened();
         ensureInTransaction();
 
@@ -374,10 +372,8 @@ public class DataNucleusObjectStore implements ObjectStore {
     // delegated to by PojoRecreator
     /////////////////////////////////////////////////////////////
 
-    public Object loadPojo(final TypedOid oid) {
+    public Object loadPojo(final RootOid rootOid) {
     	
-        final RootOid rootOid = (RootOid) oid;
-        
         Object result = null;
         try {
             final Class<?> cls = clsOf(rootOid);
@@ -395,7 +391,7 @@ public class DataNucleusObjectStore implements ObjectStore {
                     final ExceptionRecognizer2.Recognition recognition = recognizer.recognize2(e);
                     if(recognition != null) {
                         if(recognition.getCategory() == ExceptionRecognizer2.Category.NOT_FOUND) {
-                            throw new ObjectNotFoundException(oid, e);
+                            throw new ObjectNotFoundException(rootOid, e);
                         }
                     }
                 }
@@ -405,7 +401,7 @@ public class DataNucleusObjectStore implements ObjectStore {
         }
 
         if (result == null) {
-            throw new ObjectNotFoundException(oid);
+            throw new ObjectNotFoundException(rootOid);
         }
         return result;
     }
@@ -646,7 +642,7 @@ public class DataNucleusObjectStore implements ObjectStore {
     // Helpers
     // ///////////////////////////////////////////////////////////////////////
 
-    private Class<?> clsOf(final TypedOid oid) {
+    private Class<?> clsOf(final RootOid oid) {
         final ObjectSpecification objectSpec = getSpecificationLoader().lookupBySpecId(oid.getObjectSpecId());
         return objectSpec.getCorrespondingClass();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/AggregatedFacetAlways.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/AggregatedFacetAlways.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/AggregatedFacetAlways.java
index db93344..7d175d3 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/AggregatedFacetAlways.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/AggregatedFacetAlways.java
@@ -21,12 +21,12 @@ package org.apache.isis.core.runtime.persistence;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
-import org.apache.isis.core.metamodel.facets.object.parented.ParentedFacet;
+import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
 
 public class AggregatedFacetAlways extends MarkerFacetAbstract {
 
     public AggregatedFacetAlways(final FacetHolder holder) {
-        super(ParentedFacet.class, holder);
+        super(ParentedCollectionFacet.class, holder);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
index c7c3641..804c082 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adapterfactory/pojo/PojoAdapterTest.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.runtime.persistence.adapterfactory.pojo;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
 import java.util.Date;
 
 import org.jmock.Expectations;
@@ -34,7 +31,7 @@ import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -44,6 +41,9 @@ import org.apache.isis.core.runtime.persistence.objectstore.transaction.PojoAdap
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
 public class PojoAdapterTest {
 
     @Rule
@@ -69,7 +69,7 @@ public class PojoAdapterTest {
     public void setUp() throws Exception {
         domainObject = new RuntimeTestPojo();
         
-        adapter = new PojoAdapter(domainObject, RootOidDefault.create(ObjectSpecId.of("CUS"), "1"), mockSpecificationLoader, mockObjectAdapterLookup, mockLocalization, mockAuthenticationSession);
+        adapter = new PojoAdapter(domainObject, RootOid.create(ObjectSpecId.of("CUS"), "1"), mockSpecificationLoader, mockObjectAdapterLookup, mockLocalization, mockAuthenticationSession);
         adapter.setVersion(mockVersion);
         
         allowUnimportantMethodCallsOn(mockVersion);
@@ -95,7 +95,7 @@ public class PojoAdapterTest {
 
     @Test
     public void getOid_initially() {
-        assertEquals(RootOidDefault.create(ObjectSpecId.of("CUS"), "1"), adapter.getOid());
+        assertEquals(RootOid.create(ObjectSpecId.of("CUS"), "1"), adapter.getOid());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault_aggregateAdapters.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault_aggregateAdapters.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault_aggregateAdapters.java
index 9dff5dc..aaeffc5 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault_aggregateAdapters.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault_aggregateAdapters.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.runtime.persistence.adaptermanager;
 
 import com.google.common.collect.Lists;
-import org.jmock.Expectations;
+
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
+
 import org.apache.isis.applib.annotation.Aggregated;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.profiles.Localization;
@@ -32,8 +32,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.app.IsisMetaModel;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
@@ -46,10 +45,6 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
 public class AdapterManagerDefault_aggregateAdapters {
 
     public static class Customer {
@@ -164,7 +159,7 @@ public class AdapterManagerDefault_aggregateAdapters {
         aggregatedObject = new Name();
         
         persistentParentAdapter = adapterManager.mapRecreatedPojo(
-                RootOidDefault.create(ObjectSpecId.of("CUS"), "1"), rootObject);
+                RootOid.create(ObjectSpecId.of("CUS"), "1"), rootObject);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
index 64b1a49..3142ac6 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/PojoAdapterBuilder.java
@@ -26,10 +26,9 @@ import com.google.common.base.Splitter;
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
+import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -71,13 +70,13 @@ public class PojoAdapterBuilder {
         TRANSIENT {
             @Override
             RootOid createOid(ObjectSpecId objectSpecId, String identifier) {
-                return RootOidDefault.createTransient(objectSpecId, identifier);
+                return RootOid.createTransient(objectSpecId, identifier);
             }
         },
         PERSISTENT {
             @Override
             RootOid createOid(ObjectSpecId objectSpecId, String identifier) {
-                return RootOidDefault.create(objectSpecId, identifier);
+                return RootOid.create(objectSpecId, identifier);
             }
         },
         VALUE {
@@ -98,7 +97,7 @@ public class PojoAdapterBuilder {
         }, COLLECTION {
             @Override
             Oid oidFor(RootOid rootOid, ObjectSpecId objectSpecId, String collectionId) {
-                return new CollectionOid(rootOid, collectionId);
+                return new ParentedCollectionOid(rootOid, collectionId);
             }
         }, VALUE {
             @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
index 7db64d3..148bd45 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/util/OidUtils.java
@@ -22,7 +22,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.viewer.restfulobjects.rendering.RendererContext;
 
 public final class OidUtils {
@@ -32,11 +31,11 @@ public final class OidUtils {
 
     public static String getDomainType(final ObjectAdapter objectAdapter) {
         Oid oid = objectAdapter.getOid();
-        if (oid == null || !(oid instanceof TypedOid)) {
+        if (oid == null || !(oid instanceof RootOid)) {
             return null;
         }
-        TypedOid typedOid = (TypedOid) oid;
-        return typedOid.getObjectSpecId().asString();
+        RootOid rootOid = (RootOid) oid;
+        return rootOid.getObjectSpecId().asString();
     }
 
     public static String getInstanceId(final RendererContext renderContext, final ObjectAdapter objectAdapter) {
@@ -51,7 +50,7 @@ public final class OidUtils {
         if (!(oid instanceof RootOid)) {
             throw new IllegalArgumentException("objectAdapter must be a root adapter");
         }
-        return oid != null ? oid.enStringNoVersion(getOidMarshaller()) : null;
+        return oid.enStringNoVersion(getOidMarshaller());
     }
 
     private static OidMarshaller getOidMarshaller() {

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
index a4856ba..e6748f7 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/util/OidUtils.java
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.restfulobjects.server.util;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -60,7 +60,7 @@ public final class OidUtils {
     private static ObjectAdapter getObjectAdapter(
             final RendererContext rendererContext,
             final String oidStrUnencoded) {
-        RootOidDefault rootOid = RootOidDefault.deString(oidStrUnencoded, getOidMarshaller());
+        RootOid rootOid = RootOid.deString(oidStrUnencoded, getOidMarshaller());
         final ObjectSpecId specId = rootOid.getObjectSpecId();
 
         final ObjectSpecification spec = IsisContext.getSpecificationLoader().lookupBySpecId(specId);
@@ -78,7 +78,7 @@ public final class OidUtils {
             // ("*") from the specId, meaning that the marshalling logic above in RootOidDefault.deString() creates an
             // oid in the wrong state.  The code below checks for this and recreates the oid with the current state of 'view model'
             if(!rootOid.isViewModel()) {
-                rootOid = new RootOidDefault(rootOid.getObjectSpecId(), rootOid.getIdentifier(), Oid.State.VIEWMODEL);
+                rootOid = new RootOid(rootOid.getObjectSpecId(), rootOid.getIdentifier(), Oid.State.VIEWMODEL);
             }
 
             try {

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
index 940a1ef..dbf88ef 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 /**
@@ -44,7 +44,7 @@ public class ConverterForObjectAdapter implements IConverter<ObjectAdapter> {
      */
     @Override
     public ObjectAdapter convertToObject(final String value, final Locale locale) {
-        final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
+        final Oid oid = RootOid.deStringEncoded(value, getOidMarshaller());
         return getAdapterManager().getAdapterFor(oid);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
index 7de6544..2b4d778 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChec
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
@@ -54,7 +53,7 @@ public class ConverterForObjectAdapterMemento implements IConverter<ObjectAdapte
         if (Strings.isNullOrEmpty(value)) {
             return null;
         }
-        final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
+        final Oid oid = RootOid.deStringEncoded(value, getOidMarshaller());
         final ObjectAdapter adapter = getAdapterManager().getAdapterFor(oid);
         return ObjectAdapterMemento.createOrNull(adapter);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
index 5df3db7..f40b821 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento.java
@@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChec
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -108,7 +107,7 @@ public class ObjectAdapterMemento implements Serializable {
         PERSISTENT {
             @Override
             ObjectAdapter recreateAdapter(final ObjectAdapterMemento oam, ConcurrencyChecking concurrencyChecking) {
-                TypedOid oid = getOidMarshaller().unmarshal(oam.persistentOidStr, TypedOid.class);
+                RootOid oid = getOidMarshaller().unmarshal(oam.persistentOidStr, RootOid.class);
                 try {
                     final ObjectAdapter adapter = getAdapterManager().adapterFor(oid, concurrencyChecking);
                     return adapter;

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 6851989..c7d3255 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -56,7 +56,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
@@ -399,7 +398,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> {
         }
         
         try {
-            final RootOid oid = RootOidDefault.deStringEncoded(encoded, getOidMarshaller());
+            final RootOid oid = RootOid.deStringEncoded(encoded, getOidMarshaller());
             return getAdapterManager().adapterFor(oid);
         } catch (final Exception e) {
             return null;

http://git-wip-us.apache.org/repos/asf/isis/blob/c3f880b7/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
index 66a781d..0062e8c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
@@ -29,7 +29,6 @@ import org.apache.wicket.util.string.Strings;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -123,7 +122,7 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
                 if(NULL_PLACEHOLDER.equals(input)) {
                     return null;
                 }
-                final RootOid oid = RootOidDefault.deString(input, ObjectAdapterMemento.getOidMarshaller());
+                final RootOid oid = RootOid.deString(input, ObjectAdapterMemento.getOidMarshaller());
                 return ObjectAdapterMemento.createPersistent(oid);
             }
         };