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/03/24 15:01:52 UTC

svn commit: r1304796 [4/16] - in /incubator/isis/trunk/framework: applib/src/main/java/org/apache/isis/applib/ applib/src/test/java/org/apache/isis/applib/ core/commons/src/main/java/org/apache/isis/core/commons/config/ core/commons/src/main/java/org/a...

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/pom.xml?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/pom.xml (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/pom.xml Sat Mar 24 14:01:35 2012
@@ -82,27 +82,7 @@
 		    <groupId>org.apache.isis.runtimes.dflt</groupId>
 		    <artifactId>runtime</artifactId>
 		</dependency>
-		<dependency>
-		    <groupId>org.apache.isis.runtimes.dflt</groupId>
-		    <artifactId>runtime</artifactId>
-		    <type>test-jar</type>
-		    <scope>test</scope>
-		</dependency>
-
-        <!--  todo: remove this dependency -->
-        <dependency>
-            <groupId>org.apache.isis.progmodels</groupId>
-            <artifactId>dflt</artifactId>
-            <version>0.3.0-incubating-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
 
-        <!--  todo: remove this dependency -->
-        <dependency>
-            <groupId>org.apache.isis.runtimes.dflt.bytecode</groupId>
-            <artifactId>dflt</artifactId>
-            <scope>test</scope>
-        </dependency>
 	</dependencies>
 
 </project>

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryObjectStore.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryObjectStore.java Sat Mar 24 14:01:35 2012
@@ -32,6 +32,7 @@ import org.apache.isis.core.commons.exce
 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.version.Version;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
@@ -138,7 +139,7 @@ public class InMemoryObjectStore impleme
             final ObjectAdapter recreatedAdapter = getHydrator().recreateAdapter(oid, pojo);
 
             final Version version = objectStoreInstances.getVersion(oid);
-            recreatedAdapter.setOptimisticLock(version);
+            recreatedAdapter.setVersion(version);
         }
     }
 
@@ -229,15 +230,15 @@ public class InMemoryObjectStore impleme
 
     @Override
     public ObjectAdapter getObject(final Oid oid, final ObjectSpecification hint) throws ObjectNotFoundException, ObjectPersistenceException {
-        LOG.debug("getObject " + oid);
+        if(LOG.isDebugEnabled()) {
+            LOG.debug("getObject " + oid);
+        }
         final ObjectStoreInstances ins = instancesFor(hint);
         final ObjectAdapter object = ins.retrieveObject(oid);
         if (object == null) {
             throw new ObjectNotFoundException(oid);
-        } else {
-            setupReferencedObjects(object);
-            return object;
-        }
+        } 
+        return object;
     }
 
     @Override
@@ -253,7 +254,6 @@ public class InMemoryObjectStore impleme
         // the object being resolved.
         if (adapter.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
             LOG.debug("resolve " + adapter);
-            setupReferencedObjects(adapter);
 
             PersistorUtil.start(adapter, ResolveState.RESOLVING);
             PersistorUtil.end(adapter); // moves to RESOLVED
@@ -269,41 +269,7 @@ public class InMemoryObjectStore impleme
         PersistorUtil.end(reference);
     }
 
-    private void setupReferencedObjects(final ObjectAdapter object) {
-        setupReferencedObjects(object, new Vector());
-    }
 
-    private void setupReferencedObjects(final ObjectAdapter adapter, final Vector all) {
-        // TODO: is this code needed, then? Looks like it isn't...
-        if (true) {
-            return;
-        }
-
-        if (adapter == null || all.contains(adapter)) {
-            return;
-        }
-        all.addElement(adapter);
-        PersistorUtil.start(adapter, ResolveState.RESOLVING);
-
-        final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations();
-        for (int i = 0; i < fields.size(); i++) {
-            final ObjectAssociation field = fields.get(i);
-            if (field.isOneToManyAssociation()) {
-                final ObjectAdapter col = field.get(adapter);
-                final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(col);
-                for (final Iterator<ObjectAdapter> e = facet.iterator(col); e.hasNext();) {
-                    final ObjectAdapter element = e.next();
-                    setupReferencedObjects(element, all);
-                }
-            } else if (field.isOneToOneAssociation()) {
-                final ObjectAdapter fieldContent = field.get(adapter);
-                setupReferencedObjects(fieldContent, all);
-            }
-        }
-
-        PersistorUtil.end(adapter);
-
-    }
 
     // ///////////////////////////////////////////////////////
     // getInstances, hasInstances
