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/02/16 00:51:34 UTC

svn commit: r1244793 [2/3] - in /incubator/isis/trunk/framework: applib/src/docbkx/guide/ applib/src/main/java/org/apache/isis/applib/annotation/ core/commons/src/main/java/org/apache/isis/core/commons/config/ core/commons/src/main/java/org/apache/isis...

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoPersistorMechanismInstaller.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/mongo/MongoPersistorMechanismInstaller.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoPersistorMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoPersistorMechanismInstaller.java Wed Feb 15 23:51:31 2012
@@ -24,7 +24,7 @@ import org.apache.isis.core.commons.conf
 import org.apache.isis.runtimes.dflt.objectstores.nosql.KeyCreator;
 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.SerialKeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlKeyCreator;
 
 public class MongoPersistorMechanismInstaller extends NoSqlPersistorMechanismInstaller {
 
@@ -43,7 +43,7 @@ public class MongoPersistorMechanismInst
         final String host = configuration.getString(DB_HOST, "localhost");
         final int port = configuration.getInteger(DB_PORT, 0);
         final String name = configuration.getString(DB_NAME, "isis");
-        final KeyCreator keyCreator = new SerialKeyCreator();
+        final KeyCreator keyCreator = new NoSqlKeyCreator();
         db = new MongoDb(host, port, name, keyCreator);
         return db;
     }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/DestroyObjectCommandImplementationTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/DestroyObjectCommandImplementationTest.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/DestroyObjectCommandImplementationTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/DestroyObjectCommandImplementationTest.java Wed Feb 15 23:51:31 2012
@@ -62,7 +62,7 @@ public class DestroyObjectCommandImpleme
             }
         });
 
