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 2012/05/15 00:45:03 UTC

svn commit: r1338472 [4/8] - in /incubator/isis/trunk/framework/runtimes/dflt: objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/ objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ ob...

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlPersistorInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlPersistorInstaller.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlPersistorInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlPersistorInstaller.java Mon May 14 22:44:57 2012
@@ -29,7 +29,7 @@ import org.apache.isis.runtimes.dflt.run
 import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
 
 public class SqlPersistorInstaller extends ObjectStorePersistenceMechanismInstallerAbstract {
@@ -74,11 +74,11 @@ public class SqlPersistorInstaller exten
     }
 
     @Override
-    protected OidGenerator createOidGenerator(final IsisConfiguration configuration) {
+    protected IdentifierGenerator createIdentifierGenerator(final IsisConfiguration configuration) {
         final DatabaseConnectorFactory connectorFactory = new JdbcConnectorFactory();
         connectionPool = new DatabaseConnectorPool(connectorFactory, 1);
 
-        return new SqlOidGenerator(connectionPool);
+        return new SqlIdentifierGenerator(connectionPool);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java Mon May 14 22:44:57 2012
@@ -43,6 +43,8 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
+
 import org.apache.log4j.Logger;
 
 import com.google.common.collect.Maps;
@@ -296,15 +298,14 @@ public abstract class AbstractAutoMapper
     }
 
     protected ObjectAdapter getAdapter(final ObjectSpecification specification, final Oid oid) {
-        final AdapterManager objectLoader = IsisContext.getPersistenceSession().getAdapterManager();
+        final AdapterManager objectLoader = getPersistenceSession().getAdapterManager();
         final ObjectAdapter adapter = objectLoader.getAdapterFor(oid);
         if (adapter != null) {
             return adapter;
-        } else {
-            return IsisContext.getPersistenceSession().recreateAdapter(oid, specification);
         }
+        return getPersistenceSession().recreateAdapter(specification, oid);
     }
-
+    
     protected FieldMapping fieldMappingFor(final ObjectAssociation field) {
         return fieldMappingByField.get(field);
     }
@@ -348,5 +349,10 @@ public abstract class AbstractAutoMapper
 		return IsisContext.getConfiguration();
 	}
 
+    protected PersistenceSession getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+
 
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java Mon May 14 22:44:57 2012
@@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.ResolveState;
 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.TypedOid;
 import org.apache.isis.core.metamodel.adapter.util.InvokeUtils;
 import org.apache.isis.core.metamodel.adapter.version.SerialNumberVersion;
 import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacet;
@@ -260,15 +261,16 @@ public class AutoMapper extends Abstract
     }
 
     @Override