@@ -356,7 +322,6 @@ public class InMemoryObjectStore impleme
         final ObjectAdapter[] ins = new ObjectAdapter[instances.size()];
         for (int i = 0; i < ins.length; i++) {
             final ObjectAdapter object = instances.elementAt(i);
-            setupReferencedObjects(object);
             if (object.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
                 PersistorUtil.start(object, ResolveState.RESOLVING);
                 PersistorUtil.end(object);
@@ -371,13 +336,13 @@ public class InMemoryObjectStore impleme
     // ///////////////////////////////////////////////////////
 
     @Override
-    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
-        return persistedObjects.getService(name);
+    public RootOid getOidForService(ObjectSpecification serviceSpec) {
+        return (RootOid) persistedObjects.getService(serviceSpec.getObjectType());
     }
 
     @Override
-    public void registerService(final String name, final Oid oid) {
-        persistedObjects.registerService(name, oid);
+    public void registerService(final RootOid rootOid) {
+        persistedObjects.registerService(rootOid.getObjectType(), rootOid);
     }
 
     private ObjectStoreInstances instancesFor(final ObjectSpecification spec) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceMechanismInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceMechanismInstaller.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceMechanismInstaller.java Sat Mar 24 14:01:35 2012
@@ -32,8 +32,10 @@ import org.apache.isis.runtimes.dflt.run
  */
 public class InMemoryPersistenceMechanismInstaller extends ObjectStorePersistenceMechanismInstallerAbstract {
 
+    public static final String NAME = "in-memory";
+
     public InMemoryPersistenceMechanismInstaller() {
-        super("in-memory");
+        super(NAME);
     }
 
     // ///////////////////////////////////////////////////////////////

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceSessionFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceSessionFactory.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceSessionFactory.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/InMemoryPersistenceSessionFactory.java Sat Mar 24 14:01:35 2012
@@ -24,7 +24,7 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.dflt.internal.ObjectStorePersistedObjectsDefault;
 import org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceSessionFactoryDelegate;
 import org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceSessionFactoryDelegating;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SimpleOidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
 import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
@@ -46,9 +46,9 @@ public class InMemoryPersistenceSessionF
         final PersistenceSession persistenceSession = super.createPersistenceSession();
         if (persistedObjects != null) {
             final OidGenerator oidGenerator = persistenceSession.getOidGenerator();
-            if (oidGenerator instanceof SimpleOidGenerator) {
-                final SimpleOidGenerator simpleOidGenerator = (SimpleOidGenerator) oidGenerator;
-                simpleOidGenerator.resetTo(persistedObjects.getOidGeneratorMemento());
+            if (oidGenerator instanceof RootOidGenerator) {
+                final RootOidGenerator rootOidGenerator = (RootOidGenerator) oidGenerator;
+                rootOidGenerator.resetTo(persistedObjects.getOidGeneratorMemento());
             }
         }
 
@@ -69,9 +69,9 @@ public class InMemoryPersistenceSessionF
      */
     public void attach(final PersistenceSession persistenceSession, final ObjectStorePersistedObjects persistedObjects) {
         final OidGenerator oidGenerator = persistenceSession.getOidGenerator();
-        if (oidGenerator instanceof SimpleOidGenerator) {
-            final SimpleOidGenerator simpleOidGenerator = (SimpleOidGenerator) oidGenerator;
-            persistedObjects.saveOidGeneratorMemento(simpleOidGenerator.getMemento());
+        if (oidGenerator instanceof RootOidGenerator) {
+            final RootOidGenerator rootOidGenerator = (RootOidGenerator) oidGenerator;
+            persistedObjects.saveOidGeneratorMemento(rootOidGenerator.getMemento());
         }
         this.persistedObjects = persistedObjects;
     }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances.java Sat Mar 24 14:01:35 2012
@@ -105,7 +105,7 @@ public class ObjectStoreInstances {
         final SerialNumberVersion version = versionByOidMap.get(adapter.getOid());
         final SerialNumberVersion nextVersion = nextVersion(version);
         versionByOidMap.put(adapter.getOid(), nextVersion);
-        adapter.setOptimisticLock(nextVersion);
+        adapter.setVersion(nextVersion);
     }
 
     private synchronized SerialNumberVersion nextVersion(final SerialNumberVersion version) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjects.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjects.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjects.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjects.java Sat Mar 24 14:01:35 2012
@@ -21,7 +21,7 @@ package org.apache.isis.runtimes.dflt.ob
 
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SimpleOidGenerator.Memento;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator.Memento;
 
 /**
  * Represents the persisted objects.

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault.java Sat Mar 24 14:01:35 2012
@@ -25,7 +25,7 @@ import java.util.Map;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SimpleOidGenerator.Memento;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator.Memento;
 
 /**
  * Represents the persisted objects.

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances_save.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances_save.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances_save.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStoreInstances_save.java Sat Mar 24 14:01:35 2012
@@ -81,7 +81,7 @@ public class ObjectStoreInstances_save {
         allowingGetOidAndGetObjectAndTitleStringFromAdapter();
         context.checking(new Expectations() {
             {
-                one(mockAdapter).setOptimisticLock(with(any(Version.class)));
+                one(mockAdapter).setVersion(with(any(Version.class)));
             }
         });
         instances.save(mockAdapter);

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/dflt/src/test/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java Sat Mar 24 14:01:35 2012
@@ -29,8 +29,8 @@ import org.jmock.lib.legacy.ClassImposte
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SimpleOidGenerator;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SimpleOidGenerator.Memento;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidGenerator.Memento;
 
 public class ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento {
 
@@ -42,12 +42,12 @@ public class ObjectStorePersistedObjects
         }
     };
 
-    private SimpleOidGenerator.Memento mockMemento;
+    private RootOidGenerator.Memento mockMemento;
 
     @Before
     public void setUp() throws Exception {
         persistedObjects = new ObjectStorePersistedObjectsDefault();
-        mockMemento = context.mock(SimpleOidGenerator.Memento.class);
+        mockMemento = context.mock(RootOidGenerator.Memento.class);
     }
 
     @Test

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/GivenJpaProgrammingModelWhenInitializingTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/GivenJpaProgrammingModelWhenInitializingTest.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/GivenJpaProgrammingModelWhenInitializingTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/GivenJpaProgrammingModelWhenInitializingTest.java Sat Mar 24 14:01:35 2012
@@ -57,7 +57,6 @@ public class GivenJpaProgrammingModelWhe
         final List<FacetFactory> list = jpaProgrammingModelFacets.getList();
         assertThat(
                 list,
-                IsisMatchers
-                        .containsElementThat(is(instanceOf(JpaEntityAnnotationFacetFactory.class))));
+                IsisMatchers.containsElementThat(is(instanceOf(JpaEntityAnnotationFacetFactory.class))));
     }
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/facets/object/discriminator/GivenJpaDiscriminatorValueAnnotationFacetFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/facets/object/discriminator/GivenJpaDiscriminatorValueAnnotationFacetFactoryTest.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/facets/object/discriminator/GivenJpaDiscriminatorValueAnnotationFacetFactoryTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/jpa/jpa-metamodel/src/test/java/org/apache/isis/extensions/jpa/metamodel/facets/object/discriminator/GivenJpaDiscriminatorValueAnnotationFacetFactoryTest.java Sat Mar 24 14:01:35 2012
@@ -31,9 +31,7 @@ import org.apache.isis.core.metamodel.fa
 import org.apache.isis.core.metamodel.facets.object.objecttype.ObjectTypeFacet;
 import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
 
-
-public class GivenJpaDiscriminatorValueAnnotationFacetFactoryTest extends
-        AbstractFacetFactoryTest {
+public class GivenJpaDiscriminatorValueAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
 
     private JpaDiscriminatorValueAnnotationFacetFactory facetFactory;
 
@@ -51,20 +49,12 @@ public class GivenJpaDiscriminatorValueA
     }
 
     public void testFeatureTypes() {
-        final List<FeatureType> featureTypes = facetFactory
-                .getFeatureTypes();
-        Assert
-                .assertTrue(contains(featureTypes,
-                FeatureType.OBJECT));
-        assertFalse(contains(featureTypes,
-                FeatureType.PROPERTY));
-        assertFalse(contains(featureTypes,
-                FeatureType.COLLECTION));
-        Assert
-                .assertFalse(contains(featureTypes,
-                FeatureType.ACTION));
-        assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER));
+        final List<FeatureType> featureTypes = facetFactory.getFeatureTypes();
+        Assert.assertTrue(contains(featureTypes, FeatureType.OBJECT));
+        assertFalse(contains(featureTypes, FeatureType.PROPERTY));
+        assertFalse(contains(featureTypes, FeatureType.COLLECTION));
+        Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
     }
 
     public void testDiscriminatorValueAnnotationPickedUpOnClass() {
@@ -74,11 +64,9 @@ public class GivenJpaDiscriminatorValueA
 
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
-        final Facet facet = facetHolder
-                .getFacet(ObjectTypeFacet.class);
+        final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertNotNull(facet);
-        Assert
-                .assertTrue(facet instanceof ObjectTypeFacetInferredFromJpaDiscriminatorValueAnnotation);
+        Assert.assertTrue(facet instanceof ObjectTypeFacetInferredFromJpaDiscriminatorValueAnnotation);
     }
 
     public void testIfNoEntityAnnotationThenNoFacet() {
@@ -88,8 +76,7 @@ public class GivenJpaDiscriminatorValueA
 
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
-        final Facet facet = facetHolder
-                .getFacet(ObjectTypeFacet.class);
+        final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertNull(facet);
     }
 
@@ -100,8 +87,7 @@ public class GivenJpaDiscriminatorValueA
 
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
-        final ObjectTypeFacet discriminatorValueFacet = facetHolder
-                .getFacet(ObjectTypeFacet.class);
+        final ObjectTypeFacet discriminatorValueFacet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertEquals("CUS", discriminatorValueFacet.value());
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/pom.xml?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/pom.xml (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/pom.xml Sat Mar 24 14:01:35 2012
@@ -207,6 +207,7 @@
             <scope>test</scope>
         </dependency>
 
+        <!-- TODO: remove this dependency when can -->
         <dependency>
             <groupId>org.apache.isis.runtimes.dflt</groupId>
             <artifactId>runtime</artifactId>
@@ -216,6 +217,13 @@
 
         <!-- TODO: remove this dependency when can -->
         <dependency>
+            <groupId>org.apache.isis.runtimes.dflt</groupId>
+            <artifactId>testsupport</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- TODO: remove this dependency when can -->
+        <dependency>
             <groupId>org.apache.isis.progmodels</groupId>
             <artifactId>dflt</artifactId>
             <version>0.3.0-incubating-SNAPSHOT</version>

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCommandContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCommandContext.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCommandContext.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCommandContext.java Sat Mar 24 14:01:35 2012
@@ -19,16 +19,16 @@
 
 package org.apache.isis.runtimes.dflt.objectstores.nosql;
 
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommandContext;
 
 public interface NoSqlCommandContext extends PersistenceCommandContext {
 
     StateWriter createStateWriter(String specName);
 
-    void delete(String specificationName, String key, String version);
-
     void insert(StateWriter writer);
 
     void update(StateWriter writer);
 
+    void delete(String specificationName, String key, String version);
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCreateObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCreateObjectCommand.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCreateObjectCommand.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlCreateObjectCommand.java Sat Mar 24 14:01:35 2012
@@ -19,6 +19,9 @@
 package org.apache.isis.runtimes.dflt.objectstores.nosql;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 
 final class NoSqlCreateObjectCommand extends WriteObjectCommand implements CreateObjectCommand {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDestroyObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDestroyObjectCommand.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDestroyObjectCommand.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDestroyObjectCommand.java Sat Mar 24 14:01:35 2012
@@ -21,6 +21,8 @@ package org.apache.isis.runtimes.dflt.ob
 
 import org.apache.isis.core.commons.lang.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommandContext;
 
@@ -29,10 +31,10 @@ final class NoSqlDestroyObjectCommand im
     private final KeyCreator keyCreator;
     private final VersionCreator versionCreator;
 
-    public NoSqlDestroyObjectCommand(final KeyCreator keyCreator, final VersionCreator versionCreator, final ObjectAdapter object) {
+    public NoSqlDestroyObjectCommand(final KeyCreator keyCreator, final VersionCreator versionCreator, final ObjectAdapter adapter) {
         this.keyCreator = keyCreator;
         this.versionCreator = versionCreator;
-        this.adapter = object;
+        this.adapter = adapter;
     }
 
     @Override
@@ -41,7 +43,8 @@ final class NoSqlDestroyObjectCommand im
         final String version = versionCreator.versionString(adapter.getVersion());
         final String specificationName = adapter.getSpecification().getFullIdentifier();
 
-        ((NoSqlCommandContext) context).delete(specificationName, key, version);
+        final NoSqlCommandContext noSqlCommandContext = (NoSqlCommandContext) context;
+        noSqlCommandContext.delete(specificationName, key, version);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStore.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStore.java Sat Mar 24 14:01:35 2012
@@ -20,17 +20,24 @@
 package org.apache.isis.runtimes.dflt.objectstores.nosql;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import com.google.common.collect.Maps;
+
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.CreateObjectCommand;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
@@ -46,7 +53,7 @@ import org.apache.isis.runtimes.dflt.run
 public class NoSqlObjectStore implements ObjectStore {
     
     private final NoSqlDataDatabase database;
-    private final Map<String, Oid> serviceCache = new HashMap<String, Oid>();
+    private final Map<String, RootOid> servicesByObjectType = Maps.newHashMap();
     private final KeyCreator keyCreator;
     private final VersionCreator versionCreator;
     private final ObjectReader objectReader = new ObjectReader();
@@ -86,11 +93,11 @@ public class NoSqlObjectStore implements
     }
 
     @Override
-    public DestroyObjectCommand createDestroyObjectCommand(final ObjectAdapter object) {
-        if (object.getSpecification().isAggregated()) {
+    public DestroyObjectCommand createDestroyObjectCommand(final ObjectAdapter adapter) {
+        if (adapter.getSpecification().isAggregated()) {
             throw new NoSqlStoreException("Can't delete an aggregated object");
         } else {
-            return new NoSqlDestroyObjectCommand(keyCreator, versionCreator, object);
+            return new NoSqlDestroyObjectCommand(keyCreator, versionCreator, adapter);
         }
     }
 
@@ -98,7 +105,7 @@ public class NoSqlObjectStore implements
     public SaveObjectCommand createSaveObjectCommand(final ObjectAdapter adapter) {
         // TODO should this be done at a higher level so it is applicable for
         // all OSes
-        final ObjectAdapter rootAdapter = aggregateRootAdapterFor(adapter);
+        final ObjectAdapter rootAdapter = getAggregateRootAdapterFor(adapter);
         if (rootAdapter.getOid() instanceof AggregatedOid) {
             throw new NoSqlStoreException("Unexpected aggregated object to save: " + rootAdapter + " (" + adapter + ")");
         }
@@ -108,8 +115,8 @@ public class NoSqlObjectStore implements
     /**
      * Returns either itself, or its parent adapter (if aggregated)
      */
-    public ObjectAdapter aggregateRootAdapterFor(final ObjectAdapter adapter) {
-        return adapter.getAggregateRoot();
+    public ObjectAdapter getAggregateRootAdapterFor(final ObjectAdapter adapter) {
+        return adapter.getAggregateRoot(getAdapterManager());
     }
 
     @Override
@@ -153,17 +160,6 @@ public class NoSqlObjectStore implements
     }
 
     @Override
-    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
-        Oid oid = serviceCache.get(name);
-        if (oid == null) {
-            final String id = database.getService(name);
-            oid = id == null ? null : keyCreator.oid(serviceSpecification, id);
-            serviceCache.put(name, oid);
-        }
-        return oid;
-    }
-
-    @Override
     public boolean hasInstances(final ObjectSpecification specification) {
         return database.hasInstances(specification.getFullIdentifier());
     }
@@ -174,12 +170,6 @@ public class NoSqlObjectStore implements
     }
 
     @Override
-    public void registerService(final String name, final Oid oid) {
-        final String key = keyCreator.key(oid);
-        database.addService(name, key);
-    }
-
-    @Override
     public void reset() {
     }
 
@@ -213,10 +203,9 @@ public class NoSqlObjectStore implements
         // TODO show details
     }
 
-    @Override
-    public String debugTitle() {
-        return "NoSql Object Store";
-    }
+    // ////////////////////////////////////////////////////////////////
+    // open, close
+    // ////////////////////////////////////////////////////////////////
 
     @Override
     public void close() {
@@ -230,10 +219,42 @@ public class NoSqlObjectStore implements
 
     @Override
     public String name() {
-        return "personal object store";
+        return "nosql";
+    }
+
+    
+    // ////////////////////////////////////////////////////////////////
+    // Services
+    // ////////////////////////////////////////////////////////////////
+    
+    @Override
+    public void registerService(final RootOid rootOid) {
+        final String key = keyCreator.key(rootOid);
+        database.addService(rootOid.getObjectType(), key);
     }
 
     @Override
+    public RootOid getOidForService(ObjectSpecification serviceSpec) {
+        final String objectType = serviceSpec.getObjectType();
+        RootOid oid = servicesByObjectType.get(objectType);
+        if (oid == null) {
+            final String id = database.getService(objectType);
+            if (id == null) {
+                oid = null;
+            } else {
+                oid = keyCreator.oid(serviceSpec, id);
+            }
+            servicesByObjectType.put(objectType, oid);
+        }
+        return oid;
+    }
+
+
+    // ////////////////////////////////////////////////////////////////
+    // Transaction Mgmt
+    // ////////////////////////////////////////////////////////////////
+
+    @Override
     public void abortTransaction() {
     }
 
@@ -245,6 +266,17 @@ public class NoSqlObjectStore implements
     public void startTransaction() {
     }
 
+    
+    // ////////////////////////////////////////////////////////////////
+    // debugging
+    // ////////////////////////////////////////////////////////////////
+
+    @Override
+    public String debugTitle() {
+        return "NoSql Object Store";
+    }
+
+
     // ////////////////////////////////////////////////////////////////
     // Dependencies (from context)
     // ////////////////////////////////////////////////////////////////

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGenerator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGenerator.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGenerator.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGenerator.java Sat Mar 24 14:01:35 2012
@@ -23,29 +23,30 @@ import org.apache.log4j.Logger;
 
 import org.apache.isis.core.commons.debug.DebugBuilder;
 import org.apache.isis.core.commons.ensure.Assert;
-import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
-import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.OidStringifierDirect;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.OidGeneratorAbstract;
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
+import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.serial.RootOidDefault;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 
 public class NoSqlOidGenerator extends OidGeneratorAbstract {
+    
     private static final Logger LOG = Logger.getLogger(NoSqlOidGenerator.class);
     private static int INITIAL_TRANSIENT_ID = -9999999;
     private static int DEFAULT_BATCH_SIZE = 50;
 
     private static class IdNumbers {
+        
+        private final int batchSize;
+        
         private long transientNumber;
         private long nextId = 0;
         private long newIdBatchAt = 0;
         private long nextSubId = 0;
         private long newSubIdBatchAt = 0;
-        private final int batchSize;
-
+        
         public IdNumbers(final int initialTransientId, final int batchSize) {
             transientNumber = initialTransientId;
             this.batchSize = batchSize;
@@ -96,38 +97,33 @@ public class NoSqlOidGenerator extends O
     }
 
     public NoSqlOidGenerator(final NoSqlDataDatabase database, final int initialTransientId, final int batchSize) {
-        super(new OidStringifierDirect(NoSqlOid.class));
+        super(RootOidDefault.class);
         this.database = database;
         ids = new IdNumbers(initialTransientId, batchSize);
     }
 
+    public String name() {
+        return "NoSql Oids";
+    }
+
     @Override
-    public NoSqlOid createTransientOid(final Object object) {
+    public RootOid createTransientOid(final Object object) {
         final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(object.getClass());
-        final String className = objectSpec.getCorrespondingClass().getName();
-        return new NoSqlOid(className, SerialOid.createTransient(ids.nextTransientId()));
+        final String objectType = objectSpec.getObjectType();
+        return RootOidDefault.createTransient(objectType, "" + (ids.nextTransientId()));
     }
 
     @Override
-    public String createAggregateId(final Object pojo) {
+    public String createAggregateLocalId(final Object pojo) {
         Assert.assertNotNull("No connection set up", database);
         return Long.toHexString(ids.nextSubId(database));
     }
 
     @Override
-    public void convertTransientToPersistentOid(final Oid oid) {
+    public RootOid asPersistent(final RootOid rootOid) {
         Assert.assertNotNull("No connection set up", database);
-        if (oid instanceof AggregatedOid) {
-            return;
-        }
         final long persistentId = ids.nextPersistentId(database);
-        final NoSqlOid noSqlOid = (NoSqlOid) oid;
-        noSqlOid.setId(persistentId);
-        noSqlOid.makePersistent();
-    }
-
-    public void convertPersistentToTransientOid(final Oid oid) {
-        throw new NotYetImplementedException();
+        return rootOid.asPersistent("" + persistentId);
     }
 
     @Override
@@ -138,10 +134,6 @@ public class NoSqlOidGenerator extends O
         debug.unindent();
     }
 
-    public String name() {
-        return "NoSql Oids";
-    }
-
     @Override
     public String debugTitle() {
         return "NoSql OID Generator";

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlSaveObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlSaveObjectCommand.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlSaveObjectCommand.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlSaveObjectCommand.java Sat Mar 24 14:01:35 2012
@@ -19,6 +19,9 @@
 package org.apache.isis.runtimes.dflt.objectstores.nosql;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.SaveObjectCommand;
 
 final class NoSqlSaveObjectCommand extends WriteObjectCommand implements SaveObjectCommand {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java Sat Mar 24 14:01:35 2012
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.ResolveState;
 import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.OidWithSpecification;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -37,6 +37,10 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationContainer;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 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;
@@ -47,7 +51,7 @@ class ObjectReader {
         final String className = reader.readObjectType();
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(className);
         final String id = reader.readId();
-        final OidWithSpecification oid = keyCreator.oid(specification, id);
+        final RootOid oid = keyCreator.oid(specification, id);
         
         final ObjectAdapter object = getAdapter(oid);
         if (object.getResolveState().isResolved()) {
@@ -88,7 +92,7 @@ class ObjectReader {
         }
         final String encryptionType = reader.readEncrytionType();
         readFields(reader, object, keyCreator, dataEncrypters.get(encryptionType));
-        object.setOptimisticLock(version);
+        object.setVersion(version);
         object.changeState(resolveState.getEndState());
     }
 
@@ -111,17 +115,20 @@ class ObjectReader {
         }
     }
 
-    private void readAggregate(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToOneAssociation association, final ObjectAdapter object) {
+    private void readAggregate(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToOneAssociation association, final ObjectAdapter parentAdapter) {
         final String id = association.getId();
         final StateReader aggregateReader = reader.readAggregate(id);
+        
+        final ObjectAdapter fieldObject;
         if (aggregateReader != null) {
-            final String id2 = aggregateReader.readId();
-            final AggregatedOid oid = new AggregatedOid(object.getOid(), id2);
-            final ObjectAdapter fieldObject = restoreAggregatedObject(aggregateReader, oid, keyCreator, dataEncrypter);
-            association.initAssociation(object, fieldObject);
+            final String localId = aggregateReader.readId();  
+            final AggregatedOid oid = new AggregatedOid(parentAdapter.getOid(), localId);
+            fieldObject = restoreAggregatedObject(aggregateReader, oid, keyCreator, dataEncrypter);
         } else {
-            association.initAssociation(object, null);
+            fieldObject = null;
         }
+        
+        association.initAssociation(parentAdapter, fieldObject);
     }
 
     private ObjectAdapter restoreAggregatedObject(final StateReader aggregateReader, final Oid oid, final KeyCreator keyCreator, final DataEncryption dataEncrypter) {
@@ -160,7 +167,7 @@ class ObjectReader {
             if (ref.equals("")) {
                 throw new NoSqlStoreException("Invalid reference field (an empty string) in data for " + association.getName() + "  in " + object);
             }
-            final OidWithSpecification oid = keyCreator.oidFromReference(ref);
+            final RootOid oid = keyCreator.oidFromReference(ref);
             final ObjectSpecification specification = keyCreator.specificationFromReference(ref);
             fieldObject = getAdapter(specification, oid);
         }
@@ -171,27 +178,29 @@ class ObjectReader {
         }
     }
 
-    private void readCollection(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToManyAssociation association, final ObjectAdapter object) {
-        final ObjectAdapter collection = association.get(object);
-        final CollectionFacet facet = collection.getSpecification().getFacet(CollectionFacet.class);
+    private void readCollection(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToManyAssociation association, final ObjectAdapter parentAdapter) {
+        final ObjectAdapter collectionAdapter = association.get(parentAdapter);
+        
+        final CollectionFacet facet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
         if (association.getSpecification().isAggregated()) {
+            // were persisted inline, so read back inline
             final List<StateReader> readers = reader.readCollection(association.getId());
-            // String id = association.getId();
-            final ObjectAdapter[] elements = new ObjectAdapter[readers.size()];
+            final ObjectAdapter[] elementAdapters = new ObjectAdapter[readers.size()];
             int i = 0;
             for (final StateReader elementReader : readers) {
-                final String id = elementReader.readId();
-                final AggregatedOid oid = new AggregatedOid(object.getOid(), id);
-                elements[i++] = restoreAggregatedObject(elementReader, oid, keyCreator, dataEncrypter);
+                final String localId = elementReader.readId();
+                final AggregatedOid aggregatedOid = new AggregatedOid(parentAdapter.getOid(), localId);
+                elementAdapters[i++] = restoreAggregatedObject(elementReader, aggregatedOid, keyCreator, dataEncrypter);
             }
-            facet.init(collection, elements);
+            facet.init(collectionAdapter, elementAdapters);
         } else {
+            // were persisted as references, so read back as references
             final String referencesList = reader.readField(association.getId());
             if (referencesList == null || referencesList.length() == 0) {
-                facet.init(collection, new ObjectAdapter[0]);
+                facet.init(collectionAdapter, new ObjectAdapter[0]);
             } else {
                 final ObjectAdapter[] elements = restoreElements(referencesList, keyCreator);
-                facet.init(collection, elements);
+                facet.init(collectionAdapter, elements);
             }
         }
     }
@@ -201,7 +210,7 @@ class ObjectReader {
         final ObjectAdapter[] elements = new ObjectAdapter[references.length];
         for (int i = 0; i < references.length; i++) {
             final ObjectSpecification specification = keyCreator.specificationFromReference(references[i]);
-            final OidWithSpecification oid = keyCreator.oidFromReference(references[i]);
+            final RootOid oid = keyCreator.oidFromReference(references[i]);
             elements[i] = getAdapter(specification, oid);
         }
         return elements;
@@ -216,7 +225,7 @@ class ObjectReader {
         return getPersistenceSession().recreateAdapter(oid, specification);
     }
 
-    protected ObjectAdapter getAdapter(final OidWithSpecification oid) {
+    protected ObjectAdapter getAdapter(final RootOid oid) {
         final AdapterManager objectLoader = getPersistenceSession().getAdapterManager();
         final ObjectAdapter adapter = objectLoader.getAdapterFor(oid);
         if (adapter != null) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java?rev=1304796&r1=1304795&r2=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java Sat Mar 24 14:01:35 2012
@@ -22,19 +22,30 @@ package org.apache.isis.runtimes.dflt.ob
 import java.util.ArrayList;
 import java.util.List;
 
+import com.google.common.collect.Lists;
+
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.lang.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.spec.DomainModelException;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommandContext;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 
 class WriteObjectCommand implements PersistenceCommand {
+    
     private final KeyCreator keyCreator;
     private final ObjectAdapter object;
     private final VersionCreator versionCreator;
@@ -51,16 +62,18 @@ class WriteObjectCommand implements Pers
 
     @Override
     public void execute(final PersistenceCommandContext context) {
+        final NoSqlCommandContext noSqlCommandContext = (NoSqlCommandContext) context;
+        
         final String specName = object.getSpecification().getFullIdentifier();
-        final StateWriter writer = ((NoSqlCommandContext) context).createStateWriter(specName);
+        final StateWriter writer = noSqlCommandContext.createStateWriter(specName);
         final String key = keyCreator.key(object.getOid());
         writer.writeId(key);
         writeFields(writer, specName, object);
-        final String user = IsisContext.getAuthenticationSession().getUserName();
+        final String user = getAuthenticationSession().getUserName();
 
         final Version currentVersion = object.getVersion();
         final Version newVersion = isUpdate ? versionCreator.nextVersion(currentVersion) : versionCreator.newVersion(user);
-        object.setOptimisticLock(newVersion);
+        object.setVersion(newVersion);
         if (newVersion != null) {
             final String version = currentVersion == null ? null : versionCreator.versionString(currentVersion);
             writer.writeVersion(version, versionCreator.versionString(newVersion));
@@ -70,92 +83,123 @@ class WriteObjectCommand implements Pers
         }
 
         if (isUpdate) {
-            ((NoSqlCommandContext) context).update(writer);
+            noSqlCommandContext.update(writer);
         } else {
-            ((NoSqlCommandContext) context).insert(writer);
+            noSqlCommandContext.insert(writer);
         }
-
     }
 
-    private void writeFields(final StateWriter writer, final String specName, final ObjectAdapter object) {
-        final List<ObjectAssociation> associations = object.getSpecification().getAssociations();
+    private void writeFields(final StateWriter writer, final String specName, final ObjectAdapter adapter) {
+        final List<ObjectAssociation> associations = adapter.getSpecification().getAssociations();
         writer.writeType(specName);
         for (final ObjectAssociation association : associations) {
             if (association.isNotPersisted()) {
                 continue;
             }
-            final ObjectAdapter field = association.get(object);
+            final ObjectAdapter fieldAdapter = association.get(adapter);
             if (association.isOneToManyAssociation()) {
-                writeCollection(writer, association, field, keyCreator);
-            } else if (association.getSpecification().isValue()) {
-                writeValue(writer, association, field);
-            } else if (association.getSpecification().isAggregated()) {
-                writeAggregatedObject(writer, association, field, keyCreator);
-            } else {
-                writeReference(writer, association, field, keyCreator);
+                final OneToManyAssociation oneToManyAssociation = (OneToManyAssociation) association;
+                final ObjectAdapter collectionAdapter = fieldAdapter; // to explain
+                writeCollection(writer, oneToManyAssociation, collectionAdapter, keyCreator);
+            } else { 
+                final OneToOneAssociation oneToOneAssociation = (OneToOneAssociation) association;
+                final ObjectAdapter propertyAdapter = fieldAdapter; // to explain
+                writeProperty(writer, oneToOneAssociation, propertyAdapter);
             }
         }
     }
 
-    private void writeAggregatedObject(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter field, final KeyCreator keyCreator) {
-        if (field == null) {
-            writer.writeField(association.getId(), null);
-        } else if (field.getOid() instanceof AggregatedOid) {
-            final String specName = field.getSpecification().getFullIdentifier();
-            final StateWriter aggregateWriter = writer.addAggregate(association.getId());
-            aggregateWriter.writeId(((AggregatedOid) field.getOid()).getId());
-            writeFields(aggregateWriter, specName, field);
-        } else {
-            throw new NoSqlStoreException("Object type is inconsistent with it OID - it should have an AggregatedOid: " + field);
+    private void writeProperty(final StateWriter writer, final OneToOneAssociation oneToOneAssociation, final ObjectAdapter propertyAdapter) {
+        if (oneToOneAssociation.getSpecification().isValue()) {
+            final ObjectAdapter valueAdapter = propertyAdapter; // to explain
+            writeValueProperty(writer, oneToOneAssociation, valueAdapter);
+        } else { 
+            final ObjectAdapter referencedAdapter = propertyAdapter; // to explain 
+            writeReferenceProperty(writer, oneToOneAssociation, referencedAdapter);
         }
     }
 
-    private void writeReference(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter reference, final KeyCreator keyCreator) {
-        if (reference == null) {
-            writer.writeField(association.getId(), null);
+    private void writeValueProperty(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter valueAdapter) {
+        String data;
+        if (valueAdapter == null) {
+            data = null;
         } else {
-            final String key = keyCreator.reference(reference);
-            writer.writeField(association.getId(), key);
+            final EncodableFacet encodeableFacet = valueAdapter.getSpecification().getFacet(EncodableFacet.class);
+            data = encodeableFacet.toEncodedString(valueAdapter);
+            data = dataEncrypter.encrypt(data);
         }
+        writer.writeField(otoa.getId(), data);
     }
 
-    private void writeValue(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter value) {
-        String data;
-        if (value == null) {
-            data = null;
+    private void writeReferenceProperty(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter referencedAdapter) {
+        if (otoa.getSpecification().isAggregated()) {
+            writeReferencedAsAggregated(writer, otoa, referencedAdapter, keyCreator);
         } else {
-            final EncodableFacet encodeableFacet = value.getSpecification().getFacet(EncodableFacet.class);
-            data = encodeableFacet.toEncodedString(value);
-            data = dataEncrypter.encrypt(data);
+            writeReference(writer, otoa, referencedAdapter, keyCreator);
         }
-        writer.writeField(association.getId(), data);
     }
 
-    private void writeCollection(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter collection, final KeyCreator keyCreator) {
-        final CollectionFacet collectionFacet = collection.getSpecification().getFacet(CollectionFacet.class);
+    private void writeReferencedAsAggregated(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter referencedAdapter, final KeyCreator keyCreator) {
+        if (referencedAdapter == null) {
+            writer.writeField(otoa.getId(), null);
+            return;
+        } 
+        final Oid referencedOid = referencedAdapter.getOid();
+        if (!(referencedOid instanceof AggregatedOid)) {
+            throw new NoSqlStoreException("Object type is inconsistent with it OID - it should have an AggregatedOid: " + referencedAdapter);
+        } 
+        final AggregatedOid aggregatedOid = (AggregatedOid) referencedOid;
+        
+        final String associationId = otoa.getId();
+        final StateWriter aggregateWriter = writer.addAggregate(associationId);
+        aggregateWriter.writeId(aggregatedOid.getLocalId());
+        
+        final String specName = referencedAdapter.getSpecification().getFullIdentifier();
+        writeFields(aggregateWriter, specName, referencedAdapter);
+    }
+
+    private void writeReference(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter referencedAdapter, final KeyCreator keyCreator) {
+        final String key = keyCreator.reference(referencedAdapter);
+        writer.writeField(association.getId(), key);
+    }
+
+    private void writeCollection(final StateWriter writer, final OneToManyAssociation association, final ObjectAdapter collectionAdapter, final KeyCreator keyCreator) {
         if (association.getSpecification().isAggregated()) {
-            final List<StateWriter> elements = new ArrayList<StateWriter>();
-            for (final ObjectAdapter element : collectionFacet.iterable(collection)) {
-                final StateWriter elementWriter = writer.createElementWriter();
-                elementWriter.writeId(((AggregatedOid) element.getOid()).getId());
-                writeFields(elementWriter, element.getSpecification().getFullIdentifier(), element);
-                elements.add(elementWriter);
-            }
-            writer.writeCollection(association.getId(), elements);
+            writeCollectionOfAggregated(writer, association, collectionAdapter);
         } else {
-            String refs = "";
-            for (final ObjectAdapter element : collectionFacet.iterable(collection)) {
-                if (element.isAggregated()) {
-                    throw new DomainModelException("Can't store an aggregated object within a collection that is not exoected aggregates: " + element + " (" + collection + ")");
-                }
-                refs += keyCreator.reference(element) + "|";
-            }
-            if (refs.length() > 0) {
-                writer.writeField(association.getId(), refs);
+            writeCollectionOfReferences(writer, association, collectionAdapter, keyCreator);
+        }
+    }
+
+    private void writeCollectionOfAggregated(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter collectionAdapter) {
+        final List<StateWriter> elementWriters = Lists.newArrayList();
+        final CollectionFacet collectionFacet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
+        for (final ObjectAdapter referencedAdapter : collectionFacet.iterable(collectionAdapter)) {
+            final AggregatedOid elementOid = (AggregatedOid) referencedAdapter.getOid();
+            final StateWriter elementWriter = writer.createElementWriter();
+            elementWriter.writeId(elementOid.getLocalId());
+            writeFields(elementWriter, referencedAdapter.getSpecification().getFullIdentifier(), referencedAdapter);
+            elementWriters.add(elementWriter);
+        }
+        writer.writeCollection(association.getId(), elementWriters);
+    }
+
+    private void writeCollectionOfReferences(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter collectionAdapter, final KeyCreator keyCreator) {
+        final CollectionFacet collectionFacet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
+        
+        final StringBuilder buf = new StringBuilder();
+        for (final ObjectAdapter elementAdapter : collectionFacet.iterable(collectionAdapter)) {
+            if (elementAdapter.isParented()) {
+                throw new DomainModelException("Can't store an aggregated object within a collection that is not expected aggregates: " + elementAdapter + " (" + collectionAdapter + ")");
             }
+            buf.append(keyCreator.reference(elementAdapter)).append("|");
+        }
+        if (buf.length() > 0) {
+            writer.writeField(association.getId(), buf.toString());
         }
     }
 
+
     @Override
     public ObjectAdapter onObject() {
         return object;
@@ -168,4 +212,10 @@ class WriteObjectCommand implements Pers
         toString.append("oid", object.getOid());
         return toString.toString();
     }
+    
+    
+    protected AuthenticationSession getAuthenticationSession() {
+        return IsisContext.getAuthenticationSession();
+    }
+
 }

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDataDatabase.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDataDatabase.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlDataDatabase.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db;
 
 import java.util.Iterator;
 import java.util.List;
@@ -26,20 +26,16 @@ import org.apache.isis.runtimes.dflt.run
 
 public interface NoSqlDataDatabase {
 
-    StateReader getInstance(String key, String specificationName);
-
-    void close();
-
     void open();
-
+    void close();
+    
     boolean containsData();
 
     void addService(String name, String key);
-
     String getService(String name);
 
     boolean hasInstances(String specificationName);
-
+    StateReader getInstance(String key, String specificationName);
     Iterator<StateReader> instancesOf(String specificationName);
 
     long nextSerialNumberBatch(String string, int batchSize);

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlPersistorMechanismInstaller.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlPersistorMechanismInstaller.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlPersistorMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -29,6 +29,14 @@ import org.apache.isis.core.commons.conf
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlObjectStore;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlOidGenerator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.none.DataEncryptionNone;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreatorDefault;
 import org.apache.isis.runtimes.dflt.runtime.installerregistry.installerapi.ObjectStorePersistenceMechanismInstallerAbstract;
 import org.apache.isis.runtimes.dflt.runtime.persistence.PersistenceSessionFactoryDelegating;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
@@ -89,7 +97,7 @@ public abstract class NoSqlPersistorMech
                 }
                 if (!encryptionSpecified) {
                     LOG.warn("No encryption specified");
-                    final DataEncryption encryption = new NoEncryption();
+                    final DataEncryption encryption = new DataEncryptionNone();
                     availableDataEncryption.put(encryption.getType(), encryption);
                     writeWithEncryption = encryption;
                 }
@@ -109,11 +117,11 @@ public abstract class NoSqlPersistorMech
 
     protected abstract NoSqlDataDatabase createNoSqlDatabase(IsisConfiguration configuration);
 
-    protected NoSqlKeyCreator createKeyCreator() {
-        return new NoSqlKeyCreator();
+    protected KeyCreator createKeyCreator() {
+        return new KeyCreatorDefault();
     }
 
     private VersionCreator createVersionCreator() {
-        return new SerialNumberVersionCreator();
+        return new VersionCreatorDefault();
     }
 }

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateReader.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateReader.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java Sat Mar 24 14:01:35 2012
@@ -17,13 +17,31 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db;
 
 import java.util.List;
 
+import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
 public interface StateReader {
 
-    StateReader readAggregate(String id);
+    /**
+     * Aggregated objects are persisted &quot;under&quot; a key taken from the
+     * association (property or collection).
+     * 
+     * <p>
+     * This is not to be confused with the adapter's {@link AggregatedOid#getLocalId() localId},
+     * which is a locally unique id for the adapter within the aggregate.
+     * 
+     * <p>
+     * The parameter passed here is the {@link OneToOneAssociation#getId() property Id}.
+     * 
+     * @param associationId - under which the aggregate (property/collection) were persisted. 
+     */
+    StateReader readAggregate(String propertyId);
+
+    List<StateReader> readCollection(String collectionId);
 
     long readLongField(String id);
 
@@ -41,6 +59,5 @@ public interface StateReader {
 
     String readTime();
 
-    List<StateReader> readCollection(String id);
 
 }

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateWriter.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateWriter.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/StateWriter.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db;
 
 import java.util.List;
 

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/ClientConnection.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/ClientConnection.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/ClientConnection.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnection.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql.file;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -30,7 +30,7 @@ import java.io.PrintWriter;
 import org.apache.log4j.Logger;
 
 import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.file.server.Util;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.server.Util;
 import org.apache.isis.runtimes.dflt.runtime.persistence.ConcurrencyException;
 import org.apache.isis.runtimes.dflt.runtime.persistence.ObjectNotFoundException;
 

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileClientCommandContext.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileClientCommandContext.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileClientCommandContext.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java Sat Mar 24 14:01:35 2012
@@ -17,12 +17,12 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql.file;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
 
 import java.util.zip.CRC32;
 
 import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.StateWriter;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
 
 class FileClientCommandContext implements NoSqlCommandContext {
 
@@ -42,7 +42,7 @@ class FileClientCommandContext implement
 
     @Override
     public StateWriter createStateWriter(final String specificationName) {
-        return new JsonStateWriter(connection, specificationName);
+        return new JsonStateWriter();
     }
 
     @Override

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerDb.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerDb.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerDb.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql.file;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
 
 import java.io.IOException;
 import java.net.Socket;
@@ -30,9 +30,9 @@ import java.util.zip.CRC32;
 import org.apache.log4j.Logger;
 
 import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlDataDatabase;
 import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.StateReader;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
 import org.apache.isis.runtimes.dflt.runtime.persistence.ConcurrencyException;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
 

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerPersistorMechanismInstaller.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerPersistorMechanismInstaller.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/FileServerPersistorMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerPersistorMechanismInstaller.java Sat Mar 24 14:01:35 2012
@@ -17,12 +17,12 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql.file;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
 
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlDataDatabase;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlPersistorMechanismInstaller;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlPersistorMechanismInstaller;
 
 public class FileServerPersistorMechanismInstaller extends NoSqlPersistorMechanismInstaller {
 

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java (from r1301918, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/JsonStateReader.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/JsonStateReader.java&r1=1301918&r2=1304796&rev=1304796&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/file/JsonStateReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java Sat Mar 24 14:01:35 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.runtimes.dflt.objectstores.nosql.file;
+package org.apache.isis.runtimes.dflt.objectstores.nosql.db.file;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -27,7 +27,7 @@ import org.json.JSONException;
 import org.json.JSONObject;
 
 import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.StateReader;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
 
 public class JsonStateReader implements StateReader {
     // private static final Logger LOG =