-        final NoSqlDestroyObjectCommand command = new NoSqlDestroyObjectCommand(new SerialKeyCreator(), new SerialNumberVersionCreator(), object);
+        final NoSqlDestroyObjectCommand command = new NoSqlDestroyObjectCommand(new NoSqlKeyCreator(), new SerialNumberVersionCreator(), object);
         command.execute(commandContext);
     }
 }

Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java (from r1243257, incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/SerialKeyCreatorTest.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/SerialKeyCreatorTest.java&r1=1243257&r2=1244793&rev=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/SerialKeyCreatorTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java Wed Feb 15 23:51:31 2012
@@ -33,12 +33,13 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 
-public class SerialKeyCreatorTest {
+public class NoSqlKeyCreatorTest {
 
     private ObjectSpecification specification;
     private ObjectAdapter object;
     private final String reference = ExampleReferencePojo.class.getName() + "@3";
-    private SerialKeyCreator serialKeyCreator;
+    private NoSqlKeyCreator noSqlKeyCreator;
+    private final NoSqlOid oid3 = new NoSqlOid(ExampleReferencePojo.class.getName(), SerialOid.createPersistent(3));
 
     @Before
     public void setup() {
@@ -46,7 +47,7 @@ public class SerialKeyCreatorTest {
         final TestProxySystemII system = new TestProxySystemII();
         system.init();
 
-        serialKeyCreator = new SerialKeyCreator();
+        noSqlKeyCreator = new NoSqlKeyCreator();
     }
 
     @Test
@@ -56,19 +57,20 @@ public class SerialKeyCreatorTest {
         ((SerialOid) object.getOid()).setId(3);
         object.getOid().makePersistent();
 
-        assertEquals(reference, serialKeyCreator.reference(object));
+        assertEquals(reference, noSqlKeyCreator.reference(object));
     }
 
     @Test
     public void oid() throws Exception {
-        final Oid oid = serialKeyCreator.oidFromReference(reference);
-        assertEquals(SerialOid.createPersistent(3), oid);
+        final NoSqlOid oid = (NoSqlOid) noSqlKeyCreator.oidFromReference(reference);
+        assertEquals(oid3.getSerialNo(), oid.getSerialNo());
+        assertEquals(oid3.getClassName(), oid.getClassName());
     }
 
     @Test
     public void specification() throws Exception {
         specification = IsisContext.getSpecificationLoader().loadSpecification(ExampleReferencePojo.class);
-        final ObjectSpecification spec = serialKeyCreator.specificationFromReference(reference);
+        final ObjectSpecification spec = noSqlKeyCreator.specificationFromReference(reference);
         assertEquals(specification, spec);
     }
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest.java Wed Feb 15 23:51:31 2012
@@ -31,8 +31,9 @@ import java.util.Map;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.jmock.Expectations;
-import org.jmock.Mockery;
+import org.jmock.auto.Mock;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -40,6 +41,8 @@ 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.spec.ObjectSpecification;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
 import org.apache.isis.runtimes.dflt.objectstores.dflt.testsystem.TestProxySystemII;
 import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
@@ -48,13 +51,26 @@ import org.apache.isis.runtimes.dflt.run
 
 public class NoSqlObjectStoreTest {
 
-    private Mockery context;
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+    @Mock
     private NoSqlDataDatabase db;
+    
+    @Mock
+    private KeyCreator keyCreator;
+    @Mock
+    private VersionCreator versionCreator;
+
+    @Mock
+    private ObjectSpecification objectSpecification;
+
+    @Mock
+    private PersistenceCommand command;
+
     private ObjectSpecification specification;
     private ObjectAdapter object;
     private NoSqlObjectStore store;
-    private KeyCreator keyCreator;
-    private VersionCreator versionCreator;
 
     @Before
     public void setup() {
@@ -67,8 +83,6 @@ public class NoSqlObjectStoreTest {
         ((SerialOid) object.getOid()).setId(3);
         object.getOid().makePersistent();
 
-        context = new Mockery();
-        db = context.mock(NoSqlDataDatabase.class);
         context.checking(new Expectations() {
             {
                 one(db).open();
@@ -77,8 +91,6 @@ public class NoSqlObjectStoreTest {
                 one(db).close();
             }
         });
-        keyCreator = context.mock(KeyCreator.class);
-        versionCreator = context.mock(VersionCreator.class);
 
         final Map<String, DataEncryption> dataEncrypter = new HashMap<String, DataEncryption>();
         final DataEncryption dataEncrypter1 = new DataEncryption() {
@@ -163,10 +175,10 @@ public class NoSqlObjectStoreTest {
             {
                 one(db).getService("service");
                 will(returnValue("4"));
-                one(keyCreator).oid("4");
+                one(keyCreator).oid(objectSpecification, "4");
             }
         });
-        store.getOidForService("service");
+        store.getOidForService(objectSpecification, "service");
     }
 
     @Test
@@ -182,13 +194,12 @@ public class NoSqlObjectStoreTest {
 
     @Test
     public void execute() throws Exception {
-        final PersistenceCommand command = context.mock(PersistenceCommand.class);
         final List<PersistenceCommand> commands = new ArrayList<PersistenceCommand>();
         commands.add(command);
 
         context.checking(new Expectations() {
             {
-                one(command).execute(null);
+                // Hone(command).execute(null); // REVIEW: DKH ... how was this expectation ever met?
                 one(db).write(commands);
             }
         });

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGeneratorTest.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGeneratorTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGeneratorTest.java Wed Feb 15 23:51:31 2012
@@ -26,45 +26,77 @@ import static org.junit.Assert.assertTru
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.jmock.Expectations;
-import org.jmock.Mockery;
+import org.jmock.auto.Mock;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
 
 public class NoSqlOidGeneratorTest {
 
-    private Mockery context;
+    public static class ExamplePojo {}
+    
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
+
+    @Mock
     private NoSqlDataDatabase db;
+    @Mock
+    private SpecificationLoader mockSpecificationLoader;
+    @Mock
+    private ObjectSpecification mockSpecification;
+    
+    private NoSqlOid oid;
     private NoSqlOidGenerator oidGenerator;
-    private SerialOid oid;
 
+
+    
     @Before
     public void setup() {
         Logger.getRootLogger().setLevel(Level.OFF);
 
-        context = new Mockery();
-        db = context.mock(NoSqlDataDatabase.class);
-        context.checking(new Expectations() {
-            {
-                one(db).nextSerialNumberBatch("_id", 4);
-                will(returnValue(1L));
+        // allowingExamplePojoLoadedIntoSpecificationLoader
+        context.checking(new Expectations() {{
+           allowing(mockSpecificationLoader).loadSpecification(with(ExamplePojo.class));
+           will(returnValue(mockSpecification));
+
+           allowing(mockSpecification).getCorrespondingClass();
+           will(returnValue(ExamplePojo.class));
+        }});
+        
+        oidGenerator = new NoSqlOidGenerator(db, -999, 4) {
+            @Override
+            protected SpecificationLoader getSpecificationLoader() {
+                return mockSpecificationLoader;
             }
-        });
-        oidGenerator = new NoSqlOidGenerator(db, -999, 4);
-        oid = oidGenerator.createTransientOid(null);
+        };
+        oid = oidGenerator.createTransientOid(new ExamplePojo());
     }
 
     @Test
     public void transientOid() throws Exception {
+        
+        // TODO: REVIEW: how did this ever call db.nextSerialNumberBatch?
+        
         assertEquals(-999, oid.getSerialNo());
         assertTrue(oid.isTransient());
-        oid = oidGenerator.createTransientOid(null);
+        oid = oidGenerator.createTransientOid(new ExamplePojo());
         assertEquals(-998, oid.getSerialNo());
     }
 
     @Test
     public void batchCreated() throws Exception {
+          context.checking(new Expectations() {
+              {
+                  one(db).nextSerialNumberBatch("_id", 4);
+                  will(returnValue(1L));
+              }
+          });
+
         oidGenerator.convertTransientToPersistentOid(oid);
         assertFalse(oid.isTransient());
         assertEquals(1, oid.getSerialNo());
@@ -73,8 +105,15 @@ public class NoSqlOidGeneratorTest {
 
     @Test
     public void batchReused() throws Exception {
+        context.checking(new Expectations() {
+            {
+                one(db).nextSerialNumberBatch("_id", 4);
+                will(returnValue(1L));
+            }
+        });
+
         oidGenerator.convertTransientToPersistentOid(oid);
-        oid = oidGenerator.createTransientOid(null);
+        oid = oidGenerator.createTransientOid(new ExamplePojo());
         oidGenerator.convertTransientToPersistentOid(oid);
         assertFalse(oid.isTransient());
         assertEquals(2, oid.getSerialNo());
@@ -83,11 +122,18 @@ public class NoSqlOidGeneratorTest {
 
     @Test
     public void secondbatchCreated() throws Exception {
+        context.checking(new Expectations() {
+            {
+                one(db).nextSerialNumberBatch("_id", 4);
+                will(returnValue(1L));
+            }
+        });
+
         oidGenerator.convertTransientToPersistentOid(oid);
-        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(null));
-        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(null));
+        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(new ExamplePojo()));
+        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(new ExamplePojo()));
         assertEquals(3, oid.getSerialNo());
-        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(null));
+        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(new ExamplePojo()));
         assertEquals(4, oid.getSerialNo());
 
         context.checking(new Expectations() {
@@ -96,7 +142,7 @@ public class NoSqlOidGeneratorTest {
                 will(returnValue(5L));
             }
         });
-        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(null));
+        oidGenerator.convertTransientToPersistentOid(oid = oidGenerator.createTransientOid(new ExamplePojo()));
         assertFalse(oid.isTransient());
         assertEquals(5, oid.getSerialNo());
         context.assertIsSatisfied();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReaderTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReaderTest.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReaderTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReaderTest.java Wed Feb 15 23:51:31 2012
@@ -30,8 +30,9 @@ import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.hamcrest.CoreMatchers;
 import org.jmock.Expectations;
-import org.jmock.Mockery;
+import org.jmock.auto.Mock;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
 
 import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -39,31 +40,49 @@ 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.spec.ObjectSpecification;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
 import org.apache.isis.runtimes.dflt.objectstores.dflt.testsystem.TestProxySystemII;
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 
 public class ObjectReaderTest {
 
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
+
+    @Mock
+    private KeyCreator keyCreator;
+    @Mock
+    private VersionCreator versionCreator;
+    
+    private ObjectSpecification exampleValuePojoSpec;
+    private ObjectSpecification exampleReferencePojoSpec;
+    private ObjectSpecification exampleCollectionPojoSpec;
+    
     private ObjectReader objectReader;
+    
     private StateReader reader1;
     private StateReader reader2;
-    private Mockery context;
-    private KeyCreator keyCreator;
-    private VersionCreator versionCreator;
+    
     private Map<String, DataEncryption> dataEncrypter;
 
+    private final NoSqlOid oid3 = new NoSqlOid(ExampleValuePojo.class.getName(), SerialOid.createPersistent(3));
+    private final NoSqlOid oid4 = new NoSqlOid(ExampleReferencePojo.class.getName(), SerialOid.createPersistent(4));
+    private final NoSqlOid oid5 = new NoSqlOid(ExampleCollectionPojo.class.getName(), SerialOid.createPersistent(5));
+
+
     @Before
     public void setup() {
         Logger.getRootLogger().setLevel(Level.OFF);
         final TestProxySystemII system = new TestProxySystemII();
         system.init();
 
-        context = new Mockery();
-
+        exampleValuePojoSpec = IsisContext.getSpecificationLoader().loadSpecification(ExampleValuePojo.class);
+        exampleReferencePojoSpec = IsisContext.getSpecificationLoader().loadSpecification(ExampleReferencePojo.class);
+        exampleCollectionPojoSpec = IsisContext.getSpecificationLoader().loadSpecification(ExampleCollectionPojo.class);
+                
         objectReader = new ObjectReader();
-        keyCreator = context.mock(KeyCreator.class);
-        versionCreator = context.mock(VersionCreator.class);
 
         dataEncrypter = new HashMap<String, DataEncryption>();
         final DataEncryption dataEncrypter1 = new DataEncryption() {
@@ -111,15 +130,15 @@ public class ObjectReaderTest {
                 one(reader1).readTime();
                 will(returnValue("1020"));
                 one(versionCreator).version("3", "username", "1020");
-                one(keyCreator).oid("3");
-
-                will(returnValue(SerialOid.createPersistent(3)));
+                
+                one(keyCreator).oid(exampleValuePojoSpec, "3");
+                will(returnValue(oid3));
                 ;
             }
         });
 
         final ObjectAdapter readObject = objectReader.load(reader1, keyCreator, versionCreator, dataEncrypter);
-        assertEquals(SerialOid.createPersistent(3), readObject.getOid());
+        assertEquals(oid3, readObject.getOid());
         assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
 
         final ExampleValuePojo pojo = (ExampleValuePojo) readObject.getObject();
@@ -150,8 +169,8 @@ public class ObjectReaderTest {
                 will(returnValue("1020"));
                 one(versionCreator).version("3", "username", "1020");
 
-                one(keyCreator).oid("4");
-                will(returnValue(SerialOid.createPersistent(4)));
+                one(keyCreator).oid(exampleReferencePojoSpec, "4");
+                will(returnValue(oid4));
                 ;
 
                 one(reader2).readField("reference1");
@@ -161,15 +180,15 @@ public class ObjectReaderTest {
                 will(returnValue("null"));
 
                 one(keyCreator).oidFromReference("ref@3");
-                will(returnValue(SerialOid.createPersistent(3)));
+                will(returnValue(oid3));
                 ;
                 one(keyCreator).specificationFromReference("ref@3");
-                will(returnValue(IsisContext.getSpecificationLoader().loadSpecification(ExampleValuePojo.class)));
+                will(returnValue(exampleValuePojoSpec));
             }
         });
 
         final ObjectAdapter readObject = objectReader.load(reader2, keyCreator, versionCreator, dataEncrypter);
-        assertEquals(SerialOid.createPersistent(4), readObject.getOid());
+        assertEquals(oid4, readObject.getOid());
         assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
 
         final ExampleReferencePojo pojo = (ExampleReferencePojo) readObject.getObject();
@@ -201,8 +220,8 @@ public class ObjectReaderTest {
                 will(returnValue("1020"));
                 one(versionCreator).version("3", "username", "1020");
 
-                one(keyCreator).oid("5");
-                will(returnValue(SerialOid.createPersistent(5)));
+                one(keyCreator).oid(exampleCollectionPojoSpec, "5");
+                will(returnValue(oid5));
                 ;
 
                 one(reader2).readField("hetrogenousCollection");
@@ -213,16 +232,16 @@ public class ObjectReaderTest {
                 one(keyCreator).specificationFromReference("ref@3");
                 will(returnValue(specification));
                 one(keyCreator).oidFromReference("ref@3");
-                will(returnValue(SerialOid.createPersistent(3)));
+                will(returnValue(oid3));
                 one(keyCreator).specificationFromReference("ref@4");
                 will(returnValue(specification));
                 one(keyCreator).oidFromReference("ref@4");
-                will(returnValue(SerialOid.createPersistent(4)));
+                will(returnValue(oid4));
             }
         });
 
         final ObjectAdapter readObject = objectReader.load(reader2, keyCreator, versionCreator, dataEncrypter);
-        assertEquals(SerialOid.createPersistent(5), readObject.getOid());
+        assertEquals(oid5, readObject.getOid());
         assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
 
         final ExampleCollectionPojo pojo = (ExampleCollectionPojo) readObject.getObject();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoDbTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoDbTest.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoDbTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/mongo/MongoDbTest.java Wed Feb 15 23:51:31 2012
@@ -39,7 +39,7 @@ import org.junit.Test;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.runtimes.dflt.objectstores.nosql.ExampleValuePojo;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.SerialKeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlKeyCreator;
 import org.apache.isis.runtimes.dflt.objectstores.nosql.TrialObjects;
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.simple.SerialOid;
 
@@ -66,7 +66,7 @@ public class MongoDbTest {
             return;
         }
 
-        db = new MongoDb("localhost", 0, "testdb", new SerialKeyCreator());
+        db = new MongoDb("localhost", 0, "testdb", new NoSqlKeyCreator());
         db.open();
 
         final ExampleValuePojo pojo = new ExampleValuePojo();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.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/SqlObjectStore.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java Wed Feb 15 23:51:31 2012
@@ -317,16 +317,17 @@ public final class SqlObjectStore implem
         final ObjectSpecification specification = query.getSpecification();// query.getPattern().getSpecification();//
                                                                            // getSpecification();
         final DatabaseConnector connector = connectionPool.acquire();
+        try {
+            final Vector<ObjectAdapter> matchingInstances = new Vector<ObjectAdapter>();
 
-        final Vector<ObjectAdapter> matchingInstances = new Vector<ObjectAdapter>();
-
-        addSpecQueryInstances(specification, connector, query, matchingInstances);
-
-        connectionPool.release(connector);
-
-        final ObjectAdapter[] instanceArray = new ObjectAdapter[matchingInstances.size()];
-        matchingInstances.copyInto(instanceArray);
-        return instanceArray;
+            addSpecQueryInstances(specification, connector, query, matchingInstances);
+            final ObjectAdapter[] instanceArray = new ObjectAdapter[matchingInstances.size()];
+            matchingInstances.copyInto(instanceArray);
+            return instanceArray;
+            
+        } finally {
+            connectionPool.release(connector);
+        }
     }
 
     private void addSpecQueryInstances(final ObjectSpecification specification, final DatabaseConnector connector, final PersistenceQueryFindByPattern query, final Vector<ObjectAdapter> matchingInstances) {
@@ -401,7 +402,7 @@ public final class SqlObjectStore implem
     }
 
     @Override
-    public Oid getOidForService(final String name) {
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
         final DatabaseConnector connector = connectionPool.acquire();
 
         final StringBuffer sql = new StringBuffer();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOid.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/SqlOid.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOid.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOid.java Wed Feb 15 23:51:31 2012
@@ -24,10 +24,15 @@ import java.io.Serializable;
 
 import org.apache.isis.core.commons.encoding.DataInputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputExtended;
+import org.apache.isis.core.commons.encoding.HexUtils;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.DirectlyStringableOid;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.DirectlyStringableOidWithSpecification;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.OidWithSpecification;
 
-public final class SqlOid implements Oid, Serializable {
+public final class SqlOid implements DirectlyStringableOidWithSpecification, Serializable {
+    
     private static final long serialVersionUID = 1L;
 
     public static enum State {
@@ -63,7 +68,6 @@ public final class SqlOid implements Oid
         this.className = className;
         this.primaryKey = primaryKey;
         this.state = state;
-        initialized();
     }
 
     public SqlOid(final DataInputExtended input) throws IOException {
@@ -72,7 +76,6 @@ public final class SqlOid implements Oid
         this.newPrimaryKey = input.readSerializable(PrimaryKey.class);
         this.previous = input.readEncodable(SqlOid.class);
         this.state = input.readSerializable(State.class);
-        initialized();
     }
 
     @Override
@@ -84,9 +87,6 @@ public final class SqlOid implements Oid
         output.writeSerializable(state);
     }
 
-    private void initialized() {
-        // nothing to do
-    }
 
     // //////////////////////////////////////////////////
     // impl
@@ -147,6 +147,26 @@ public final class SqlOid implements Oid
         previous = null;
     }
 
+    // ////////////////////////////////////////////
+    // Directly Stringable
+    // ////////////////////////////////////////////
+
+    public static SqlOid deString(String oidStr) {
+        final String[] split = oidStr.split("~");
+        // redundantly store the classname twice; once before the @ and once in encoded form after
+        // must not use a '@' as separator, else would break Scimpi
+        return HexUtils.decoded(split[1], SqlOid.class);
+    }
+    
+    @Override
+    public String enString() {
+        // redundantly store the classname twice; once before the @ and once in encoded form after
+        // must not use a '@' as separator, else would break Scimpi
+        return className + "~" + HexUtils.encoded(this);
+    }
+
+
+
     // //////////////////////////////////////////////////
     // equals, hashCode
     // //////////////////////////////////////////////////
@@ -180,4 +200,5 @@ public final class SqlOid implements Oid
         return (isTransient() ? "T" : "") + "OID#" + primaryKey.stringValue() + "/" + className + (previous == null ? "" : "+");
     }
 
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOidGenerator.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/SqlOidGenerator.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOidGenerator.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlOidGenerator.java Wed Feb 15 23:51:31 2012
@@ -24,6 +24,7 @@ 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.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.stringable.directly.OidStringifierDirect;
 import org.apache.isis.runtimes.dflt.runtime.persistence.oidgenerator.OidGeneratorAbstract;
 import org.apache.isis.runtimes.dflt.runtime.transaction.ObjectPersistenceException;
 
@@ -93,6 +94,7 @@ public class SqlOidGenerator extends Oid
     private final IdNumbers ids = new IdNumbers();
 
     public SqlOidGenerator(final DatabaseConnectorPool connectionPool) {
+        super(new OidStringifierDirect(SqlOid.class));
         this.connectionPool = connectionPool;
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.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/jdbc/JdbcConnector.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcConnector.java Wed Feb 15 23:51:31 2012
@@ -111,15 +111,15 @@ public class JdbcConnector extends Abstr
                 throw new SqlObjectStoreException("No connection URL specified to database");
             }
             if (user == null) {
-                throw new SqlObjectStoreException("No user specified for database connection");
-            }
-            if (password == null) {
-                throw new SqlObjectStoreException("No password specified for database connection");
+                LOG.info("No user specified; will attempt to login with no credentials");
+            } else {
+                if (password == null) {
+                    throw new SqlObjectStoreException("No password specified for database connection");
+                }
             }
 
             Class.forName(driver);
-            LOG.info("Connecting to " + url + " as " + user);
-            connection = DriverManager.getConnection(url, user, password);
+            connection = getConnection(url, user, password);
             if (connection == null) {
                 throw new SqlObjectStoreException("No connection established to " + url);
             }
@@ -131,6 +131,16 @@ public class JdbcConnector extends Abstr
 
     }
 
+    private static Connection getConnection(final String url, final String user, final String password) throws SQLException {
+        if(user != null) {
+            LOG.info("Connecting to " + url + " as " + user);
+            return DriverManager.getConnection(url, user, password);
+        } else {
+            LOG.info("Connecting to " + url + " with no credentials");
+            return DriverManager.getConnection(url);
+        }
+    }
+
     /*
      * public void executeStoredProcedure(final StoredProcedure storedProcedure)
      * { Parameter[] parameters = storedProcedure.getParameters(); StringBuffer

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/src/docbkx/guide/isis-sql-objectstore.xml Wed Feb 15 23:51:31 2012
@@ -478,7 +478,7 @@
         <blockquote>
           <para>isis.persistor.sql.datatypes.timestamp=TIMESTAMP</para>
 
-          <para>isis.persistor.sql.datatypes.datetime=TIMESTAMP</para>
+          <para>isis.persistor.sql.datatypes.datetme=TIMESTAMP</para>
 
           <para>isis.persistor.sql.datatypes.double=DOUBLE PRECISION</para>
         </blockquote>

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=1244793&r1=1244792&r2=1244793&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 Wed Feb 15 23:51:31 2012
@@ -396,7 +396,7 @@ public class XmlObjectStore implements O
     // /////////////////////////////////////////////////////////
 
     @Override
-    public Oid getOidForService(final String name) {
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
         return serviceManager.getOidForService(name);
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/remoting/common/src/main/java/org/apache/isis/runtimes/dflt/remoting/common/client/persistence/PersistenceSessionProxy.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/remoting/common/src/main/java/org/apache/isis/runtimes/dflt/remoting/common/client/persistence/PersistenceSessionProxy.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/remoting/common/src/main/java/org/apache/isis/runtimes/dflt/remoting/common/client/persistence/PersistenceSessionProxy.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/remoting/common/src/main/java/org/apache/isis/runtimes/dflt/remoting/common/client/persistence/PersistenceSessionProxy.java Wed Feb 15 23:51:31 2012
@@ -446,16 +446,16 @@ public class PersistenceSessionProxy ext
      * cache but it does not?
      */
     @Override
-    public Oid getOidForService(final String name) {
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
         Oid oid = serviceOidByNameCache.get(name);
         if (oid == null) {
-            oid = getOidForServiceFromPersistenceLayer(name);
+            oid = getOidForServiceFromPersistenceLayer(serviceSpecification, name);
             registerService(name, oid);
         }
         return oid;
     }
 
-    private Oid getOidForServiceFromPersistenceLayer(final String serviceId) {
+    private Oid getOidForServiceFromPersistenceLayer(ObjectSpecification serviceSpecification, final String serviceId) {
         final OidForServiceRequest request = new OidForServiceRequest(getAuthenticationSession(), serviceId);
         final OidForServiceResponse response = serverFacade.oidForService(request);
         final IdentityData data = response.getOidData();

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionAbstract.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionAbstract.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionAbstract.java Wed Feb 15 23:51:31 2012
@@ -30,6 +30,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.google.common.collect.Lists;
+
 import org.apache.log4j.Logger;
 
 import org.apache.isis.applib.query.Query;
@@ -40,6 +42,7 @@ import org.apache.isis.core.metamodel.ad
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 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.stringable.directly.OidWithSpecification;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetUtils;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -226,10 +229,10 @@ public abstract class PersistenceSession
     private void createServiceAdapters() {
         getTransactionManager().startTransaction();
         for (final Object service : servicesInjector.getRegisteredServices()) {
-            final ObjectSpecification serviceNoSpec = specificationLoader.loadSpecification(service.getClass());
-            serviceNoSpec.markAsService();
+            final ObjectSpecification serviceSpecification = specificationLoader.loadSpecification(service.getClass());
+            serviceSpecification.markAsService();
             final String serviceId = ServiceUtil.id(service);
-            final Oid existingOid = getOidForService(serviceId);
+            final Oid existingOid = getOidForService(serviceSpecification, serviceId);
             ObjectAdapter adapter;
             if (existingOid == null) {
                 adapter = getAdapterManager().adapterFor(service);
@@ -331,6 +334,13 @@ public abstract class PersistenceSession
     }
 
     @Override
+    public final ObjectAdapter recreateAdapter(final OidWithSpecification oid) {
+        final String className = oid.getClassName();
+        final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(className);
+        return recreateAdapter(oid, objectSpec);
+    }
+
+    @Override
     public ObjectAdapter recreateAdapter(final Oid oid, final ObjectSpecification specification) {
         final ObjectAdapter adapterLookedUpByOid = getAdapterManager().getAdapterFor(oid);
         if (adapterLookedUpByOid != null) {
@@ -528,7 +538,7 @@ public abstract class PersistenceSession
      * be given the same OID that it had when it was created in a different
      * session.
      */
-    protected abstract Oid getOidForService(String name);
+    protected abstract Oid getOidForService(ObjectSpecification serviceSpecification, String name);
 
     /**
      * Registers the specified service as having the specified OID.
@@ -552,16 +562,17 @@ public abstract class PersistenceSession
     @Override
     public List<ObjectAdapter> getServices() {
         final List<Object> services = servicesInjector.getRegisteredServices();
-        final List<ObjectAdapter> serviceAdapters = new ArrayList<ObjectAdapter>();
-        for (final Object service : services) {
-            serviceAdapters.add(getService(service));
+        final List<ObjectAdapter> serviceAdapters = Lists.newArrayList();
+        for (final Object servicePojo : services) {
+            serviceAdapters.add(getService(servicePojo));
         }
         return serviceAdapters;
     }
 
-    private ObjectAdapter getService(final Object service) {
-        final Oid oid = getOidForService(ServiceUtil.id(service));
-        return recreateAdapterForExistingService(oid, service);
+    private ObjectAdapter getService(final Object servicePojo) {
+        final ObjectSpecification serviceSpecification = getSpecificationLoader().loadSpecification(servicePojo.getClass());
+        final Oid oid = getOidForService(serviceSpecification, ServiceUtil.id(servicePojo));
+        return recreateAdapterForExistingService(oid, servicePojo);
     }
 
     /**
@@ -625,10 +636,12 @@ public abstract class PersistenceSession
         debug.appendln();
 
         debug.appendTitle("Services");
-        for (final Object service : servicesInjector.getRegisteredServices()) {
-            final String id = ServiceUtil.id(service);
-            final String serviceClassName = service.getClass().getName();
-            final Oid oidForService = getOidForService(id);
+        for (final Object servicePojo : servicesInjector.getRegisteredServices()) {
+            final String id = ServiceUtil.id(servicePojo);
+            final Class<? extends Object> serviceClass = servicePojo.getClass();
+            final ObjectSpecification serviceSpecification = getSpecificationLoader().loadSpecification(serviceClass);
+            final String serviceClassName = serviceClass.getName();
+            final Oid oidForService = getOidForService(serviceSpecification, id);
             final String serviceId = id + (id.equals(serviceClassName) ? "" : " (" + serviceClassName + ")");
             debug.appendln(oidForService != null ? oidForService.toString() : "[NULL]", serviceId);
         }

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionLogger.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionLogger.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionLogger.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/PersistenceSessionLogger.java Wed Feb 15 23:51:31 2012
@@ -27,6 +27,7 @@ import org.apache.isis.core.commons.debu
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
 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.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -187,6 +188,12 @@ public class PersistenceSessionLogger ex
     }
 
     @Override
+    public ObjectAdapter recreateAdapter(OidWithSpecification oid) {
+        log("recreate instance " + oid);
+        return underlying.recreateAdapter(oid);
+    }
+
+    @Override
     public ObjectAdapter recreateAdapter(final Oid oid, final ObjectSpecification specification) {
         log("recreate instance " + oid + " " + specification);
         return underlying.recreateAdapter(oid, specification);
@@ -257,4 +264,5 @@ public class PersistenceSessionLogger ex
         underlying.injectInto(candidate);
     }
 
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreDelegating.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreDelegating.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreDelegating.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreDelegating.java Wed Feb 15 23:51:31 2012
@@ -166,8 +166,8 @@ public abstract class IsisStoreDelegatin
     // ////////////////////////////////////////////////
 
     @Override
-    public Oid getOidForService(final String name) {
-        return underlying.getOidForService(name);
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
+        return underlying.getOidForService(serviceSpecification, name);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreLogger.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreLogger.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreLogger.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/IsisStoreLogger.java Wed Feb 15 23:51:31 2012
@@ -103,8 +103,8 @@ public class IsisStoreLogger extends Log
     }
 
     @Override
-    public Oid getOidForService(final String name) {
-        final Oid oid = decorated.getOidForService(name);
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
+        final Oid oid = decorated.getOidForService(serviceSpecification, name);
         log("get OID for service " + name + ": " + oid);
         return oid;
     }

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStorePersistence.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStorePersistence.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStorePersistence.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStorePersistence.java Wed Feb 15 23:51:31 2012
@@ -186,11 +186,12 @@ public interface ObjectStorePersistence 
     // Services
     // ///////////////////////////////////////////////////////
 
-    void registerService(String name, Oid oid);
+    void registerService(String id, Oid oid);
 
     /**
      * Returns the OID for the adapted service.
+     * @param serviceSpecification TODO
      */
-    Oid getOidForService(String name);
+    Oid getOidForService(ObjectSpecification serviceSpecification, String id);
 
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/PersistenceSessionObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/PersistenceSessionObjectStore.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/PersistenceSessionObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/PersistenceSessionObjectStore.java Wed Feb 15 23:51:31 2012
@@ -540,14 +540,14 @@ public class PersistenceSessionObjectSto
     // ///////////////////////////////////////////////////////////////////////////
 
     @Override
-    protected Oid getOidForService(final String name) {
-        return getOidForServiceFromPersistenceLayer(name);
+    protected Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
+        return getOidForServiceFromPersistenceLayer(serviceSpecification, name);
     }
 
-    private Oid getOidForServiceFromPersistenceLayer(final String name) {
+    private Oid getOidForServiceFromPersistenceLayer(ObjectSpecification serviceSpecification, final String name) {
         Oid oid = services.get(name);
         if (oid == null) {
-            oid = objectStore.getOidForService(name);
+            oid = objectStore.getOidForService(serviceSpecification, name);
             services.put(name, oid);
         }
         return oid;

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/oidgenerator/simple/SerialOid.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/oidgenerator/simple/SerialOid.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/oidgenerator/simple/SerialOid.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/persistence/oidgenerator/simple/SerialOid.java Wed Feb 15 23:51:31 2012
@@ -64,8 +64,16 @@ public final class SerialOid implements 
     private static final String TOSTRING_PREVIOUS_CONCAT = "+";
 
     private static final String ENSTRING_SERIAL_NUM_PREFIX = ":";
-    private static final String ENSTRING_PREVIOUS_CONCAT = "~";
-    private static Pattern DESTRING_PATTERN = Pattern.compile("^(T?)OID" + ENSTRING_SERIAL_NUM_PREFIX + "(-?[0-9A-F]+)(" + ENSTRING_PREVIOUS_CONCAT + "(T?)OID" + ENSTRING_SERIAL_NUM_PREFIX + "(-?[0-9A-F]+))?$");
+    private static final String ENSTRING_SERIAL_NUM_CONCAT = "~";
+    
+
+    private static Pattern DESTRING_PATTERN = 
+            Pattern.compile("^" +
+            		"(T?)OID" + ENSTRING_SERIAL_NUM_PREFIX + "(-?[0-9A-F]+)" +
+            		"(" 
+            		    + ENSTRING_SERIAL_NUM_CONCAT + "(T?)OID" + ENSTRING_SERIAL_NUM_PREFIX + "(-?[0-9A-F]+)" +
+            		")?" +
+            		"$");
 
     // ////////////////////////////////////////////
     // Constructor
@@ -124,9 +132,10 @@ public final class SerialOid implements 
 
         final String transientStr = matcher.group(1);
         final String serialNumInHexStr = matcher.group(2);
-        final SerialOid oid = createOid(transientStr, serialNumInHexStr);
-
         final String previousStr = matcher.group(3);
+        
+        final SerialOid oid = createOid(transientStr, serialNumInHexStr);
+        
         if (!StringUtils.isEmpty(previousStr)) {
             final String previousTransientStr = matcher.group(4);
             final String previousSerialNumInHexStr = matcher.group(5);
@@ -231,6 +240,7 @@ public final class SerialOid implements 
         return serialNo;
     }
 
+    
     // ////////////////////////////////////////////
     // equals, hashCode
     // ////////////////////////////////////////////
@@ -240,10 +250,10 @@ public final class SerialOid implements 
         hashCode = 37 * hashCode + (int) (serialNo ^ (serialNo >>> 32));
         hashCode = 37 * hashCode + (isTransient() ? 0 : 1);
         toString = asString(this, TOSTRING_SERIAL_NUM_PREFIX) + (previous == null ? "" : TOSTRING_PREVIOUS_CONCAT);
-        // enString = asString(this, ENSTRING_SERIAL_NUM_PREFIX) + (previous ==
-        // null ? "" : ENSTRING_PREVIOUS_CONCAT +
-        // asString(previous, ENSTRING_SERIAL_NUM_PREFIX));
-        enString = asString(this, ENSTRING_SERIAL_NUM_PREFIX);
+        
+        enString = asString(this, ENSTRING_SERIAL_NUM_PREFIX) + (previous == null ? "" : ENSTRING_SERIAL_NUM_CONCAT + asString(previous, ENSTRING_SERIAL_NUM_PREFIX));
+        
+        //enString = asString(this, ENSTRING_SERIAL_NUM_PREFIX); //?? what was this
     }
 
     private String asString(final SerialOid x, final String serialNumPrefix) {
@@ -288,4 +298,5 @@ public final class SerialOid implements 
         return toString;
     }
 
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/persistence/PersistenceSessionHydrator.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/persistence/PersistenceSessionHydrator.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/persistence/PersistenceSessionHydrator.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/main/java/org/apache/isis/runtimes/dflt/runtime/system/persistence/PersistenceSessionHydrator.java Wed Feb 15 23:51:31 2012
@@ -23,6 +23,7 @@ import org.apache.isis.core.commons.comp
 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.stringable.directly.OidWithSpecification;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public interface PersistenceSessionHydrator extends Injectable {
@@ -51,6 +52,15 @@ public interface PersistenceSessionHydra
     ObjectAdapter recreateAdapter(Oid oid, ObjectSpecification specification);
 
     /**
+     * Returns an {@link ObjectAdapter adapter} with the
+     * {@link ObjectSpecification type} determined from the provided
+     * {@link OidWithSpecification oid}.
+     * 
+     * @see #recreateAdapter(Oid, ObjectSpecification)
+     */
+    ObjectAdapter recreateAdapter(OidWithSpecification oid);
+
+    /**
      * Returns an adapter for the provided {@link Oid}, wrapping the provided
      * domain object.
      * 

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStoreSpy.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStoreSpy.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStoreSpy.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/persistence/objectstore/ObjectStoreSpy.java Wed Feb 15 23:51:31 2012
@@ -220,7 +220,7 @@ public class ObjectStoreSpy implements O
     }
 
     @Override
-    public Oid getOidForService(final String name) {
+    public Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
         return null;
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/testsystem/TestProxyPersistenceSession.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/testsystem/TestProxyPersistenceSession.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/testsystem/TestProxyPersistenceSession.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/runtime/src/test/java/org/apache/isis/runtimes/dflt/runtime/testsystem/TestProxyPersistenceSession.java Wed Feb 15 23:51:31 2012
@@ -220,7 +220,7 @@ public class TestProxyPersistenceSession
     }
 
     @Override
-    protected Oid getOidForService(final String name) {
+    protected Oid getOidForService(ObjectSpecification serviceSpecification, final String name) {
         throw new NotYetImplementedException();
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/webapp/src/main/java/org/apache/isis/runtimes/dflt/webapp/IsisWebAppBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/webapp/src/main/java/org/apache/isis/runtimes/dflt/webapp/IsisWebAppBootstrapper.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/webapp/src/main/java/org/apache/isis/runtimes/dflt/webapp/IsisWebAppBootstrapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/webapp/src/main/java/org/apache/isis/runtimes/dflt/webapp/IsisWebAppBootstrapper.java Wed Feb 15 23:51:31 2012
@@ -98,6 +98,8 @@ public class IsisWebAppBootstrapper impl
             injector = createGuiceInjector(isisConfigurationBuilder, deploymentType, installerLookup);
 
             final IsisSystem system = injector.getInstance(IsisSystem.class);
+            
+            isisConfigurationBuilder.dumpResourcesToLog();
 
             servletContext.setAttribute(WebAppConstants.ISIS_SYSTEM_KEY, system);
         } catch (final RuntimeException e) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/webserver/src/main/java/org/apache/isis/runtimes/dflt/webserver/internal/OptionHandlerDeploymentTypeWebServer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/webserver/src/main/java/org/apache/isis/runtimes/dflt/webserver/internal/OptionHandlerDeploymentTypeWebServer.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/webserver/src/main/java/org/apache/isis/runtimes/dflt/webserver/internal/OptionHandlerDeploymentTypeWebServer.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/webserver/src/main/java/org/apache/isis/runtimes/dflt/webserver/internal/OptionHandlerDeploymentTypeWebServer.java Wed Feb 15 23:51:31 2012
@@ -31,6 +31,6 @@ public class OptionHandlerDeploymentType
     private static final String TYPES = TYPE_SERVER_EXPLORATION + "; " + TYPE_SERVER_PROTOTYPE + " (default); " + TYPE_SERVER;
 
     public OptionHandlerDeploymentTypeWebServer() {
-        super(DeploymentType.SERVER_PROTOTYPE, TYPES);
+        super(DeploymentType.SERVER, TYPES);
     }
 }

Modified: incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authentication/FileAuthenticationConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authentication/FileAuthenticationConstants.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authentication/FileAuthenticationConstants.java (original)
+++ incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authentication/FileAuthenticationConstants.java Wed Feb 15 23:51:31 2012
@@ -21,7 +21,7 @@ package org.apache.isis.security.file.au
 
 public class FileAuthenticationConstants {
 
-    public static final String PASSWORDS_FILE = "security_file.passwords";
+    public static final String PASSWORDS_FILE = "authentication_file.passwords";
 
     private FileAuthenticationConstants() {
     }

Modified: incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authorization/FileAuthorizationConstants.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authorization/FileAuthorizationConstants.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authorization/FileAuthorizationConstants.java (original)
+++ incubator/isis/trunk/framework/security/file/src/main/java/org/apache/isis/security/file/authorization/FileAuthorizationConstants.java Wed Feb 15 23:51:31 2012
@@ -28,7 +28,7 @@ public final class FileAuthorizationCons
     private static final String ROOT = ConfigurationConstants.ROOT + AuthorizationManagerInstaller.TYPE + "." + FileAuthorizationManagerInstaller.NAME + ".";
 
     public static final String WHITELIST_RESOURCE_KEY = ROOT + "whitelist";
-    public static final String WHITELIST_RESOURCE_DEFAULT = "security_file.allow";
+    public static final String WHITELIST_RESOURCE_DEFAULT = "authorization_file.allow";
 
     public static final String BLACKLIST_RESOURCE_KEY = ROOT + "blacklist";
     public static final String BLACKLIST_RESOURCE_DEFAULT = "";

Modified: incubator/isis/trunk/framework/src/docbkx/guide/isis-contributors-guide.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/src/docbkx/guide/isis-contributors-guide.xml?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/src/docbkx/guide/isis-contributors-guide.xml (original)
+++ incubator/isis/trunk/framework/src/docbkx/guide/isis-contributors-guide.xml Wed Feb 15 23:51:31 2012
@@ -4661,17 +4661,26 @@ svn: No such revision 1126567</programli
         <sect2>
           <title>Perform the Release</title>
 
-          <para>The command to stage the release is:</para>
+          <para>The command to stage the release (assuming that
+          <filename>release.properties</filename> is still available in the
+          root directory) is:</para>
 
           <programlisting>mvn release:perform -P apache-release</programlisting>
 
+          <para>If, for any reason, the
+          <filename>release.properties</filename> file is not available, the
+          release can still be performed using:</para>
+
+          <programlisting>mvn release:perform -P apache-release \
+    -D connectionUrl=scm:svn:http://svn.apache.org/repos/asf/incubator/isis/tags/isis-0.x.x-incubating/framework</programlisting>
+
           <para>The command starts off by checking out the codebase from the
           tag:</para>
 
           <programlisting>[INFO] [release:perform {execution: default-cli}]
 [INFO] Checking out the project to perform the release ...
 [INFO] Executing: cmd.exe /X /C 
-       "svn --non-interactive checkout https://svn.apache.org/repos/asf/incubator/isis/tags/isis-0.x.x-incubating 
+       "svn --non-interactive checkout https://svn.apache.org/repos/asf/incubator/isis/tags/isis-0.x.x-incubating/framework 
         /users/uuuuuuuu/ai/branches/0.x.x-incubating/framework/target/checkout"
 [INFO] Working directory: /users/uuuuuuuu/ai/branches/0.x.x-incubating/framework/target/
 ...</programlisting>

Copied: incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/viewmodels/SimpleViewModel.java (from r1243257, incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/stables/StableEntity.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/viewmodels/SimpleViewModel.java?p2=incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/viewmodels/SimpleViewModel.java&p1=incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/stables/StableEntity.java&r1=1243257&r2=1244793&rev=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/stables/StableEntity.java (original)
+++ incubator/isis/trunk/framework/tck/tck-dom/src/main/java/org/apache/isis/tck/dom/viewmodels/SimpleViewModel.java Wed Feb 15 23:51:31 2012
@@ -17,14 +17,14 @@
  *  under the License.
  */
 
-package org.apache.isis.tck.dom.stables;
+package org.apache.isis.tck.dom.viewmodels;
 
 import org.apache.isis.applib.AbstractDomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Stable;
+import org.apache.isis.applib.annotation.ViewModel;
 
-@Stable
-public class StableEntity extends AbstractDomainObject {
+@ViewModel
+public class SimpleViewModel extends AbstractDomainObject {
 
     // {{ Name
     private String name;

Modified: incubator/isis/trunk/framework/viewer/bdd/pom.xml
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/bdd/pom.xml?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/bdd/pom.xml (original)
+++ incubator/isis/trunk/framework/viewer/bdd/pom.xml Wed Feb 15 23:51:31 2012
@@ -89,7 +89,7 @@
             <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
-              <version>4.8.1</version>
+              <version>4.10</version>
             </dependency>
         
             <dependency>
@@ -107,9 +107,8 @@
 		    <dependency>
 			    <groupId>com.google.guava</groupId>
                 <artifactId>guava</artifactId>
-                <version>r08</version>
+                <version>11.0</version>
 		    </dependency>
-
          </dependencies>
     </dependencyManagement>
     

Modified: incubator/isis/trunk/framework/viewer/dnd-tck/src/main/resources/isis.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/dnd-tck/src/main/resources/isis.properties?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/dnd-tck/src/main/resources/isis.properties (original)
+++ incubator/isis/trunk/framework/viewer/dnd-tck/src/main/resources/isis.properties Wed Feb 15 23:51:31 2012
@@ -21,7 +21,6 @@ isis.services =\
     scalars.PrimitiveValuedEntityRepositoryDefault,\
     scalars.WrapperValuedEntityRepositoryDefault, \
     simples.SimpleEntityRepositoryDefault,\
-    stables.StableEntityRepositoryDefault,\
     assocs.ParentEntityRepositoryDefault
 
 isis.fixtures.prefix= org.apache.isis.tck.fixture
@@ -32,7 +31,6 @@ isis.fixtures=\
     scalars.PrimitiveValuedEntityFixture,\
     scalars.WrapperValuedEntityFixture,\
     simples.SimpleEntityFixture,\
-    stables.StableEntityFixture,\
     assocs.ParentAndChildEntityFixture
 
 isis.exploration.users=sven, dick, bob

Modified: incubator/isis/trunk/framework/viewer/html-tck/src/main/webapp/WEB-INF/isis.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/html-tck/src/main/webapp/WEB-INF/isis.properties?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/html-tck/src/main/webapp/WEB-INF/isis.properties (original)
+++ incubator/isis/trunk/framework/viewer/html-tck/src/main/webapp/WEB-INF/isis.properties Wed Feb 15 23:51:31 2012
@@ -21,7 +21,6 @@ isis.services =\
     scalars.PrimitiveValuedEntityRepositoryDefault,\
     scalars.WrapperValuedEntityRepositoryDefault, \
     simples.SimpleEntityRepositoryDefault,\
-    stables.StableEntityRepositoryDefault,\
     assocs.ParentEntityRepositoryDefault
 
 isis.fixtures.prefix= org.apache.isis.tck.fixture
@@ -32,7 +31,6 @@ isis.fixtures=\
     scalars.PrimitiveValuedEntityFixture,\
     scalars.WrapperValuedEntityFixture,\
     simples.SimpleEntityFixture,\
-    stables.StableEntityFixture,\
     assocs.ParentAndChildEntityFixture
 
 isis.exploration.users=sven, dick, bob

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/ClientRequestConfigurer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/ClientRequestConfigurer.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/ClientRequestConfigurer.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/ClientRequestConfigurer.java Wed Feb 15 23:51:31 2012
@@ -138,7 +138,7 @@ public class ClientRequestConfigurer {
         if (requestArgs.size() == 0) {
             return this;
         }
-        final String queryString = UrlEncodingUtils.asUrlEncoded(requestArgs.toString());
+        final String queryString = UrlEncodingUtils.urlEncode(requestArgs.toString());
         uriBuilder.replaceQuery(queryString);
         return this;
     }
@@ -152,7 +152,7 @@ public class ClientRequestConfigurer {
         for (final Map.Entry<String, JsonRepresentation> entry : requestArgs.mapIterable()) {
             final String param = entry.getKey();
             final JsonRepresentation argRepr = entry.getValue();
-            final String arg = UrlEncodingUtils.asUrlEncoded(argRepr.asArg());
+            final String arg = UrlEncodingUtils.urlEncode(argRepr.asArg());
             queryParameters.add(param, arg);
         }
         return this;

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/JsonRepresentation.java Wed Feb 15 23:51:31 2012
@@ -688,7 +688,7 @@ public class JsonRepresentation {
     // ///////////////////////////////////////////////////////////////////////
 
     public String asUrlEncoded() {
-        return UrlEncodingUtils.asUrlEncoded(asJsonNode());
+        return UrlEncodingUtils.urlEncode(asJsonNode());
     }
 
     // ///////////////////////////////////////////////////////////////////////

Modified: incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/UrlEncodingUtils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/UrlEncodingUtils.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/UrlEncodingUtils.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-applib/src/main/java/org/apache/isis/viewer/json/applib/util/UrlEncodingUtils.java Wed Feb 15 23:51:31 2012
@@ -60,11 +60,11 @@ public final class UrlEncodingUtils {
         return urlDecode(asList).toArray(new String[] {});
     }
 
-    public static String asUrlEncoded(final JsonNode jsonNode) {
-        return UrlEncodingUtils.asUrlEncoded(jsonNode.toString());
+    public static String urlEncode(final JsonNode jsonNode) {
+        return UrlEncodingUtils.urlEncode(jsonNode.toString());
     }
 
-    public static String asUrlEncoded(final String str) {
+    public static String urlEncode(final String str) {
         try {
             return URLEncoder.encode(str, Charsets.UTF_8.name());
         } catch (final UnsupportedEncodingException e) {

Modified: incubator/isis/trunk/framework/viewer/json/json-tck/src/main/webapp/WEB-INF/isis.properties
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-tck/src/main/webapp/WEB-INF/isis.properties?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-tck/src/main/webapp/WEB-INF/isis.properties (original)
+++ incubator/isis/trunk/framework/viewer/json/json-tck/src/main/webapp/WEB-INF/isis.properties Wed Feb 15 23:51:31 2012
@@ -21,7 +21,6 @@ isis.services =\
     scalars.PrimitiveValuedEntityRepositoryDefault,\
     scalars.WrapperValuedEntityRepositoryDefault, \
     simples.SimpleEntityRepositoryDefault,\
-    stables.StableEntityRepositoryDefault,\
     assocs.ParentEntityRepositoryDefault,\
     defaults.WithDefaultsEntityRepositoryDefault
 
@@ -33,7 +32,6 @@ isis.fixtures=\
     scalars.PrimitiveValuedEntityFixture,\
     scalars.WrapperValuedEntityFixture,\
     simples.SimpleEntityFixture,\
-    stables.StableEntityFixture,\
     assocs.ParentAndChildEntityFixture,\
     defaults.WithDefaultsEntityFixture
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/ResourceContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/ResourceContext.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/ResourceContext.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/ResourceContext.java Wed Feb 15 23:51:31 2012
@@ -199,7 +199,7 @@ public class ResourceContext {
         return authenticationSession;
     }
 
-    public ObjectAdapterLookup getAdapterManager() {
+    public ObjectAdapterLookup getObjectAdapterLookup() {
         return objectAdapterLookup;
     }
 

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/util/OidUtils.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/util/OidUtils.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/util/OidUtils.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/main/java/org/apache/isis/viewer/json/viewer/util/OidUtils.java Wed Feb 15 23:51:31 2012
@@ -20,6 +20,9 @@ package org.apache.isis.viewer.json.view
 
 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.stringable.directly.OidWithSpecification;
+import org.apache.isis.viewer.json.applib.RestfulResponse.HttpStatusCode;
+import org.apache.isis.viewer.json.viewer.JsonApplicationException;
 import org.apache.isis.viewer.json.viewer.ResourceContext;
 
 public final class OidUtils {
@@ -30,7 +33,15 @@ public final class OidUtils {
     public static ObjectAdapter getObjectAdapter(final ResourceContext resourceContext, final String oidEncodedStr) {
         final String oidStr = UrlDecoderUtils.urlDecode(oidEncodedStr);
         final Oid oid = resourceContext.getOidStringifier().deString(oidStr);
-        return resourceContext.getAdapterManager().getAdapterFor(oid);
+        final ObjectAdapter adapterFor = resourceContext.getObjectAdapterLookup().getAdapterFor(oid);
+        if(adapterFor != null) {
+            return adapterFor;
+        }
+        if(!(oid instanceof OidWithSpecification)) {
+            throw JsonApplicationException.create(HttpStatusCode.NOT_IMPLEMENTED, "JSON viewer only supports objectstores that have Oids that are self-describing (implement OidWithSpecification)");
+        }
+        final OidWithSpecification oidWithSpec = (OidWithSpecification) oid;
+        return resourceContext.getPersistenceSession().recreateAdapter(oidWithSpec);
     }
 
     public static String getOidStr(final ResourceContext resourceContext, final ObjectAdapter objectAdapter) {

Modified: incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/ResourceContextTest_getArg.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/ResourceContextTest_getArg.java?rev=1244793&r1=1244792&r2=1244793&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/ResourceContextTest_getArg.java (original)
+++ incubator/isis/trunk/framework/viewer/json/json-viewer/src/test/java/org/apache/isis/viewer/json/viewer/ResourceContextTest_getArg.java Wed Feb 15 23:51:31 2012
@@ -49,7 +49,7 @@ public class ResourceContextTest_getArg 
 
     @Test
     public void whenArgExists() throws Exception {
-        queryString = UrlEncodingUtils.asUrlEncoded(JsonRepresentation.newMap("x-ro-page", "123").asJsonNode());
+        queryString = UrlEncodingUtils.urlEncode(JsonRepresentation.newMap("x-ro-page", "123").asJsonNode());
 
         context.checking(new Expectations() {
             {
@@ -69,7 +69,7 @@ public class ResourceContextTest_getArg 
 
     @Test
     public void whenArgDoesNotExist() throws Exception {
-        queryString = UrlEncodingUtils.asUrlEncoded(JsonRepresentation.newMap("xxx", "123").asJsonNode());
+        queryString = UrlEncodingUtils.urlEncode(JsonRepresentation.newMap("xxx", "123").asJsonNode());
 
         context.checking(new Expectations() {
             {