-    public ObjectAdapter getObject(final DatabaseConnector connector, final Oid oid, final ObjectSpecification hint) {
+    public ObjectAdapter getObject(final DatabaseConnector connector, final TypedOid typedOid) {
         final StringBuffer sql = createSelectStatement();
         sql.append(" WHERE ");
-        idMapping.appendWhereClause(connector, sql, (RootOid) oid);
+        idMapping.appendWhereClause(connector, sql, (RootOid) typedOid);
         final Results rs = connector.select(completeSelectStatement(sql));
+        final ObjectSpecification objectSpec = getSpecificationLoader().lookupBySpecId(typedOid.getObjectSpecId());
         if (rs.next()) {
-            return loadObject(connector, hint, rs);
+            return loadObject(connector, objectSpec, rs);
         } else {
-            throw new ObjectNotFoundException("No object with with " + oid + " in table " + table);
+            throw new ObjectNotFoundException("No object with with " + typedOid + " in table " + table);
         }
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java Mon May 14 22:44:57 2012
@@ -31,6 +31,7 @@ import org.apache.log4j.Logger;
 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.RootOid;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
@@ -158,9 +159,13 @@ public class PolymorphicForeignKeyInChil
             update.append(") VALUES (");
 
             // Row ID column
-            final RootOid transientOid = oidGenerator.createTransientOid(thisAdapter.getObject());
-            oidGenerator.asPersistent(transientOid);
-            polyIdMapper.appendObjectId(connector, update, transientOid);
+            final Object pojo = thisAdapter.getObject();
+            final RootOid transientRootOid = oidGenerator.createTransientOid(pojo);
+            
+            final RootOid persistentRootOid = oidGenerator.createPersistent(pojo, transientRootOid);
+            
+            polyIdMapper.appendObjectId(connector, update, persistentRootOid);
+            
             // polyIdMapper.appendObjectId(connector, update,
             // thisAdapter.getOid());
             update.append(",");
@@ -215,8 +220,8 @@ public class PolymorphicForeignKeyInChil
 
             // Load new recordSet for the actual class
             final ObjectMapping itemMapper = objectMappingLookup.getMapping(itemSpecification, connector);
-            final Oid oid = idMapping.recreateOid(rs, itemSpecification);
-            final ObjectAdapter loadedObject = itemMapper.getObject(connector, oid, itemSpecification);
+            final TypedOid oid = idMapping.recreateOid(rs, itemSpecification);
+            final ObjectAdapter loadedObject = itemMapper.getObject(connector, oid);
 
             LOG.debug("  element  " + loadedObject.getOid());
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommonBase.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommonBase.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommonBase.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommonBase.java Mon May 14 22:44:57 2012
@@ -32,6 +32,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 
+import org.apache.isis.core.testsupport.files.Files;
 import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
 import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestFixtures.State;
@@ -102,25 +103,6 @@ public abstract class SqlIntegrationTest
     }
 
     
-    /**
-     * Helper, eg to be called within {@link #resetPersistenceStoreDirectlyIfRequired()}.
-     */
-    protected static void deleteFiles(final String directory, final FilenameFilter extension) {
-        final File dir = new File(directory);
-
-        final String[] list = dir.list(extension);
-        File file;
-        if (list.length == 0) {
-            return;
-        }
-
-        for (final String element : list) {
-            file = new File(directory, element);
-            file.delete();
-        }
-    }
-
-
     
     ////////////////////////////////////////////////////////////////////////////////
     // before, after

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java Mon May 14 22:44:57 2012
@@ -25,21 +25,15 @@ package org.apache.isis.runtimes.dflt.ob
 import java.io.File;
 import java.io.FilenameFilter;
 
+import org.apache.isis.core.testsupport.files.Files;
+import org.apache.isis.core.testsupport.files.Files.Recursion;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestData;
 
 public class HsqlTest extends SqlIntegrationTestData {
 
     @Override
     public void resetPersistenceStoreDirectlyIfRequired() {
-        
-        // Delete all HSQL Database files.
-        deleteFiles("hsql-db", new FilenameFilter() {
-
-            @Override
-            public boolean accept(final File arg0, final String arg1) {
-                return arg1.endsWith(".xml");
-            }
-        });
+        Files.deleteFiles("hsql-db", ".xml", Recursion.DONT_RECURSE);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java Mon May 14 22:44:57 2012
@@ -28,6 +28,8 @@ import java.util.List;
 
 import org.junit.Test;
 
+import org.apache.isis.core.testsupport.files.Files;
+import org.apache.isis.core.testsupport.files.Files.Recursion;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestCommonBase;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestFixtures;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestFixtures.State;
@@ -61,15 +63,7 @@ public class PolymorphismTest extends Sq
 
     @Override
     public void resetPersistenceStoreDirectlyIfRequired() {
-        
-        // Delete all HSQL Database files.
-        deleteFiles("hsql-db", new FilenameFilter() {
-
-            @Override
-            public boolean accept(final File arg0, final String arg1) {
-                return arg1.endsWith(".xml");
-            }
-        });
+        Files.deleteFiles("hsql-db", ".xml", Recursion.DONT_RECURSE);
     }
 
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/crosscheck/XmlPersistenceTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/crosscheck/XmlPersistenceTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/crosscheck/XmlPersistenceTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/crosscheck/XmlPersistenceTest.java Mon May 14 22:44:57 2012
@@ -22,10 +22,10 @@
  */
 package org.apache.isis.runtimes.dflt.objectstores.sql.crosscheck;
 
-import java.io.File;
-import java.io.FilenameFilter;
 import java.util.Properties;
 
+import org.apache.isis.core.testsupport.files.Files;
+import org.apache.isis.core.testsupport.files.Files.Recursion;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestData;
 
 public class XmlPersistenceTest extends SqlIntegrationTestData {
@@ -33,14 +33,7 @@ public class XmlPersistenceTest extends 
 
     @Override
     public void resetPersistenceStoreDirectlyIfRequired() {
-        // Delete all XML files.
-        deleteFiles("xml/objects", new FilenameFilter() {
-
-            @Override
-            public boolean accept(final File arg0, final String arg1) {
-                return arg1.endsWith(".xml");
-            }
-        });
+        Files.deleteFiles("xml/objects", ".xml", Recursion.DONT_RECURSE);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStore.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStore.java Mon May 14 22:44:57 2012
@@ -32,9 +32,9 @@ import org.apache.isis.core.commons.exce
 import org.apache.isis.core.commons.xml.XmlFile;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ResolveState;
-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.oid.TypedOid;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -127,7 +127,7 @@ public class XmlObjectStore implements O
     @Override
     public boolean hasInstances(final ObjectSpecification cls) {
         LOG.debug("checking instance of " + cls);
-        final ObjectData data = new ObjectData(null, null);
+        final ObjectData data = new ObjectData(RootOidDefault.create(cls.getSpecId(), "---dummy-value-never-used---"), null);
         return dataManager.numberOfInstances(data) > 0;
     }
 
@@ -186,7 +186,7 @@ public class XmlObjectStore implements O
         final Data fieldData = dataManager.loadData(referenceOid);
 
         if (fieldData == null) {
-            final ObjectAdapter adapter = getPersistenceSession().recreateAdapter(referenceOid, field.getSpecification());
+            final ObjectAdapter adapter = getPersistenceSession().recreateAdapter(field.getSpecification(), referenceOid);
             if (!adapter.getResolveState().isDestroyed()) {
                 adapter.changeState(ResolveState.DESTROYED);
             }
@@ -194,7 +194,7 @@ public class XmlObjectStore implements O
 
             LOG.warn("No data found for " + referenceOid + " so field '" + field.getName() + "' not set in object '" + object.titleString() + "'");
         } else {
-            final ObjectAdapter reference = getPersistenceSession().recreateAdapter(referenceOid, specFor(fieldData));
+            final ObjectAdapter reference = getPersistenceSession().recreateAdapter(specFor(fieldData), referenceOid);
             ((OneToOneAssociation) field).initAssociation(object, reference);
         }
 
@@ -236,7 +236,7 @@ public class XmlObjectStore implements O
                 ObjectAdapter adapter;
                 adapter = getAdapterManager().getAdapterFor(elementOid);
                 if (adapter == null) {
-                    adapter = getObject(elementOid, null);
+                    adapter = getObject(elementOid);
                 }
                 elements[j] = adapter;
             }
@@ -301,8 +301,9 @@ public class XmlObjectStore implements O
     // getObject, resolveImmediately, resolveField
     // /////////////////////////////////////////////////////////
 
+
     @Override
-    public ObjectAdapter getObject(final Oid oid, final ObjectSpecification hint) {
+    public ObjectAdapter getObject(final TypedOid oid) {
         LOG.debug("getObject " + oid);
         final Data data = dataManager.loadData((RootOidDefault) oid);
         LOG.debug("  data read " + data);
@@ -339,7 +340,7 @@ public class XmlObjectStore implements O
     private ObjectAdapter recreateObject(final ObjectData data) {
         final RootOid oid = data.getRootOid();
         final ObjectSpecification spec = specFor(data);
-        final ObjectAdapter object = getPersistenceSession().recreateAdapter(oid, spec);
+        final ObjectAdapter object = getPersistenceSession().recreateAdapter(spec, oid);
         initObject(object, data);
         return object;
     }
@@ -358,7 +359,7 @@ public class XmlObjectStore implements O
 
         final ObjectSpecification objSpec = builtIn.getSpecification();
         LOG.debug("getInstances of " + objSpec + " where " + builtIn);
-        final RootOid oid = RootOidDefault.create(objSpec.getObjectType(), "dummy");
+        final RootOid oid = RootOidDefault.create(objSpec.getSpecId(), "dummy");
         final ObjectData patternData = new ObjectData(oid, null);
         final ObjectAdapter[] instances = getInstances(patternData, builtIn);
         return instances;
@@ -376,7 +377,7 @@ public class XmlObjectStore implements O
             final RootOid oid = instanceData.getRootOid();
 
             final ObjectSpecification spec = specFor(instanceData);
-            final ObjectAdapter instance = getPersistenceSession().recreateAdapter(oid, spec);
+            final ObjectAdapter instance = getPersistenceSession().recreateAdapter(spec, oid);
             LOG.debug("recreated instance " + instance);
             initObject(instance, instanceData);
 
@@ -391,7 +392,7 @@ public class XmlObjectStore implements O
     }
 
     private ObjectSpecification specFor(final Data data) {
-        return getSpecificationLoader().lookupByObjectType(data.getObjectType());
+        return getSpecificationLookup().lookupBySpecId(data.getObjectSpecId());
     }
 
     // /////////////////////////////////////////////////////////
@@ -400,7 +401,7 @@ public class XmlObjectStore implements O
 
     @Override
     public RootOid getOidForService(ObjectSpecification serviceSpec) {
-        return serviceManager.getOidForService(serviceSpec.getObjectType());
+        return serviceManager.getOidForService(serviceSpec.getSpecId());
     }
 
     @Override
@@ -439,7 +440,7 @@ public class XmlObjectStore implements O
     // Dependencies (from singleton)
     // /////////////////////////////////////////////////////////
 
-    protected SpecificationLoader getSpecificationLoader() {
+    protected SpecificationLoader getSpecificationLookup() {
         return IsisContext.getSpecificationLoader();
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlPersistenceMechanismInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlPersistenceMechanismInstaller.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlPersistenceMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlPersistenceMechanismInstaller.java Mon May 14 22:44:57 2012
@@ -19,15 +19,17 @@
 
 package org.apache.isis.runtimes.dflt.objectstores.xml;
 
+import java.util.Date;
+
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.clock.DefaultClock;
 import org.apache.isis.runtimes.dflt.runtime.installerregistry.installerapi.ObjectStorePersistenceMechanismInstallerAbstract;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGeneratorSeededOnCurrentTime;
 import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGeneratorDefault;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
 
 public class XmlPersistenceMechanismInstaller extends ObjectStorePersistenceMechanismInstallerAbstract {
@@ -50,8 +52,9 @@ public class XmlPersistenceMechanismInst
     }
 
     @Override
-    protected OidGenerator createOidGenerator(final IsisConfiguration configuration) {
-        return new RootOidGeneratorSeededOnCurrentTime();
+    protected IdentifierGenerator createIdentifierGenerator(final IsisConfiguration configuration) {
+        final long currentTime = new Date().getTime();
+        return new IdentifierGeneratorDefault(currentTime);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/CollectionData.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/CollectionData.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/CollectionData.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/CollectionData.java Mon May 14 22:44:57 2012
@@ -46,6 +46,6 @@ public class CollectionData extends Data
 
     @Override
     public String toString() {
-        return "CollectionData[type=" + getObjectType() + ",elements=" + elements + "]";
+        return "CollectionData[type=" + getObjectSpecId() + ",elements=" + elements + "]";
     }
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/Data.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/Data.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/Data.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/Data.java Mon May 14 22:44:57 2012
@@ -22,6 +22,7 @@ package org.apache.isis.runtimes.dflt.ob
 import com.google.common.base.Objects;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLookup;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.version.FileVersion;
@@ -45,12 +46,12 @@ public abstract class Data {
     }
 
     public ObjectSpecification getSpecification(SpecificationLookup specificationLookup) {
-        final String objectType = oid.getObjectType();
-        return specificationLookup.lookupByObjectType(objectType);
+        final ObjectSpecId objectSpecId = oid.getObjectSpecId();
+        return specificationLookup.lookupBySpecId(objectSpecId);
     }
 
-    public String getObjectType() {
-        return getRootOid().getObjectType();
+    public ObjectSpecId getObjectSpecId() {
+        return getRootOid().getObjectSpecId();
     }
 
     @Override
@@ -61,7 +62,7 @@ public abstract class Data {
 
         if (obj instanceof Data) {
             final Data data = (Data) obj;
-            return Objects.equal(data.getObjectType(), getObjectType()) && Objects.equal(data.oid, oid);
+            return Objects.equal(data.getObjectSpecId(), getObjectSpecId()) && Objects.equal(data.oid, oid);
         }
 
         return false;
@@ -70,7 +71,7 @@ public abstract class Data {
     @Override
     public int hashCode() {
         int h = 17;
-        h = 37 * h + getObjectType().hashCode();
+        h = 37 * h + getObjectSpecId().hashCode();
         h = 37 * h + oid.hashCode();
         return h;
     }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectData.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectData.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectData.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectData.java Mon May 14 22:44:57 2012
@@ -151,7 +151,7 @@ public class ObjectData extends Data {
 
     @Override
     public String toString() {
-        return "ObjectData[type=" + getObjectType() + ",oid=" + getRootOid() + ",fields=" + fieldById + "]";
+        return "ObjectData[type=" + getObjectSpecId() + ",oid=" + getRootOid() + ",fields=" + fieldById + "]";
     }
 
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManager.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManager.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManager.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManager.java Mon May 14 22:44:57 2012
@@ -33,6 +33,7 @@ import org.apache.isis.core.commons.ensu
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.xml.ContentWriter;
 import org.apache.isis.core.commons.xml.XmlFile;
+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.spec.ObjectSpecification;
@@ -131,9 +132,8 @@ public class XmlDataManager implements D
     }
 
     private static RootOidDefault oidFrom(final Attributes attributes) {
-        final String objectType = attributes.getValue("type");
-        final String identifier = attributes.getValue("id");
-        return RootOidDefault.create(objectType, identifier);
+        final String oid = attributes.getValue("oid");
+        return RootOidDefault.deString(oid);
     }
 
     private static FileVersion fileVersionFrom(final Attributes attributes) {
@@ -155,9 +155,8 @@ public class XmlDataManager implements D
         public void startElement(final String ns, final String name, final String tagName, final Attributes attrs) throws SAXException {
             if (tagName.equals("instance")) {
                 
-                final String objectType = attrs.getValue("type");
-                final String identifier = attrs.getValue("id");
-                final RootOidDefault oid = RootOidDefault.create(objectType, identifier);
+                final String oidStr = attrs.getValue("oid");
+                final RootOidDefault oid = RootOidDefault.deString(oidStr);
                 
                 instances.addElement(oid);
             }
@@ -399,8 +398,7 @@ public class XmlDataManager implements D
 
                 for (final RootOid elementAt : instances) {
                     writer.append("  <instance");
-                    Utils.appendAttribute(writer, "type", elementAt.getObjectType());
-                    Utils.appendAttribute(writer, "id", elementAt.getIdentifier());
+                    Utils.appendAttribute(writer, "oid", elementAt.enString());
                     writer.append("/>\n");
                 }
                 writer.append("</instances>");
@@ -430,8 +428,7 @@ public class XmlDataManager implements D
                 writer.write("<");
                 writer.write(tag);
                 final RootOid oid = data.getRootOid();
-                Utils.appendAttribute(writer, "type", oid.getObjectType());
-                Utils.appendAttribute(writer, "id", oid.getIdentifier());
+                Utils.appendAttribute(writer, "oid", oid.enString());
                 Utils.appendAttribute(writer, "user", "" + getAuthenticationSession().getUserName());
 
                 final long sequence = data.getVersion().getSequence();
@@ -473,12 +470,11 @@ public class XmlDataManager implements D
     }
 
     private void writeAssociationField(final Writer writer, final String field, final Object entry) throws IOException {
-        final RootOidDefault rootOidDefault = (RootOidDefault) entry;
+        final Oid rootOidDefault = (Oid)entry;
         Assert.assertFalse(rootOidDefault.isTransient());
         writer.append("  <association");
         Utils.appendAttribute(writer, "field", field);
-        Utils.appendAttribute(writer, "type", rootOidDefault.getObjectType());
-        Utils.appendAttribute(writer, "id", rootOidDefault.getIdentifier());
+        Utils.appendAttribute(writer, "oid", rootOidDefault.enString());
         writer.append("/>\n");
     }
 
@@ -496,8 +492,7 @@ public class XmlDataManager implements D
                     throw new ObjectPersistenceException("Can't add tranisent OID (" + oid + ") to " + field + " element.");
                 }
                 writer.append("    <element ");
-                Utils.appendAttribute(writer, "type", rootOidDefault.getObjectType());
-                Utils.appendAttribute(writer, "id", rootOidDefault.getIdentifier());
+                Utils.appendAttribute(writer, "oid", rootOidDefault.enString());
                 writer.append("/>\n");
             }
             writer.append("  </multiple-association>\n");
@@ -520,15 +515,14 @@ public class XmlDataManager implements D
             final Object oid = refs.elementAt(i);
             writer.append("  <element");
             final RootOid rootOid = (RootOid) oid;
-            Utils.appendAttribute(writer, "type", rootOid.getObjectType());
-            Utils.appendAttribute(writer, "id", rootOid.getIdentifier());
+            Utils.appendAttribute(writer, "oid", rootOid.enString());
             writer.append("/>\n");
         }
     }
 
     
     private static String filename(final RootOid oid) {
-        return oid.getObjectType() + File.separator + oid.getIdentifier();
+        return oid.getObjectSpecId() + File.separator + oid.getIdentifier();
     }
 
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/ServiceManager.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/ServiceManager.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/ServiceManager.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/ServiceManager.java Mon May 14 22:44:57 2012
@@ -20,6 +20,7 @@
 package org.apache.isis.runtimes.dflt.objectstores.xml.internal.services;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 
 public interface ServiceManager {
 
@@ -27,6 +28,6 @@ public interface ServiceManager {
 
     void registerService(RootOid rootOid);
 
-    RootOid getOidForService(String objectType);
+    RootOid getOidForService(ObjectSpecId objectSpecId);
 
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/xml/XmlServiceManager.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/xml/XmlServiceManager.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/xml/XmlServiceManager.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/main/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/services/xml/XmlServiceManager.java Mon May 14 22:44:57 2012
@@ -32,8 +32,10 @@ import org.xml.sax.helpers.DefaultHandle
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.xml.ContentWriter;
 import org.apache.isis.core.commons.xml.XmlFile;
+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.spec.ObjectSpecId;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.data.xml.Utils;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.services.ServiceManager;
 
@@ -48,9 +50,9 @@ public class XmlServiceManager implement
     }
 
     @Override
-    public RootOid getOidForService(final String objectType) {
+    public RootOid getOidForService(final ObjectSpecId objectSpecId) {
         for (final ServiceElement element: services) {
-            if (element.oid.getObjectType().equals(objectType)) {
+            if (element.oid.getObjectSpecId().equals(objectSpecId)) {
                 return element.oid;
             }
         }
@@ -80,8 +82,11 @@ public class XmlServiceManager implement
                 writer.append("<" + tag + ">\n");
                 for (final ServiceElement element: services) {
                     writer.append("  <service");
-                    Utils.appendAttribute(writer, "type", element.oid.getObjectType());
-                    Utils.appendAttribute(writer, "id", element.oid.getIdentifier());
+//                    Utils.appendAttribute(writer, "type", element.oid.getObjectSpecId());
+//                    Utils.appendAttribute(writer, "id", element.oid.getIdentifier());
+
+                  Utils.appendAttribute(writer, "oid", element.oid.enString());
+
                     writer.append("/>\n");
                 }
                 writer.append("</" + tag + ">\n");
@@ -91,9 +96,9 @@ public class XmlServiceManager implement
 }
 
 class ServiceElement {
-    final RootOidDefault oid;
+    final RootOid oid;
 
-    public ServiceElement(final RootOidDefault oid) {
+    public ServiceElement(final RootOid oid) {
         Assert.assertNotNull("oid", oid.enString());
         this.oid = oid;
     }
@@ -105,10 +110,18 @@ class ServiceHandler extends DefaultHand
     @Override
     public void startElement(final String ns, final String name, final String tagName, final Attributes attrs) throws SAXException {
         if (tagName.equals("service")) {
-            final String objectType = attrs.getValue("type");
-            final String identifier = attrs.getValue("id");
-            final ServiceElement service = new ServiceElement(RootOidDefault.create(objectType, identifier));
+//            final String objectType = attrs.getValue("type");
+//            final String identifier = attrs.getValue("id");
+//             final RootOid rootOid = RootOidDefault.create(objectType, identifier);
+            
+            final String oidStr = attrs.getValue("oid");
+            RootOid rootOid = getOidMarshaller().unmarshal(oidStr, RootOid.class);
+            final ServiceElement service = new ServiceElement(rootOid);
             services.add(service);
         }
     }
+
+    protected OidMarshaller getOidMarshaller() {
+        return new OidMarshaller();
+    }
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_persist.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_persist.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_persist.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_persist.java Mon May 14 22:44:57 2012
@@ -19,6 +19,11 @@
 
 package org.apache.isis.runtimes.dflt.objectstores.xml;
 
+import java.io.File;
+import java.io.FilenameFilter;
+
+import org.apache.isis.core.testsupport.files.Files;
+import org.apache.isis.core.testsupport.files.Files.Recursion;
 import org.apache.isis.runtimes.dflt.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
 import org.apache.isis.runtimes.dflt.testsupport.tck.ObjectStoreContractTest_persist;
 
@@ -28,4 +33,23 @@ public class XmlObjectStoreTest_persist 
     protected PersistenceMechanismInstaller createPersistenceMechanismInstaller() {
         return new XmlPersistenceMechanismInstaller();
     }
+
+    protected void resetPersistenceStore() {
+        Files.deleteFiles("xml/objects", Files.and(endsWithXml(), notServicesXml()), Recursion.DO_RECURSE);
+    }
+
+    private static FilenameFilter notServicesXml() {
+        return new FilenameFilter() {
+            
+            @Override
+            public boolean accept(File parentDirectory, String fileName) {
+                return !fileName.equals("services.xml");
+            }
+        };
+    }
+
+    private static FilenameFilter endsWithXml() {
+        return Files.filterFileNameExtension(".xml");
+    }
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_toRefactor.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_toRefactor.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_toRefactor.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/XmlObjectStoreTest_toRefactor.java Mon May 14 22:44:57 2012
@@ -32,6 +32,7 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
@@ -153,7 +154,8 @@ public class XmlObjectStoreTest_toRefact
     public void validatesObjectStoreGetObject() throws Exception {
         final SaveObjectCommand command = objectStore.createSaveObjectCommand(adapter1);
         objectStore.execute(Collections.<PersistenceCommand> singletonList(command));
-        assertTrue(objectStore.getObject(adapter1.getOid(), adapter1.getSpecification()).getOid().equals(adapter1.getOid()));
+        final ObjectAdapter retrievedAdapter = objectStore.getObject((TypedOid) adapter1.getOid());
+        assertTrue(retrievedAdapter.getOid().equals(adapter1.getOid()));
     }
 
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataTest.java Mon May 14 22:44:57 2012
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import junit.framework.TestCase;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.clock.DefaultClock;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.version.FileVersion;
@@ -36,7 +37,7 @@ public class ObjectDataTest extends Test
         FileVersion.setClock(new DefaultClock());
 
         final ObjectSpecificationStub type = new ObjectSpecificationStub("test");
-        final ObjectData objectData = new ObjectData(RootOidDefault.create(objectType, ""+13), new FileVersion(""));
+        final ObjectData objectData = new ObjectData(RootOidDefault.create(ObjectSpecId.of(objectType), ""+13), new FileVersion(""));
 
         assertEquals(null, objectData.get("name"));
         objectData.set("name", "value");

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataVectorTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataVectorTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataVectorTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ObjectDataVectorTest.java Mon May 14 22:44:57 2012
@@ -26,7 +26,9 @@ import java.util.Collections;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.isis.core.metamodel.adapter.oid.Oid.State;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.testspec.ObjectSpecificationStub;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.version.FileVersion;
 
@@ -42,8 +44,8 @@ public class ObjectDataVectorTest {
 
     @Before
     public void setUp() throws Exception {
-        final boolean isTransient = true;
-        oid = isTransient ? RootOidDefault.createTransient(objectType, ""+1) : RootOidDefault.create(objectType, ""+1);
+        final ObjectSpecId objectSpecId = ObjectSpecId.of(objectType);
+        oid = new RootOidDefault(objectSpecId, ""+1, State.TRANSIENT);
 
         spec = new ObjectSpecificationStub(this.getClass());
         spec.fields = Collections.emptyList();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ReferenceVectorTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ReferenceVectorTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ReferenceVectorTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/ReferenceVectorTest.java Mon May 14 22:44:57 2012
@@ -26,6 +26,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 
 public class ReferenceVectorTest {
     
@@ -36,7 +37,7 @@ public class ReferenceVectorTest {
 
     @Before
     public void setUp() throws Exception {
-        oid = RootOidDefault.createTransient(objectType, ""+1);
+        oid = RootOidDefault.createTransient(ObjectSpecId.of(objectType), ""+1);
         listOfRootOid = new ListOfRootOid();
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest.java Mon May 14 22:44:57 2012
@@ -32,6 +32,7 @@ import org.junit.Test;
 
 import org.apache.isis.core.commons.xml.XmlFile;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.runtimes.dflt.objectstores.xml.XmlPersistenceMechanismInstaller;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.clock.DefaultClock;
@@ -88,7 +89,7 @@ public class XmlDataManagerTest {
         final ObjectData read = (ObjectData) manager.loadData(data.getRootOid());
 
         assertEquals(data.getRootOid(), read.getRootOid());
-        assertEquals(data.getObjectType(), read.getObjectType());
+        assertEquals(data.getObjectSpecId(), read.getObjectSpecId());
         assertEquals(data.getVersion(), read.getVersion());
     }
 
@@ -103,7 +104,7 @@ public class XmlDataManagerTest {
     @Test
     public void testInsertObjectWithFields() throws ObjectPersistenceException {
         final ObjectData data = createData(Role.class, 99, new FileVersion("user", 13));
-        data.set("Person", RootOidDefault.create("RLE", ""+101));
+        data.set("Person", RootOidDefault.create(ObjectSpecId.of("RLE"), ""+101));
         assertNotNull(data.get("Person"));
         data.set("Name", "Harry");
         assertNotNull(data.get("Name"));
@@ -112,7 +113,7 @@ public class XmlDataManagerTest {
 
         final ObjectData read = (ObjectData) manager.loadData(data.getRootOid());
         assertEquals(data.getRootOid(), read.getRootOid());
-        assertEquals(data.getObjectType(), read.getObjectType());
+        assertEquals(data.getObjectSpecId(), read.getObjectSpecId());
 
         assertEquals(data.get("Person"), read.get("Person"));
         assertEquals(data.get("Name"), read.get("Name"));
@@ -128,7 +129,7 @@ public class XmlDataManagerTest {
 
         final ObjectData read = (ObjectData) manager.loadData(data.getRootOid());
         assertEquals(data.getRootOid(), read.getRootOid());
-        assertEquals(data.getObjectType(), read.getObjectType());
+        assertEquals(data.getObjectSpecId(), read.getObjectSpecId());
 
         final ListOfRootOid c = read.elements("Members");
         assertNull(c);
@@ -141,14 +142,14 @@ public class XmlDataManagerTest {
         data.initCollection("Members");
         final RootOidDefault oid[] = new RootOidDefault[3];
         for (int i = 0; i < oid.length; i++) {
-            oid[i] = RootOidDefault.create("TEA", ""+ (104 + i));
+            oid[i] = RootOidDefault.create(ObjectSpecId.of("TEA"), ""+ (104 + i));
             data.addElement("Members", oid[i]);
         }
         manager.insertObject(data);
 
         final ObjectData read = (ObjectData) manager.loadData(data.getRootOid());
         assertEquals(data.getRootOid(), read.getRootOid());
-        assertEquals(data.getObjectType(), read.getObjectType());
+        assertEquals(data.getObjectSpecId(), read.getObjectSpecId());
 
         final ListOfRootOid c = read.elements("Members");
         for (int i = 0; i < oid.length; i++) {
@@ -160,8 +161,8 @@ public class XmlDataManagerTest {
     private ObjectData createData(final Class<?> type, final long id, final FileVersion version) {
 
         final ObjectSpecification objSpec = IsisContext.getSpecificationLoader().loadSpecification(type);
-        final String objectType = objSpec.getObjectType();
-        final RootOidDefault oid = RootOidDefault.create(objectType, ""+id);
+        final ObjectSpecId objectSpecId = objSpec.getSpecId();
+        final RootOidDefault oid = RootOidDefault.create(objectSpecId, ""+id);
         return new ObjectData(oid, version);
     }
     /*

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest_instances.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest_instances.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest_instances.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/xml/src/test/java/org/apache/isis/runtimes/dflt/objectstores/xml/internal/data/xml/XmlDataManagerTest_instances.java Mon May 14 22:44:57 2012
@@ -34,6 +34,7 @@ import org.junit.Test;
 import org.apache.isis.core.commons.xml.XmlFile;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.runtimes.dflt.objectstores.xml.XmlPersistenceMechanismInstaller;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.clock.DefaultClock;
 import org.apache.isis.runtimes.dflt.objectstores.xml.internal.data.ObjectData;
@@ -69,9 +70,9 @@ public class XmlDataManagerTest_instance
         oids = new RootOid[SIZE];
         data = new ObjectData[SIZE];
 
-        pattern = new ObjectData(RootOidDefault.create("RLE|1"), new FileVersion("user", 13));
+        pattern = new ObjectData(RootOidDefault.deString("RLE:1"), new FileVersion("user", 13));
         for (int i = 0; i < SIZE; i++) {
-            oids[i] = RootOidDefault.create("RLE", ""+i);
+            oids[i] = RootOidDefault.create(ObjectSpecId.of("RLE"), ""+i);
             data[i] = new ObjectData(oids[i], new FileVersion("user", 13));
             manager.insertObject(data[i]);
         }
@@ -116,7 +117,7 @@ public class XmlDataManagerTest_instance
 
     @Test
     public void testSaveObject() throws Exception {
-        data[2].set("Person", RootOidDefault.create("PER", ""+231));
+        data[2].set("Person", RootOidDefault.create(ObjectSpecId.of("PER"), ""+231));
         data[2].set("Name", "Fred");
         manager.save(data[2]);
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/ObjectStorePersistenceMechanismInstallerAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/ObjectStorePersistenceMechanismInstallerAbstract.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/ObjectStorePersistenceMechanismInstallerAbstract.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/ObjectStorePersistenceMechanismInstallerAbstract.java Mon May 14 22:44:57 2012
@@ -29,17 +29,15 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.runtime.logging.Logger;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.AdapterManagerExtended;
-import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.IsisStoreLogger;
+import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.IsisObjectStoreLogger;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStorePersistence;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStoreTransactionManagement;
-import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.PersistenceSessionObjectStore;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.algorithm.dflt.DefaultPersistAlgorithm;
-import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.ObjectStoreTransactionManager;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.ObjectFactory;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionTransactionManagement;
@@ -58,7 +56,7 @@ public abstract class ObjectStorePersist
      * to downcast if required.
      */
     @Override
-    protected PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory, final AdapterManagerExtended adapterManager, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final OidGenerator oidGenerator,
+    protected PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory, final AdapterManagerExtended adapterManager, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final IdentifierGenerator identifierGenerator,
             final ServicesInjector servicesInjector) {
 
         final PersistAlgorithm persistAlgorithm = createPersistAlgorithm(getConfiguration());
@@ -69,10 +67,10 @@ public abstract class ObjectStorePersist
 
         if (getConfiguration().getBoolean(LOGGING_PROPERTY, false)) {
             final String level = getConfiguration().getString(LOGGING_PROPERTY + ".level", "debug");
-            objectStore = new IsisStoreLogger(objectStore, level);
+            objectStore = new IsisObjectStoreLogger(objectStore, level);
         }
 
-        final PersistenceSessionObjectStore persistenceSession = createObjectStorePersistor(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, oidGenerator, adapterManager, persistAlgorithm, objectStore);
+        final PersistenceSession persistenceSession = createObjectStorePersistor(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, identifierGenerator, adapterManager, persistAlgorithm, objectStore);
 
         final IsisTransactionManager transactionManager = createTransactionManager(persistenceSession, objectStore);
 
@@ -94,9 +92,9 @@ public abstract class ObjectStorePersist
      * Can optionally be overridden, but by default creates an
      * {@link PersistenceSessionObjectStore}.
      */
-    protected PersistenceSessionObjectStore createObjectStorePersistor(final PersistenceSessionFactory persistenceSessionFactory, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final ServicesInjector servicesInjector, final OidGenerator oidGenerator,
+    protected PersistenceSession createObjectStorePersistor(final PersistenceSessionFactory persistenceSessionFactory, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final ServicesInjector servicesInjector, final IdentifierGenerator identifierGenerator,
             final AdapterManagerExtended adapterManager, final PersistAlgorithm persistAlgorithm, final ObjectStorePersistence objectStore) {
-        return new PersistenceSessionObjectStore(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, oidGenerator, adapterManager, persistAlgorithm, objectStore);
+        return new PersistenceSession(persistenceSessionFactory, adapterFactory, objectFactory, servicesInjector, identifierGenerator, adapterManager, persistAlgorithm, objectStore);
     }
 
     /**
@@ -116,7 +114,7 @@ public abstract class ObjectStorePersist
      * By default returns a {@link ObjectStoreTransactionManager}.
      */
     protected IsisTransactionManager createTransactionManager(final PersistenceSessionTransactionManagement persistor, final ObjectStoreTransactionManagement objectStore) {
-        return new ObjectStoreTransactionManager(persistor, objectStore);
+        return new IsisTransactionManager(persistor, objectStore);
     }
 
     // ///////////////////////////////////////////

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java Mon May 14 22:44:57 2012
@@ -39,11 +39,11 @@ import org.apache.isis.core.metamodel.se
 import org.apache.isis.runtimes.dflt.runtime.installerregistry.InstallerLookup;
 import org.apache.isis.runtimes.dflt.runtime.installerregistry.InstallerLookupAware;
 import org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceConstants;
-import org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceSessionLogger;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adapterfactory.pojo.PojoAdapterFactory;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.AdapterManagerDefault;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.AdapterManagerExtended;
 import org.apache.isis.runtimes.dflt.runtime.persistence.internal.RuntimeContextFromSession;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.ObjectFactory;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
@@ -84,11 +84,11 @@ public abstract class PersistenceMechani
      * 
      * @see #createPersistenceSession(PersistenceSessionFactory,
      *      AdapterManagerExtended, ObjectAdapterFactory, ObjectFactory,
-     *      OidGenerator, ServicesInjector)
+     *      IdentifierGenerator, ServicesInjector)
      * @see #createAdapterFactory(IsisConfiguration)
      * @see #createAdapterManager(IsisConfiguration)
      * @see #createContainer(IsisConfiguration)
-     * @see #createOidGenerator(IsisConfiguration)
+     * @see #createIdentifierGenerator(IsisConfiguration)
      * @see #createRuntimeContext(IsisConfiguration)
      * @see #createServicesInjector(IsisConfiguration)
      */
@@ -101,7 +101,7 @@ public abstract class PersistenceMechani
         final AdapterManagerExtended adapterManager = createAdapterManager(getConfiguration());
         final ObjectAdapterFactory adapterFactory = createAdapterFactory(getConfiguration());
         final ObjectFactory objectFactory = createObjectFactory(getConfiguration());
-        final OidGenerator oidGenerator = createOidGenerator(getConfiguration());
+        final IdentifierGenerator identifierGenerator = createIdentifierGenerator(getConfiguration());
 
         final RuntimeContext runtimeContext = createRuntimeContext(getConfiguration());
         final DomainObjectContainer container = createContainer(getConfiguration());
@@ -112,7 +112,7 @@ public abstract class PersistenceMechani
         ensureThatArg(adapterManager, is(not(nullValue())));
         ensureThatArg(adapterFactory, is(not(nullValue())));
         ensureThatArg(objectFactory, is(not(nullValue())));
-        ensureThatArg(oidGenerator, is(not(nullValue())));
+        ensureThatArg(identifierGenerator, is(not(nullValue())));
 
         ensureThatArg(runtimeContext, is(not(nullValue())));
         ensureThatArg(container, is(not(nullValue())));
@@ -127,13 +127,7 @@ public abstract class PersistenceMechani
         servicesInjector.setServices(serviceList);
         persistenceSessionFactory.getSpecificationLoader().injectInto(runtimeContext);
 
-        PersistenceSession persistenceSession = createPersistenceSession(persistenceSessionFactory, adapterManager, adapterFactory, objectFactory, oidGenerator, servicesInjector);
-
-        if (getConfiguration().getBoolean(LOGGING_PROPERTY, false)) {
-            final String level = getConfiguration().getString(LOGGING_PROPERTY + ".level", "debug");
-            persistenceSession = new PersistenceSessionLogger(persistenceSession, level);
-        }
-
+        final PersistenceSession persistenceSession = createPersistenceSession(persistenceSessionFactory, adapterManager, adapterFactory, objectFactory, identifierGenerator, servicesInjector);
         return persistenceSession;
     }
 
@@ -148,7 +142,7 @@ public abstract class PersistenceMechani
      * 
      * @see #createPersistenceSession(PersistenceSessionFactory)
      */
-    protected abstract PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory, final AdapterManagerExtended adapterManager, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final OidGenerator oidGenerator,
+    protected abstract PersistenceSession createPersistenceSession(final PersistenceSessionFactory persistenceSessionFactory, final AdapterManagerExtended adapterManager, final ObjectAdapterFactory adapterFactory, final ObjectFactory objectFactory, final IdentifierGenerator identifierGenerator,
             final ServicesInjector servicesInjector);
 
     // ///////////////////////////////////////////
@@ -210,13 +204,13 @@ public abstract class PersistenceMechani
      * <p>
      * By default, looks up implementation from provided
      * {@link IsisConfiguration} using
-     * {@link PersistenceConstants#OID_GENERATOR_CLASS_NAME}. If no
+     * {@link PersistenceConstants#IDENTIFIER_GENERATOR_CLASS_NAME}. If no
      * implementation is specified, then defaults to
-     * {@value PersistenceConstants#OID_GENERATOR_CLASS_NAME_DEFAULT}.
+     * {@value PersistenceConstants#IDENTIFIER_GENERATOR_CLASS_NAME_DEFAULT}.
      */
-    protected OidGenerator createOidGenerator(final IsisConfiguration configuration) {
-        final String oidGeneratorClassName = configuration.getString(PersistenceConstants.OID_GENERATOR_CLASS_NAME, PersistenceConstants.OID_GENERATOR_CLASS_NAME_DEFAULT);
-        return InstanceUtil.createInstance(oidGeneratorClassName, OidGenerator.class);
+    protected IdentifierGenerator createIdentifierGenerator(final IsisConfiguration configuration) {
+        final String identifierGeneratorClassName = configuration.getString(PersistenceConstants.IDENTIFIER_GENERATOR_CLASS_NAME, PersistenceConstants.IDENTIFIER_GENERATOR_CLASS_NAME_DEFAULT);
+        return InstanceUtil.createInstance(identifierGeneratorClassName, IdentifierGenerator.class);
     }
 
     /**

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/memento/Memento.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/memento/Memento.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/memento/Memento.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/memento/Memento.java Mon May 14 22:44:57 2012
@@ -29,9 +29,7 @@ import org.apache.log4j.Logger;
 
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.encoding.DataInputStreamExtended;
-import org.apache.isis.core.commons.encoding.DataOutputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputStreamExtended;
-import org.apache.isis.core.commons.encoding.Encodable;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -193,10 +191,10 @@ public class Memento implements Serializ
         ObjectAdapter adapter;
         ResolveState targetState;
         if (getOid().isTransient()) {
-            adapter = getHydrator().recreateAdapter(getOid(), spec);
+            adapter = getHydrator().recreateAdapter(spec, getOid());
             targetState = ResolveState.SERIALIZING_TRANSIENT;
         } else {
-            adapter = getHydrator().recreateAdapter(getOid(), spec);
+            adapter = getHydrator().recreateAdapter(spec, getOid());
             targetState = ResolveState.UPDATING;
         }
         
@@ -233,7 +231,7 @@ public class Memento implements Serializ
                 return null;
             }
             ObjectAdapter ref;
-            ref = getHydrator().recreateAdapter(oid, spec);
+            ref = getHydrator().recreateAdapter(spec, oid);
             if (data instanceof ObjectData) {
                 if (oid.isTransient() || spec.isParented()) {
                     final ResolveState resolveState = spec.isParented() ? ResolveState.GHOST : ResolveState.TRANSIENT;

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceConstants.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceConstants.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceConstants.java Mon May 14 22:44:57 2012
@@ -27,9 +27,9 @@ import org.apache.isis.core.metamodel.se
 import org.apache.isis.core.metamodel.services.ServicesInjectorDefault;
 import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adapterfactory.pojo.PojoAdapterFactory;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGeneratorDefault;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.ObjectFactory;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
 
 public final class PersistenceConstants {
 
@@ -41,11 +41,11 @@ public final class PersistenceConstants 
     public static final String ADAPTER_FACTORY_CLASS_NAME_DEFAULT = PojoAdapterFactory.class.getName();
 
     /**
-     * Key used to lookup implementation of {@link OidGenerator} in
+     * Key used to lookup implementation of {@link IdentifierGenerator} in
      * {@link IsisConfiguration}.
      */
-    public static final String OID_GENERATOR_CLASS_NAME = ConfigurationConstants.ROOT + "persistor.oid-generator";
-    public static final String OID_GENERATOR_CLASS_NAME_DEFAULT = RootOidGenerator.class.getName();
+    public static final String IDENTIFIER_GENERATOR_CLASS_NAME = ConfigurationConstants.ROOT + "persistor.identifier-generator";
+    public static final String IDENTIFIER_GENERATOR_CLASS_NAME_DEFAULT = IdentifierGeneratorDefault.class.getName();
 
     /**
      * Key used to lookup implementation of {@link ObjectFactory} in

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerDefault.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerDefault.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerDefault.java Mon May 14 22:44:57 2012
@@ -36,6 +36,7 @@ import org.apache.isis.core.commons.debu
 import org.apache.isis.core.commons.debug.DebuggableWithTitle;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.ensure.Ensure;
+import org.apache.isis.core.commons.ensure.IsisAssertException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactoryAware;
@@ -44,6 +45,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
 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.TypedOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.object.aggregated.ParentedFacet;
@@ -52,17 +54,17 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.runtimecontext.DependencyInjector;
 import org.apache.isis.core.metamodel.runtimecontext.DependencyInjectorAware;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.internal.OidAdapterHashMap;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.internal.OidAdapterMap;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.internal.PojoAdapterHashMap;
 import org.apache.isis.runtimes.dflt.runtime.persistence.adaptermanager.internal.PojoAdapterMap;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.OidGeneratorAware;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGeneratorAware;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
 
 public class AdapterManagerDefault extends AdapterManagerAbstract implements ObjectAdapterFactoryAware, SpecificationLoaderAware, OidGeneratorAware, DependencyInjectorAware, DebuggableWithTitle {
@@ -207,7 +209,7 @@ public class AdapterManagerDefault exten
      * {@inheritDoc}
      */
     @Override
-    public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter parentAdapter, final ObjectAssociation association) {
+    public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter parentAdapter, final OneToManyAssociation collection) {
 
         // attempt to locate adapter for the pojo
         final ObjectAdapter adapter = getAdapterFor(pojo);
@@ -226,22 +228,16 @@ public class AdapterManagerDefault exten
         // as explained in the AdapterMap javadoc
         final ObjectAdapter newAdapter;
         if (parentAdapter != null) {
-            if (association != null) {
-                if(association.isOneToManyAssociation()) {
-                    // the List, Set etc. instance gets wrapped in its own adapter
-                    final OneToManyAssociation collection = (OneToManyAssociation) association;
-                    newAdapter = createCollectionAdapter(pojo, parentAdapter, collection);
-                } else {
-                    newAdapter = createTransientRootAdapter(pojo);
-                }
-            } else {
+            if (collection == null) {
                 if(isAggregated(objSpec)) {
-                    final String aggregateLocalId = getOidGenerator().createAggregateLocalId(pojo);
-                    final AggregatedOid aggregatedOid = new AggregatedOid(parentAdapter.getOid(), aggregateLocalId);
+                    final AggregatedOid aggregatedOid = getOidGenerator().createAggregateOid(pojo, parentAdapter);
                     newAdapter = createAggregatedAdapter(pojo, aggregatedOid);
                 } else {
                     newAdapter = createTransientRootAdapter(pojo);
                 }
+            } else {
+                // the List, Set etc. instance gets wrapped in its own adapter
+                newAdapter = createCollectionAdapter(pojo, parentAdapter, collection);
             }
         } else {
             // not parented
@@ -272,7 +268,7 @@ public class AdapterManagerDefault exten
         final Oid parentOid = parentAdapter.getOid();
 
         // persistence of collection follows the parent
-        final CollectionOid collectionOid = new CollectionOid(parentOid, otma);
+        final CollectionOid collectionOid = new CollectionOid((TypedOid) parentOid, otma);
         final ObjectAdapter collectionAdapter = createCollectionAdapterAndInferResolveState(pojo, collectionOid);
 
         // we copy over the type onto the adapter itself
@@ -284,7 +280,6 @@ public class AdapterManagerDefault exten
 
         return collectionAdapter;
     }
-    
 
     private static boolean isAggregated(final ObjectSpecification objSpec) {
         return objSpec.containsFacet(ParentedFacet.class);
@@ -317,13 +312,13 @@ public class AdapterManagerDefault exten
     private ObjectAdapter createRootOrAggregatedAdapter(final Oid oid, final Object pojo) {
         final ObjectAdapter createdAdapter;
         if(oid instanceof RootOid) {
-            RootOid rootOid = (RootOid) oid;
+            final RootOid rootOid = (RootOid) oid;
             createdAdapter = createRootAdapterAndInferResolveState(pojo, rootOid);
         } else if (oid instanceof CollectionOid){
-            CollectionOid collectionOid = (CollectionOid) oid;
+            final CollectionOid collectionOid = (CollectionOid) oid;
             createdAdapter = createCollectionAdapterAndInferResolveState(pojo, collectionOid);
         } else {
-            AggregatedOid aggregatedOid = (AggregatedOid) oid;
+            final AggregatedOid aggregatedOid = (AggregatedOid) oid;
             createdAdapter = createAggregatedAdapter(pojo, aggregatedOid);
         }
         return createdAdapter;
@@ -375,11 +370,11 @@ public class AdapterManagerDefault exten
      * practice this is done by the <tt>ObjectAdapterStore</tt> implementation
      * delegated by the <tt>PersistenceSessionObjectStore</tt>, and propagated
      * back to client-side as required).
+     * 
+     * @param hintRootOid - intended for testing, allow a different persistent root oid to be provided.  Must be persistent and compatible with the adapter's type
      */
     @Override
-    public void remapAsPersistent(final ObjectAdapter adapter) {
-        // ??? REVIEW: don't do this because the Oid has been updated already
-        // ensureMapsConsistent(adapter);
+    public void remapAsPersistent(final ObjectAdapter adapter, RootOid hintRootOid) {
         
         final ObjectAdapter rootAdapter = adapter.getAggregateRoot();
         final RootOid transientRootOid = (RootOid) rootAdapter.getOid();
@@ -419,7 +414,25 @@ public class AdapterManagerDefault exten
         if (LOG.isDebugEnabled()) {
             LOG.debug("updating the Oid");
         }
-        final RootOid persistedRootOid = getOidGenerator().asPersistent(transientRootOid);
+        
+        // intended for testing (bit nasty)
+        final RootOid persistedRootOid;
+        if(hintRootOid != null) {
+            if(hintRootOid.isTransient()) {
+                throw new IsisAssertException("hintRootOid must be persistent");
+            }
+            final ObjectSpecId hintRootOidObjectSpecId = hintRootOid.getObjectSpecId();
+            final ObjectSpecId adapterObjectSpecId = adapter.getSpecification().getSpecId();
+            if(!hintRootOidObjectSpecId.equals(adapterObjectSpecId)) {
+                throw new IsisAssertException("hintRootOid's objectType must be same as that of adapter " +
+                		"(was: '" + hintRootOidObjectSpecId + "'; adapter's is " + adapterObjectSpecId + "'");
+            }
+            // ok
+            persistedRootOid = hintRootOid;
+        } else {
+            // normal flow - delegate to OidGenerator to obtain a persistent root oid
+            persistedRootOid = getOidGenerator().createPersistent(adapter.getObject(), transientRootOid);
+        }
         
         // associate root adapter with the new Oid, and remap
         if (LOG.isDebugEnabled()) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerPersist.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerPersist.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerPersist.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/adaptermanager/AdapterManagerPersist.java Mon May 14 22:44:57 2012
@@ -23,7 +23,9 @@ import org.apache.isis.applib.annotation
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ResolveState;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
 
 /**
@@ -45,8 +47,10 @@ public interface AdapterManagerPersist {
      * As a consequence of this call, the adapter's {@link Oid} will be
      * {@link ObjectAdapter#replaceOid(Oid) replaced} (Oids are now immutable).
      * The same is true of the associated collection adapters.
+     * 
+     * @param hintRootOid - primarily for testing purposes, to set the adapter with a specific rootOid.  Is passed through to the {@link OidGenerator}.
      */
-    void remapAsPersistent(ObjectAdapter adapter);
+    void remapAsPersistent(ObjectAdapter adapter, RootOid hintRootOid);
 
     /**
      * Either returns an existing {@link ObjectAdapter adapter} (as per