You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/05/15 00:45:03 UTC
svn commit: r1338472 [3/8] - in
/incubator/isis/trunk/framework/runtimes/dflt:
objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/
objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/
ob...
Copied: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlIdentifierGeneratorTest.java (from r1331799, 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/NoSqlIdentifierGeneratorTest.java?p2=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlIdentifierGeneratorTest.java&p1=incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlOidGeneratorTest.java&r1=1331799&r2=1338472&rev=1338472&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/NoSqlIdentifierGeneratorTest.java Mon May 14 22:44:57 2012
@@ -20,8 +20,6 @@
package org.apache.isis.runtimes.dflt.objectstores.nosql;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
@@ -31,17 +29,21 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.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;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
-public class NoSqlOidGeneratorTest {
+public class NoSqlIdentifierGeneratorTest {
+
+ public static class ExamplePojo {
+ }
- public static class ExamplePojo {}
-
@Rule
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
@@ -51,102 +53,92 @@ public class NoSqlOidGeneratorTest {
private SpecificationLoader mockSpecificationLoader;
@Mock
private ObjectSpecification mockSpecification;
-
- private RootOidDefault oid;
- private NoSqlOidGenerator oidGenerator;
+ private final ObjectSpecId sequenceNumbersSpecId = ObjectSpecId.of("_id");
+ private IdentifierGenerator identifierGenerator;
-
@Before
public void setup() {
Logger.getRootLogger().setLevel(Level.OFF);
- 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;
+ context.checking(new Expectations() {
+ {
+ allowing(mockSpecificationLoader).loadSpecification(with(ExamplePojo.class));
+ will(returnValue(mockSpecification));
+
+ allowing(mockSpecification).getCorrespondingClass();
+ will(returnValue(ExamplePojo.class));
+
+ allowing(mockSpecification).getCorrespondingClass();
+ will(returnValue(sequenceNumbersSpecId));
}
- };
- oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo());
- }
+ });
- @Test
- public void transientOid() throws Exception {
-
- // TODO: REVIEW: how did this ever call db.nextSerialNumberBatch?
-
- assertEquals(-999, oid.getIdentifier());
- assertTrue(oid.isTransient());
- oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo());
- assertEquals(-998, oid.getIdentifier());
+ identifierGenerator = new NoSqlIdentifierGenerator(db, -999, 4);
}
@Test
- public void batchCreated() throws Exception {
- context.checking(new Expectations() {
- {
- one(db).nextSerialNumberBatch("_id", 4);
- will(returnValue(1L));
- }
- });
-
- oidGenerator.asPersistent(oid);
- assertFalse(oid.isTransient());
- assertEquals(1, oid.getIdentifier());
- context.assertIsSatisfied();
+ public void transientIdentifier() throws Exception {
+ String identifier = identifierGenerator.createTransientIdentifierFor(sequenceNumbersSpecId, new ExamplePojo());
+ assertEquals("-999", identifier);
+
+ identifier = identifierGenerator.createTransientIdentifierFor(sequenceNumbersSpecId, new ExamplePojo());
+ assertEquals("-998", identifier);
}
@Test
- public void batchReused() throws Exception {
+ public void batchCreatedAndReused() throws Exception {
context.checking(new Expectations() {
{
- one(db).nextSerialNumberBatch("_id", 4);
+ one(db).nextSerialNumberBatch(sequenceNumbersSpecId, 4);
will(returnValue(1L));
}
});
- oidGenerator.asPersistent(oid);
- oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo());
- oidGenerator.asPersistent(oid);
- assertFalse(oid.isTransient());
- assertEquals(2, oid.getIdentifier());
- context.assertIsSatisfied();
+ RootOid transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-998");
+ String identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("1", identifier);
+
+ transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-997");
+ identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("2", identifier);
}
@Test
- public void secondbatchCreated() throws Exception {
+ public void secondBatchCreated() throws Exception {
context.checking(new Expectations() {
{
- one(db).nextSerialNumberBatch("_id", 4);
+ one(db).nextSerialNumberBatch(sequenceNumbersSpecId, 4);
will(returnValue(1L));
}
});
- oidGenerator.asPersistent(oid);
- oidGenerator.asPersistent(oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo()));
- oidGenerator.asPersistent(oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo()));
- assertEquals(3, oid.getIdentifier());
- oidGenerator.asPersistent(oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo()));
- assertEquals(4, oid.getIdentifier());
+ RootOid transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-998");
+ String identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("1", identifier);
+
+ transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-997");
+ identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("2", identifier);
+
+ transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-996");
+ identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("3", identifier);
+
+ transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-995");
+ identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("4", identifier);
context.checking(new Expectations() {
{
- one(db).nextSerialNumberBatch("_id", 4);
+ one(db).nextSerialNumberBatch(sequenceNumbersSpecId, 4);
will(returnValue(5L));
}
});
- oidGenerator.asPersistent(oid = (RootOidDefault) oidGenerator.createTransientOid(new ExamplePojo()));
- assertFalse(oid.isTransient());
- assertEquals(5, oid.getIdentifier());
- context.assertIsSatisfied();
+
+ transientRootOid = RootOidDefault.createTransient(sequenceNumbersSpecId, "-994");
+ identifier = identifierGenerator.createPersistentIdentifierFor(sequenceNumbersSpecId, new ExamplePojo(), transientRootOid);
+ assertEquals("5", identifier);
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.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?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest.java Mon May 14 22:44:57 2012
@@ -21,58 +21,78 @@ package org.apache.isis.runtimes.dflt.ob
import static org.junit.Assert.assertEquals;
+import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.progmodel.app.IsisMetaModel;
+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;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
-import org.apache.isis.tck.dom.eg.ExamplePojoRepository;
-import org.apache.isis.tck.dom.eg.ExamplePojoWithReferences;
public class NoSqlKeyCreatorTest {
@Rule
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
- private final String id = "3";
- private final String reference = ExamplePojoWithReferences.class.getName() + "@" + id;
- private final RootOidDefault oid3 = RootOidDefault.create("ERP", id);
-
- private ObjectSpecification specification;
-
- private KeyCreatorDefault keyCreatorDefault;
+ @Mock
+ private OidMarshaller mockOidMarshaller;
+ @Mock
+ private SpecificationLoader mockSpecificationLoader;
+ @Mock
+ private ObjectSpecification mockSpecification;
- private IsisMetaModel isisMetaModel;
+ private final RootOidDefault oid = RootOidDefault.create(ObjectSpecId.of("ERP"), "3");
+ private final String oidStr = oid.enString();
- @Mock
- private RuntimeContext mockRuntimeContext;
+ private KeyCreatorDefault keyCreatorDefault;
+
@Before
- public void setup() {
- isisMetaModel = new IsisMetaModel(mockRuntimeContext, new ProgrammingModelFacetsJava5(), new ExamplePojoRepository());
- specification = isisMetaModel.getSpecificationLoader().loadSpecification(ExamplePojoWithReferences.class);
-
- keyCreatorDefault = new KeyCreatorDefault();
+ public void setUp() throws Exception {
+ keyCreatorDefault = new KeyCreatorDefault() {
+ @Override
+ protected OidMarshaller getOidMarshaller() {
+ return mockOidMarshaller;
+ }
+ @Override
+ protected SpecificationLoader getSpecificationLoader() {
+ return mockSpecificationLoader;
+ }
+ };
}
@Test
- public void oid() throws Exception {
- final RootOidDefault oid = (RootOidDefault) keyCreatorDefault.oidFromReference(reference);
- assertEquals(oid3.getIdentifier(), oid.getIdentifier());
- assertEquals(oid3.getObjectType(), oid.getObjectType());
+ public void unmarshal() throws Exception {
+ context.checking(new Expectations() {
+
+ {
+ one(mockOidMarshaller).unmarshal(oidStr, RootOid.class);
+ will(returnValue(oid));
+ }
+ });
+ assertEquals(oid, keyCreatorDefault.unmarshal(oidStr));
}
@Test
public void specification() throws Exception {
- final ObjectSpecification spec = keyCreatorDefault.specificationFromReference(reference);
- assertEquals(specification, spec);
+ context.checking(new Expectations() {
+ {
+ one(mockOidMarshaller).unmarshal(oidStr, TypedOid.class);
+ will(returnValue(oid));
+ one(mockSpecificationLoader).lookupBySpecId(oid.getObjectSpecId());
+ will(returnValue(mockSpecification));
+ }
+ });
+ final ObjectSpecification spec = keyCreatorDefault.specificationFromOidStr(oidStr);
+ assertEquals(mockSpecification, spec);
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest_reference.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_reference.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest_reference.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlKeyCreatorTest_reference.java Mon May 14 22:44:57 2012
@@ -29,6 +29,7 @@ import org.junit.Test;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
@@ -47,7 +48,7 @@ public class NoSqlKeyCreatorTest_referen
private final String className = "com.foo.bar.SomeClass";
private final String objectType = "SCL";
- private final RootOidDefault rootOidDefault = RootOidDefault.create(objectType, ""+123);
+ private final RootOidDefault rootOidDefault = RootOidDefault.create(ObjectSpecId.of(objectType), ""+123);
private KeyCreatorDefault keyCreatorDefault;
@@ -71,7 +72,7 @@ public class NoSqlKeyCreatorTest_referen
@Test
public void reference() throws Exception {
- final String expectedReference = objectType + "@" + rootOidDefault.getIdentifier();
- assertEquals(expectedReference, keyCreatorDefault.reference(adapter));
+ final String expectedReference = objectType + ":" + rootOidDefault.getIdentifier();
+ assertEquals(expectedReference, keyCreatorDefault.oidStrFor(adapter));
}
}
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_constructor.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_constructor.java?rev=1338472&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_constructor.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_constructor.java Mon May 14 22:44:57 2012
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.runtimes.dflt.objectstores.nosql;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import com.google.common.collect.Maps;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.jmock.Expectations;
+import org.jmock.Sequence;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
+import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
+
+public class NoSqlObjectStoreTest_constructor {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ private NoSqlDataDatabase db;
+
+ @Mock
+ private VersionCreator versionCreator;
+
+ private Map<String, DataEncryption> dataEncrypter = Maps.newHashMap();
+
+ private NoSqlObjectStore store;
+
+ @Before
+ public void setup() {
+ Logger.getRootLogger().setLevel(Level.OFF);
+ }
+
+ @Test
+ public void withFixturesNotInstalled() throws Exception {
+ final Sequence constructor = context.sequence("<init>");
+ context.checking(new Expectations() {
+ {
+ one(db).open();
+ inSequence(constructor);
+
+ one(db).containsData();
+ will(returnValue(false));
+ inSequence(constructor);
+
+ one(db).close();
+ inSequence(constructor);
+ }
+ });
+ store = new NoSqlObjectStore(db, new OidGenerator(new NoSqlIdentifierGenerator(db)), versionCreator, null, dataEncrypter);
+ assertFalse(store.isFixturesInstalled());
+ }
+
+ @Test
+ public void withFixturesInstalled() throws Exception {
+ final Sequence constructor = context.sequence("<init>");
+ context.checking(new Expectations() {
+ {
+ one(db).open();
+ inSequence(constructor);
+
+ one(db).containsData();
+ will(returnValue(true));
+ inSequence(constructor);
+
+ one(db).close();
+ inSequence(constructor);
+ }
+ });
+ store = new NoSqlObjectStore(db, new OidGenerator(new NoSqlIdentifierGenerator(db)), versionCreator, null, dataEncrypter);
+ assertTrue(store.isFixturesInstalled());
+ }
+
+}
Propchange: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_constructor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_interactWith_db.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_interactWith_db.java?rev=1338472&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_interactWith_db.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_interactWith_db.java Mon May 14 22:44:57 2012
@@ -0,0 +1,226 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.runtimes.dflt.objectstores.nosql;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.collect.Maps;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.jmock.Expectations;
+import org.jmock.Sequence;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ResolveState;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.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.nosql.db.NoSqlDataDatabase;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
+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.system.persistence.OidGenerator;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceQuery;
+
+public class NoSqlObjectStoreTest_interactWith_db {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ private NoSqlDataDatabase db;
+
+ @Mock
+ private VersionCreator versionCreator;
+
+ @Mock
+ private PersistenceCommand command;
+
+ @Mock
+ private ObjectSpecification cusSpecification;
+
+ @Mock
+ private ObjectSpecification serviceSpecification;
+
+ @Mock
+ private ObjectAdapter cusAdapter;
+
+ private final ObjectSpecId cusSpecId = ObjectSpecId.of("CUS");
+ private RootOid cusRootOid = RootOidDefault.create(cusSpecId, "3");
+
+ final ObjectSpecId serviceSpecId = ObjectSpecId.of("service");
+
+ private Map<String, DataEncryption> dataEncrypter = Maps.newHashMap();
+
+ private NoSqlObjectStore store;
+
+
+
+
+
+ @Before
+ public void setup() {
+ Logger.getRootLogger().setLevel(Level.OFF);
+
+ context.checking(new Expectations() {
+ {
+ // in the constructor of the object store
+ one(db).open();
+ one(db).containsData();
+ will(returnValue(false));
+ one(db).close();
+
+ allowing(cusAdapter).getOid();
+ will(returnValue(cusRootOid));
+
+ allowing(cusAdapter).getSpecification();
+ will(returnValue(cusSpecification));
+
+ allowing(cusSpecification).getSpecId();
+ will(returnValue(cusSpecId));
+
+ allowing(serviceSpecification).getSpecId();
+ will(returnValue(serviceSpecId));
+ }
+ });
+
+ store = new NoSqlObjectStore(db, new OidGenerator(new NoSqlIdentifierGenerator(db)), versionCreator, null, dataEncrypter);
+ }
+
+ @Test
+ public void open() throws Exception {
+ context.checking(new Expectations() {
+ {
+ one(db).open();
+ }
+ });
+ store.open();
+ }
+
+ @Test
+ public void close() throws Exception {
+ context.checking(new Expectations() {
+ {
+ one(db).close();
+ }
+ });
+ store.close();
+ }
+
+ @Test
+ public void registerService() throws Exception {
+ context.checking(new Expectations() {
+ {
+ one(db).addService(serviceSpecId, "4");
+ }
+ });
+ store.registerService(RootOidDefault.create(serviceSpecId, "4"));
+ }
+
+ @Test
+ public void oidForService() throws Exception {
+ context.checking(new Expectations() {
+ {
+ one(db).getService(serviceSpecId);
+ will(returnValue("4"));
+ }
+ });
+ store.getOidForService(serviceSpecification);
+ }
+
+ @Test
+ public void hasInstances() throws Exception {
+ context.checking(new Expectations() {
+ {
+ one(db).hasInstances(cusSpecification.getSpecId());
+ will(returnValue(true));
+ }
+ });
+ store.hasInstances(cusSpecification);
+ }
+
+ @Test
+ public void execute() throws Exception {
+ final List<PersistenceCommand> commands = new ArrayList<PersistenceCommand>();
+ commands.add(command);
+
+ context.checking(new Expectations() {
+ {
+ // Hone(command).execute(null); // REVIEW: DKH ... how was this expectation ever met?
+ one(db).write(commands);
+ }
+ });
+
+ store.execute(commands);
+ }
+
+ @Test
+ public void instances() throws Exception {
+ final PersistenceQuery persistenceQuery = context.mock(PersistenceQuery.class);
+ context.checking(new Expectations() {
+ {
+ one(persistenceQuery).getSpecification();
+ will(returnValue(cusSpecification));
+
+ one(db).instancesOf(cusSpecification.getSpecId());
+ will(returnIterator());
+
+ allowing(cusSpecification).subclasses();
+ }
+ });
+
+ store.getInstances(persistenceQuery);
+ }
+
+ @Test
+ public void resolve() throws Exception {
+ final Sequence changingState = context.sequence("changingState");
+ context.checking(new Expectations() {
+ {
+ one(db).getInstance("3", cusSpecId);
+
+ allowing(cusAdapter).getResolveState();
+ inSequence(changingState);
+ will(returnValue(ResolveState.GHOST));
+
+ ignoring(cusSpecification);
+
+ one(cusAdapter).changeState(ResolveState.RESOLVING);
+ inSequence(changingState);
+ one(cusAdapter).changeState(ResolveState.RESOLVED);
+ inSequence(changingState);
+
+ one(cusAdapter).setVersion(null);
+ }
+ });
+ store.resolveImmediately(cusAdapter);
+ }
+
+}
Propchange: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/NoSqlObjectStoreTest_interactWith_db.java
------------------------------------------------------------------------------
svn:eol-style = native
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=1338472&r1=1338471&r2=1338472&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 Mon May 14 22:44:57 2012
@@ -38,13 +38,13 @@ 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.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
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.nosql.db.StateReader;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.mongo.MongoPersistorMechanismInstaller;
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.testsupport.IsisSystemWithFixtures;
@@ -61,36 +61,41 @@ public class ObjectReaderTest {
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;
+
+ @Mock
+ private StateReader reader1;
+ @Mock
+ private StateReader reader2;
+
+ //private KeyCreatorDefault keyCreator;
+
+ //private ObjectSpecification exampleValuePojoSpec;
+ //private ObjectSpecification exampleReferencePojoSpec;
+ //private ObjectSpecification exampleCollectionPojoSpec;
private ObjectReader objectReader;
- private StateReader reader1;
- private StateReader reader2;
private Map<String, DataEncryption> dataEncrypter;
- private final RootOidDefault oid3 = RootOidDefault.create("EPV|3"); // ExampleValuePojo
- private final RootOidDefault oid4 = RootOidDefault.create("EPR|4"); // ExampleReferencePojo
- private final RootOidDefault oid5 = RootOidDefault.create("EPC|5"); // ExampleCollectionPojo
+ private final RootOidDefault oid3 = RootOidDefault.deString("EPV:3"); // ExampleValuePojo
+ private final RootOidDefault oid4 = RootOidDefault.deString("EPR:4"); // ExampleReferencePojo
+ private final RootOidDefault oid5 = RootOidDefault.deString("EPC:5"); // ExampleCollectionPojo
@Before
public void setup() {
- exampleValuePojoSpec = iswf.loadSpecification(ExamplePojoWithValues.class);
- exampleReferencePojoSpec = iswf.loadSpecification(ExamplePojoWithReferences.class);
- exampleCollectionPojoSpec = iswf.loadSpecification(ExamplePojoWithCollections.class);
+ //keyCreator = new KeyCreatorDefault();
+
+ //exampleValuePojoSpec = iswf.loadSpecification(ExamplePojoWithValues.class);
+ //exampleReferencePojoSpec = iswf.loadSpecification(ExamplePojoWithReferences.class);
+ //exampleCollectionPojoSpec = iswf.loadSpecification(ExamplePojoWithCollections.class);
objectReader = new ObjectReader();
dataEncrypter = new HashMap<String, DataEncryption>();
- final DataEncryption dataEncrypter1 = new DataEncryption() {
+ final DataEncryption etcEncryption = new DataEncryption() {
@Override
public String getType() {
return "etc1";
@@ -110,8 +115,7 @@ public class ObjectReaderTest {
return encryptedText.substring(3);
}
};
- dataEncrypter.put(dataEncrypter1.getType(), dataEncrypter1);
-
+ dataEncrypter.put(etcEncryption.getType(), etcEncryption);
}
@Test
@@ -120,11 +124,14 @@ public class ObjectReaderTest {
context.checking(new Expectations() {
{
- one(reader1).readObjectType();
- will(returnValue(ExamplePojoWithValues.class.getName()));
+// one(reader1).readObjectType();
+// will(returnValue(ExamplePojoWithValues.class.getName()));
+//
+// one(reader1).readId();
+// will(returnValue("3"));
- one(reader1).readId();
- will(returnValue("3"));
+ one(reader1).readOid();
+ will(returnValue("EPV:3"));
one(reader1).readEncrytionType();
will(returnValue("etc1"));
@@ -136,13 +143,13 @@ public class ObjectReaderTest {
will(returnValue("1020"));
one(versionCreator).version("3", "username", "1020");
- one(keyCreator).oid(exampleValuePojoSpec, "3");
- will(returnValue(oid3));
+// one(keyCreator).createRootOid(exampleValuePojoSpec, "3");
+// will(returnValue(oid3));
;
}
});
- final ObjectAdapter readObject = objectReader.load(reader1, keyCreator, versionCreator, dataEncrypter);
+ final ObjectAdapter readObject = objectReader.load(reader1, versionCreator, dataEncrypter);
assertEquals(oid3, readObject.getOid());
assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
@@ -155,14 +162,16 @@ public class ObjectReaderTest {
@Test
public void testReadingReference() throws Exception {
- reader2 = context.mock(StateReader.class, "reader 2");
context.checking(new Expectations() {
{
- one(reader2).readObjectType();
- will(returnValue(ExamplePojoWithReferences.class.getName()));
+// one(reader2).readObjectType();
+// will(returnValue(ExamplePojoWithReferences.class.getName()));
+//
+// one(reader2).readId();
+// will(returnValue("4"));
- one(reader2).readId();
- will(returnValue("4"));
+ one(reader2).readOid();
+ will(returnValue("EPR:4"));
one(reader2).readEncrytionType();
will(returnValue("etc1"));
@@ -174,25 +183,23 @@ public class ObjectReaderTest {
will(returnValue("1020"));
one(versionCreator).version("3", "username", "1020");
- one(keyCreator).oid(exampleReferencePojoSpec, "4");
- will(returnValue(oid4));
- ;
+// one(keyCreator).createRootOid(exampleReferencePojoSpec, "4");
+// will(returnValue(oid4));
- one(reader2).readField("reference1");
- will(returnValue("ref@3"));
+ one(reader2).readField("reference");
+ will(returnValue("EPV:3"));
- one(reader2).readField("reference2");
- will(returnValue("null"));
+ one(reader2).readAggregate("aggregatedReference");
+ will(returnValue(null));
- one(keyCreator).oidFromReference("ref@3");
- will(returnValue(oid3));
- ;
- one(keyCreator).specificationFromReference("ref@3");
- will(returnValue(exampleValuePojoSpec));
+// one(keyCreator).unmarshal("ref@3");
+// will(returnValue(oid3));
+// one(keyCreator).specificationFromOidStr("ref@3");
+// will(returnValue(exampleValuePojoSpec));
}
});
- final ObjectAdapter readObject = objectReader.load(reader2, keyCreator, versionCreator, dataEncrypter);
+ final ObjectAdapter readObject = objectReader.load(reader2, versionCreator, dataEncrypter);
assertEquals(oid4, readObject.getOid());
assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
@@ -205,15 +212,17 @@ public class ObjectReaderTest {
@Test
public void testReadingCollection() throws Exception {
- final ObjectSpecification specification = IsisContext.getSpecificationLoader().loadSpecification(ExamplePojoWithValues.class);
- reader2 = context.mock(StateReader.class, "reader 2");
+ //final ObjectSpecification specification = IsisContext.getSpecificationLoader().loadSpecification(ExamplePojoWithValues.class);
context.checking(new Expectations() {
{
- one(reader2).readObjectType();
- will(returnValue(ExamplePojoWithCollections.class.getName()));
+// one(reader2).readObjectType();
+// will(returnValue(ExamplePojoWithCollections.class.getName()));
+//
+// one(reader2).readId();
+// will(returnValue("5"));
- one(reader2).readId();
- will(returnValue("5"));
+ one(reader2).readOid();
+ will(returnValue("EPC:5"));
one(reader2).readEncrytionType();
will(returnValue("etc1"));
@@ -225,27 +234,26 @@ public class ObjectReaderTest {
will(returnValue("1020"));
one(versionCreator).version("3", "username", "1020");
- one(keyCreator).oid(exampleCollectionPojoSpec, "5");
- will(returnValue(oid5));
- ;
+// one(keyCreator).createRootOid(exampleCollectionPojoSpec, "5");
+// will(returnValue(oid5));
- one(reader2).readField("hetrogenousCollection");
+ one(reader2).readField("heterogeneousCollection");
will(returnValue(null));
- one(reader2).readField("homogenousCollection");
- will(returnValue("ref@3|ref@4|"));
+ one(reader2).readField("homogeneousCollection");
+ will(returnValue("EPV:3|EPV:4|"));
- one(keyCreator).specificationFromReference("ref@3");
- will(returnValue(specification));
- one(keyCreator).oidFromReference("ref@3");
- will(returnValue(oid3));
- one(keyCreator).specificationFromReference("ref@4");
- will(returnValue(specification));
- one(keyCreator).oidFromReference("ref@4");
- will(returnValue(oid4));
+// one(keyCreator).specificationFromOidStr("ref@3");
+// will(returnValue(specification));
+// one(keyCreator).unmarshal("ref@3");
+// will(returnValue(oid3));
+// one(keyCreator).specificationFromOidStr("ref@4");
+// will(returnValue(specification));
+// one(keyCreator).unmarshal("ref@4");
+// will(returnValue(oid4));
}
});
- final ObjectAdapter readObject = objectReader.load(reader2, keyCreator, versionCreator, dataEncrypter);
+ final ObjectAdapter readObject = objectReader.load(reader2, versionCreator, dataEncrypter);
assertEquals(oid5, readObject.getOid());
assertEquals(ResolveState.RESOLVED, readObject.getResolveState());
@@ -278,9 +286,9 @@ public class ObjectReaderTest {
});
final ObjectSpecification specification = IsisContext.getSpecificationLoader().loadSpecification(ExamplePojoWithValues.class);
- final ObjectAdapter readObject = IsisContext.getPersistenceSession().recreateAdapter(RootOidDefault.create("EVP", ""+4), specification);
+ final ObjectAdapter readObject = IsisContext.getPersistenceSession().recreateAdapter(specification, RootOidDefault.create(ObjectSpecId.of("EVP"), ""+4));
- objectReader.update(reader1, keyCreator, versionCreator, dataEncrypter, readObject);
+ objectReader.update(reader1, versionCreator, dataEncrypter, readObject);
final ExamplePojoWithValues pojo = (ExamplePojoWithValues) readObject.getObject();
assertEquals("Fred Smith", pojo.getName());
@@ -290,9 +298,11 @@ public class ObjectReaderTest {
}
private void setupObject1() {
- reader1 = context.mock(StateReader.class, "reader 1");
context.checking(new Expectations() {
{
+ one(reader1).readField("date");
+ will(returnValue("null"));
+
one(reader1).readField("name");
will(returnValue("ENCFred Smith"));
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommandTest.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/WriteObjectCommandTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommandTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommandTest.java Mon May 14 22:44:57 2012
@@ -31,12 +31,10 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
import org.apache.isis.core.metamodel.adapter.version.SerialNumberVersion;
import org.apache.isis.core.metamodel.adapter.version.Version;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2;
import org.apache.isis.core.testsupport.jmock.JUnitRuleMockery2.Mode;
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.testsupport.IsisSystemWithFixtures;
import org.apache.isis.tck.dom.eg.ExamplePojoWithCollections;
@@ -55,16 +53,14 @@ public class WriteObjectCommandTest {
private StateWriter writer;
@Mock
private VersionCreator versionCreator;
- @Mock
- private KeyCreator keyCreator;
+
@Mock
private NoSqlCommandContext commandContext;
private DataEncryption dataEncrypter;
+ //private KeyCreatorDefault keyCreator;
private ObjectAdapter epv1Adapter;
- private ObjectSpecification specification;
- private ObjectAdapter epv2Adapter;
private ObjectAdapter epr1Adapter;
private ObjectAdapter epc1Adapter;
@@ -78,26 +74,26 @@ public class WriteObjectCommandTest {
@Before
public void setup() {
+ //keyCreator = new KeyCreatorDefault();
+
epv1 = iswf.fixtures.epv1;
epv1.setName("Fred Smith");
epv1.setSize(108);
- epv1Adapter = iswf.remapAsPersistent(RootOidDefault.create("EPV|1"), epv1);
+ epv1Adapter = iswf.remapAsPersistent(epv1, RootOidDefault.deString("EPV:1"));
epv2 = iswf.fixtures.epv2;
epv2.setName("John Brown");
- epv2Adapter = iswf.remapAsPersistent(RootOidDefault.create("EPV|2"), epv2);
+ iswf.remapAsPersistent(epv2, RootOidDefault.deString("EPV:2"));
epr1 = iswf.fixtures.epr1;
epr1.setReference(epv1);
- epr1Adapter = iswf.remapAsPersistent(RootOidDefault.create("EPR|1"), epr1);
+ epr1Adapter = iswf.remapAsPersistent(epr1, RootOidDefault.deString("EPR:1"));
epc1 = iswf.fixtures.epc1;
epc1.getHomogeneousCollection().add(epv1);
epc1.getHomogeneousCollection().add(epv2);
- epc1Adapter = iswf.remapAsPersistent(RootOidDefault.create("EPC|1"), epc1Adapter);
-
- specification = epv1Adapter.getSpecification();
+ epc1Adapter = iswf.remapAsPersistent(epc1, RootOidDefault.deString("EPC:1"));
final Version version = new SerialNumberVersion(2, "username", null);
@@ -141,16 +137,18 @@ public class WriteObjectCommandTest {
context.checking(new Expectations() {
{
- one(commandContext).createStateWriter(specification.getFullIdentifier());
+ one(commandContext).createStateWriter(epv1Adapter.getSpecification().getSpecId());
will(returnValue(writer));
- one(keyCreator).key(RootOidDefault.create("EPV|1"));
- will(returnValue("1"));
+// one(writer).writeId("1");
+// one(writer).writeObjectType(specification.getFullIdentifier());
+
+ final RootOidDefault oid = RootOidDefault.create(epv1Adapter.getSpecification().getSpecId(), "1");
+ exactly(2).of(writer).writeOid(oid); // once for the id, once for the type
- one(writer).writeId("3");
- one(writer).writeType(specification.getFullIdentifier());
one(writer).writeField("name", "ENCFred Smith");
one(writer).writeField("size", "ENC108");
+ one(writer).writeField("date", null);
one(writer).writeField("nullable", null);
one(writer).writeVersion(null, "2");
one(writer).writeUser("username");
@@ -162,9 +160,8 @@ public class WriteObjectCommandTest {
}
});
- new WriteObjectCommand(false, keyCreator, versionCreator, dataEncrypter, epv1Adapter).execute(commandContext);
-
- context.assertIsSatisfied();
+ final WriteObjectCommand command = new WriteObjectCommand(WriteObjectCommand.Mode.NON_UPDATE, versionCreator, dataEncrypter, epv1Adapter);
+ command.execute(commandContext);
}
@Test
@@ -172,18 +169,18 @@ public class WriteObjectCommandTest {
context.checking(new Expectations() {
{
- one(commandContext).createStateWriter(epr1Adapter.getSpecification().getFullIdentifier());
+ one(commandContext).createStateWriter(epr1Adapter.getSpecification().getSpecId());
will(returnValue(writer));
- one(keyCreator).key(RootOidDefault.create("EPR|1"));
- will(returnValue("5"));
- one(keyCreator).reference(epv1Adapter);
- will(returnValue("ref@3"));
-
- one(writer).writeId("5");
- one(writer).writeType(epr1Adapter.getSpecification().getFullIdentifier());
- one(writer).writeField("reference1", "ref@3");
- one(writer).writeField("reference2", null);
+// one(writer).writeId("1");
+// one(writer).writeObjectType(epr1Adapter.getSpecification().getFullIdentifier());
+
+ final RootOidDefault oid = RootOidDefault.create(epr1Adapter.getSpecification().getSpecId(), "1");
+ exactly(2).of(writer).writeOid(oid); // once for the id, once for the type
+
+ one(writer).writeField("reference", "EPV:1");
+ one(writer).writeField("aggregatedReference", null);
+
one(writer).writeVersion(null, "2");
one(writer).writeUser("username");
one(writer).writeTime("1057");
@@ -193,9 +190,8 @@ public class WriteObjectCommandTest {
}
});
- new WriteObjectCommand(false, keyCreator, versionCreator, dataEncrypter, epr1Adapter).execute(commandContext);
-
- context.assertIsSatisfied();
+ final WriteObjectCommand command = new WriteObjectCommand(WriteObjectCommand.Mode.NON_UPDATE, versionCreator, dataEncrypter, epr1Adapter);
+ command.execute(commandContext);
}
@Test
@@ -203,20 +199,16 @@ public class WriteObjectCommandTest {
context.checking(new Expectations() {
{
- one(commandContext).createStateWriter(epc1Adapter.getSpecification().getFullIdentifier());
+ one(commandContext).createStateWriter(epc1Adapter.getSpecification().getSpecId());
will(returnValue(writer));
- one(keyCreator).key(RootOidDefault.create("EPC|1"));
- will(returnValue("6"));
- one(writer).writeId("6");
- one(writer).writeType(epc1Adapter.getSpecification().getFullIdentifier());
-
- one(keyCreator).reference(epv1Adapter);
- will(returnValue("ref@3"));
- one(keyCreator).reference(epv2Adapter);
- will(returnValue("ref@4"));
+// one(writer).writeId("1");
+// one(writer).writeObjectType(epc1Adapter.getSpecification().getFullIdentifier());
+
+ final RootOidDefault oid = RootOidDefault.create(epc1Adapter.getSpecification().getSpecId(), "1");
+ exactly(2).of(writer).writeOid(oid); // once for the id, once for the type
- one(writer).writeField("homogenousCollection", "ref@3|ref@4|");
+ one(writer).writeField("homogeneousCollection", "EPV:1|EPV:2|");
one(writer).writeVersion(null, "2");
one(writer).writeUser("username");
@@ -227,9 +219,7 @@ public class WriteObjectCommandTest {
}
});
- new WriteObjectCommand(false, keyCreator, versionCreator, dataEncrypter, epc1Adapter).execute(commandContext);
-
- context.assertIsSatisfied();
+ final WriteObjectCommand command = new WriteObjectCommand(WriteObjectCommand.Mode.NON_UPDATE, versionCreator, dataEncrypter, epc1Adapter);
+ command.execute(commandContext);
}
-
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ChecksummingPerfomance.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/db/file/ChecksummingPerfomance.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ChecksummingPerfomance.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ChecksummingPerfomance.java Mon May 14 22:44:57 2012
@@ -30,9 +30,9 @@ public class ChecksummingPerfomance {
public static void main(final String[] args) throws Exception {
- final CRC32 inputChecksum = new CRC32();
- final CheckedInputStream in = new CheckedInputStream(new FileInputStream("test.data"), inputChecksum);
- final BufferedReader reader = new BufferedReader(new InputStreamReader(in, Util.ENCODING));
+ //final CRC32 inputChecksum = new CRC32();
+ //final CheckedInputStream in = new CheckedInputStream(new FileInputStream("test.data"), inputChecksum);
+ //final BufferedReader reader = new BufferedReader(new InputStreamReader(in, Util.ENCODING));
for (int i = 0; i < 30; i++) {
long time = System.currentTimeMillis();
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnectionTest.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/db/file/ClientConnectionTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnectionTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/ClientConnectionTest.java Mon May 14 22:44:57 2012
@@ -29,12 +29,9 @@ import java.io.InputStream;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.apache.isis.core.commons.lang.IoUtils;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.ClientConnection;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.RemotingException;
import org.apache.isis.runtimes.dflt.runtime.persistence.ConcurrencyException;
import org.apache.isis.runtimes.dflt.runtime.persistence.ObjectNotFoundException;
@@ -53,7 +50,6 @@ public class ClientConnectionTest {
connection = new ClientConnection(input, output);
}
- @Ignore
@Test
public void testRequest() throws Exception {
connection.request('D', "xxx yyy");
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReaderTest.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/db/file/JsonStateReaderTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReaderTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReaderTest.java Mon May 14 22:44:57 2012
@@ -35,8 +35,21 @@ public class JsonStateReaderTest {
@Before
public void setup() {
- reader = new JsonStateReader("{" + "\"_encrypt\": \"etc1\"," + "\"_id\": \"#2\"," + "\"_type\": \"com.package.ClassName\"," + "\"_time\": \"ddmmyy\"," + "\"_user\": \"fred\"," + "\"_version\": \"2\"," + "\"field-1\": \"1234\"," + "\"field-2\": \"data\"," + "\"field-3\": null,"
- + "\"list\": [{}, {}]," + "\"aggregate\": {\"_id\": \"#3\"}," + "}");
+ reader = new JsonStateReader(
+ "{" +
+ "\"_encrypt\": \"etc1\"," +
+ "\"_oid\": \"com.package.ClassName:#2\"," +
+ "\"_time\": \"ddmmyy\"," +
+ "\"_user\": \"fred\"," +
+ "\"_version\": \"2\"," +
+ "\"field-1\": \"1234\"," +
+ "\"field-2\": \"data\"," +
+ "\"field-3\": null,"
+ + "\"list\": [{}, {}]," +
+ "\"aggregate\": {" +
+ "\"_oid\": \"com.package.ClassName:#2~com.package.AggregatedClassName:#3\"" +
+ "}," +
+ "}");
}
@Test
@@ -44,14 +57,19 @@ public class JsonStateReaderTest {
assertEquals("etc1", reader.readEncrytionType());
}
- @Test
- public void readId() throws Exception {
- assertEquals("#2", reader.readId());
- }
+// @Test
+// public void readId() throws Exception {
+// assertEquals("#2", reader.readId());
+// }
+//
+// @Test
+// public void readObjectType() throws Exception {
+// assertEquals("com.package.ClassName", reader.readObjectType());
+// }
@Test
- public void readObjectType() throws Exception {
- assertEquals("com.package.ClassName", reader.readObjectType());
+ public void readOid() throws Exception {
+ assertEquals("com.package.ClassName:#2", reader.readOid());
}
@Test
@@ -104,6 +122,6 @@ public class JsonStateReaderTest {
@Test
public void readAggregate() throws Exception {
final StateReader aggregate = reader.readAggregate("aggregate");
- assertEquals("#3", aggregate.readId());
+ assertEquals("com.package.ClassName:#2~com.package.AggregatedClassName:#3", aggregate.readOid());
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriterTest.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/db/file/JsonStateWriterTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriterTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriterTest.java Mon May 14 22:44:57 2012
@@ -26,6 +26,7 @@ import java.util.List;
import org.junit.Before;
import org.junit.Test;
+import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.file.JsonStateWriter;
@@ -45,12 +46,19 @@ public class JsonStateWriterTest {
@Test
public void basicData() throws Exception {
- writer.writeId("#1");
+// writer.writeObjectType("com.planchase.ClassName");
+// writer.writeId("#1");
+ writer.writeOid(RootOidDefault.deString("com.planchase.ClassName:1"));
writer.writeTime("ddmmyy");
- writer.writeType("com.planchase.ClassName");
writer.writeVersion("1", "2");
writer.writeUser("fred");
- assertEquals("{\n \"_id\": \"#1\",\n \"_time\": \"ddmmyy\",\n \"_type\": \"com.planchase.ClassName\",\n \"_user\": \"fred\",\n \"_version\": \"2\"\n}", writer.getData());
+ assertEquals("{\n" +
+ " \"_oid\": \"com.planchase.ClassName:1\",\n" +
+ " \"_time\": \"ddmmyy\",\n" +
+ " \"_user\": \"fred\",\n" +
+ " \"_version\": \"2\"\n" +
+ "}",
+ writer.getData());
}
@Test
@@ -101,10 +109,11 @@ public class JsonStateWriterTest {
@Test
public void requestData() throws Exception {
- writer.writeType("com.planchase.ClassName");
- writer.writeId("#8");
+// writer.writeObjectType("com.planchase.ClassName");
+// writer.writeId("#8");
+ writer.writeOid(RootOidDefault.deString("com.planchase.ClassName:8"));
writer.writeVersion("1", "2");
- assertEquals("com.planchase.ClassName #8 1 2", writer.getRequest());
+ assertEquals("com.planchase.ClassName:8 1 2", writer.getRequest());
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/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/db/mongo/MongoDbTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDbTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDbTest.java Mon May 14 22:44:57 2012
@@ -36,8 +36,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.testsupport.IsisSystemWithFixtures;
@@ -70,7 +69,6 @@ public class MongoDbTest {
db = new MongoDb("localhost", 0, "testdb", new KeyCreatorDefault());
db.open();
- RootOid oid = RootOidDefault.createTransient("EPV|3");
adapter1 = iswf.adapterFor(iswf.fixtures.epv1);
specification = adapter1.getSpecification();
}
@@ -82,47 +80,46 @@ public class MongoDbTest {
@Test
public void serialNumberSaved() throws Exception {
- assertEquals(1, db.nextSerialNumberBatch("oid", 10));
- assertEquals(11, db.nextSerialNumberBatch("oid", 10));
+ assertEquals(1, db.nextSerialNumberBatch(ObjectSpecId.of("oid"), 10));
+ assertEquals(11, db.nextSerialNumberBatch(ObjectSpecId.of("oid"), 10));
}
@Test
public void hasInstances() throws Exception {
- final String specificationName = specification.getFullIdentifier();
- assertFalse(db.hasInstances(specificationName));
+ assertFalse(db.hasInstances(specification.getSpecId()));
db.close();
- final DBCollection instances = testDb.getCollection(specificationName);
+ final DBCollection instances = testDb.getCollection(specification.getSpecId().asString());
instances.insert(new BasicDBObject().append("test", "test"));
db.open();
- assertTrue(db.hasInstances(specificationName));
- assertFalse(db.hasInstances("org.xxx.unknown"));
+ assertTrue(db.hasInstances(specification.getSpecId()));
+ assertFalse(db.hasInstances(ObjectSpecId.of("org.xxx.unknown")));
}
@Test
public void destroyInstance() throws Exception {
db.close();
- final String specificationName = specification.getFullIdentifier();
- final DBCollection instances = testDb.getCollection(specificationName);
+ final DBCollection instances = testDb.getCollection(specification.getSpecId().asString());
final BasicDBObject dbObject = new BasicDBObject().append("test", "test");
instances.insert(dbObject);
db.open();
- db.delete(specificationName, dbObject.getString("_id"));
- assertFalse(db.hasInstances(specificationName));
+ db.delete(specification.getSpecId(), dbObject.getString("_id"));
+ assertFalse(db.hasInstances(specification.getSpecId()));
}
@Test
public void serviceIds() throws Exception {
- db.addService("one", "123");
- assertEquals("123", db.getService("one"));
+ final ObjectSpecId osi = ObjectSpecId.of("one");
+ db.addService(osi, "123");
+ assertEquals("123", db.getService(osi));
}
@Test
public void unknownServiceIds() throws Exception {
- assertNull(db.getService("two"));
+ assertNull(db.getService(ObjectSpecId.of("two")));
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReaderTest.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/db/mongo/MongoStateReaderTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReaderTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReaderTest.java Mon May 14 22:44:57 2012
@@ -35,11 +35,13 @@ import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.mongo.MongoStateReader;
public class MongoStateReaderTest {
- private static final String SPEC_NAME = "org.test.Object";
+ private static final String OBJECT_TYPE = "org.test.Object";
+
private DB testDb;
private MongoStateReader reader;
@@ -59,17 +61,20 @@ public class MongoStateReaderTest {
testDb = m.getDB("mydb");
final BasicDBObject object = new BasicDBObject();
- object.put("_id", "1023");
- object.put("_type", "org.xxx.Class");
+// object.put("_id", "1023");
+// object.put("_type", "org.xxx.Class");
+ object.put("_oid", OBJECT_TYPE + ":1023");
+ object.put("_id", "1023"); // the MongoDB internal identifier
+
object.put("name", "Fred Smith");
object.put("null name", "null");
object.put("null name 2", null);
object.put("number", "102");
object.put("null number", "null");
- final DBCollection instances = testDb.getCollection(SPEC_NAME);
+ final DBCollection instances = testDb.getCollection(OBJECT_TYPE);
instances.insert(object);
- reader = new MongoStateReader(testDb, SPEC_NAME, "1023");
+ reader = new MongoStateReader(testDb, ObjectSpecId.of(OBJECT_TYPE), "1023");
}
@Test
@@ -93,9 +98,19 @@ public class MongoStateReaderTest {
assertEquals(null, reader.readField("null name 2"));
}
+// @Test
+// public void readType() throws Exception {
+// assertEquals("org.xxx.Class", reader.readObjectType());
+// }
+//
+// @Test
+// public void readId() throws Exception {
+// assertEquals("1023", reader.readId());
+// }
+
@Test
- public void readType() throws Exception {
- assertEquals("org.xxx.Class", reader.readObjectType());
+ public void readOid() throws Exception {
+ assertEquals(OBJECT_TYPE + ":1023", reader.readOid());
}
@Test
@@ -113,8 +128,4 @@ public class MongoStateReaderTest {
assertEquals(0L, reader.readLongField("unknown"));
}
- @Test
- public void readId() throws Exception {
- assertEquals("1023", reader.readId());
- }
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriterTest.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/db/mongo/MongoStateWriterTest.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriterTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriterTest.java Mon May 14 22:44:57 2012
@@ -21,7 +21,6 @@ package org.apache.isis.runtimes.dflt.ob
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assume.assumeThat;
import com.mongodb.DB;
@@ -34,7 +33,8 @@ import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.db.mongo.MongoStateWriter;
+import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
public class MongoStateWriterTest {
@@ -56,7 +56,7 @@ public class MongoStateWriterTest {
return;
}
- writer = new MongoStateWriter(testDb, SPEC_NAME);
+ writer = new MongoStateWriter(testDb, ObjectSpecId.of(SPEC_NAME));
}
@Test
@@ -78,20 +78,24 @@ public class MongoStateWriterTest {
@Test
public void serialNumberNotStored() throws Exception {
- writer.writeId("D01");
+ //writer.writeId("D01");
+ writer.writeOid(RootOidDefault.deString(SPEC_NAME+":"+"D01"));
writer.flush();
final DBCollection instances = testDb.getCollection(SPEC_NAME);
assertEquals(1, instances.getCount());
final DBObject object = instances.findOne();
- assertNotNull(object.get("_id"));
+
+ assertEquals(SPEC_NAME+":"+"D01", object.get("_oid"));
assertEquals("D01", object.get("_id"));
- assertEquals(1, object.keySet().size());
+
+ assertEquals(2, object.keySet().size());
}
@Test
public void writeFields() throws Exception {
- writer.writeType(SPEC_NAME);
+ //writer.writeObjectType(SPEC_NAME);
+ writer.writeOid(RootOidDefault.deString(SPEC_NAME+":"+"D01"));
writer.writeField("number", 1023);
writer.writeField("string", "testing");
writer.flush();
@@ -99,15 +103,16 @@ public class MongoStateWriterTest {
final DBCollection instances = testDb.getCollection(SPEC_NAME);
assertEquals(1, instances.getCount());
final DBObject object = instances.findOne();
- assertEquals(SPEC_NAME, object.get("_type"));
+ assertEquals(SPEC_NAME+":"+"D01", object.get("_oid"));
assertEquals("1023", object.get("number"));
assertEquals("testing", object.get("string"));
}
@Test
public void writeFields2() throws Exception {
- writer.writeId("3");
- writer.writeType(SPEC_NAME);
+// writer.writeId("3");
+// writer.writeObjectType(SPEC_NAME);
+ writer.writeOid(RootOidDefault.deString(SPEC_NAME + ":" + "3"));
writer.flush();
writer.writeField("number", 1023);
@@ -117,7 +122,7 @@ public class MongoStateWriterTest {
final DBCollection instances = testDb.getCollection(SPEC_NAME);
assertEquals(1, instances.getCount());
final DBObject object = instances.findOne();
- assertEquals(SPEC_NAME, object.get("_type"));
+ assertEquals(SPEC_NAME + ":" + "3", object.get("_oid"));
assertEquals("1023", object.get("number"));
assertEquals("testing", object.get("string"));
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMappingAbstract.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/IdMappingAbstract.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMappingAbstract.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMappingAbstract.java Mon May 14 22:44:57 2012
@@ -23,6 +23,7 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
@@ -78,13 +79,13 @@ public class IdMappingAbstract {
return oid.getIdentifier();
}
- public Oid recreateOid(final Results rs, final ObjectSpecification specification) {
+ public TypedOid recreateOid(final Results rs, final ObjectSpecification specification) {
final Object object = rs.getObject(column);
if (object == null) {
return null;
}
final int id = ((Integer) object).intValue();
- return new RootOidDefault(specification.getObjectType(), ""+id, Oid.State.PERSISTENT);
+ return new RootOidDefault(specification.getSpecId(), ""+id, Oid.State.PERSISTENT);
}
protected ObjectAdapter getAdapter(final ObjectSpecification specification, final Oid oid) {
@@ -93,7 +94,7 @@ public class IdMappingAbstract {
if (adapter != null) {
return adapter;
} else {
- return IsisContext.getPersistenceSession().recreateAdapter(oid, specification);
+ return IsisContext.getPersistenceSession().recreateAdapter(specification, oid);
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/ObjectMapping.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/ObjectMapping.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/ObjectMapping.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/ObjectMapping.java Mon May 14 22:44:57 2012
@@ -22,7 +22,7 @@ package org.apache.isis.runtimes.dflt.ob
import java.util.Vector;
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.TypedOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.runtimes.dflt.runtime.persistence.query.PersistenceQueryFindByPattern;
@@ -38,7 +38,7 @@ public interface ObjectMapping {
Vector<ObjectAdapter> getInstances(DatabaseConnector connector, ObjectSpecification spec, PersistenceQueryFindByPattern query);
- ObjectAdapter getObject(DatabaseConnector connector, Oid oid, ObjectSpecification hint);
+ ObjectAdapter getObject(DatabaseConnector connector, TypedOid typedOid);
boolean hasInstances(DatabaseConnector connector, ObjectSpecification cls);
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlIdentifierGenerator.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/SqlIdentifierGenerator.java?rev=1338472&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlIdentifierGenerator.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlIdentifierGenerator.java Mon May 14 22:44:57 2012
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.runtimes.dflt.objectstores.sql;
+
+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.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
+import org.apache.isis.runtimes.dflt.runtime.transaction.ObjectPersistenceException;
+
+public class SqlIdentifierGenerator implements IdentifierGenerator {
+
+ private final DatabaseConnectorPool connectionPool;
+ private final IdNumbers ids = new IdNumbers();
+
+ //////////////////////////////////////////////////////////////////
+ // constructor
+ //////////////////////////////////////////////////////////////////
+
+ public SqlIdentifierGenerator(final DatabaseConnectorPool connectionPool) {
+ this.connectionPool = connectionPool;
+ }
+
+ ///////////////////////////////////////////////////////
+ // API
+ ///////////////////////////////////////////////////////
+
+ @Override
+ public String createAggregateLocalId(ObjectSpecId objectSpecId, final Object pojo, final ObjectAdapter parentAdapter) {
+ throw new SqlObjectStoreException("Aggregated objects are not supported in this store");
+ }
+
+ @Override
+ public String createTransientIdentifierFor(ObjectSpecId objectSpecId, final Object pojo) {
+ return ""+ids.nextTransientId();
+ }
+
+ @Override
+ public String createPersistentIdentifierFor(ObjectSpecId objectSpecId, Object pojo, RootOid transientRootOid) {
+ Assert.assertNotNull("No connection set up", connectionPool);
+ return "" + (int) ids.nextPersistentId(connectionPool);
+ }
+
+
+ ///////////////////////////////////////////////////////
+ // Debug
+ ///////////////////////////////////////////////////////
+
+ @Override
+ public void debugData(final DebugBuilder debug) {
+ debug.appendln(this.toString());
+ debug.indent();
+ ids.debugData(debug);
+ debug.unindent();
+ }
+
+ @Override
+ public String debugTitle() {
+ return "Sql Identifier Generator";
+ }
+}
+
+
+
+class IdNumbers {
+
+ private static final Logger LOG = Logger.getLogger(IdNumbers.class);
+
+ private static final String NUMBER_COLUMN = "number";
+ private static final String TABLE_NAME = "isis_admin_serial_id";
+ private static int BATCH_SIZE = 50;
+ private long transientNumber = -9999999;
+ private long lastId = 0;
+ private long newBatchAt = 0;
+
+ public synchronized long nextTransientId() {
+ return transientNumber++;
+ }
+
+ public synchronized long nextPersistentId(final DatabaseConnectorPool connectionPool) {
+ if (lastId > newBatchAt) {
+ throw new SqlObjectStoreException("ID exception, last id (" + lastId + ") past new batch boundary (" + newBatchAt + ")");
+ }
+ if (lastId == newBatchAt) {
+ prepareNewBatch(connectionPool);
+ }
+ lastId++;
+ return lastId;
+ }
+
+ private void prepareNewBatch(final DatabaseConnectorPool connectionPool) {
+ final DatabaseConnector db = connectionPool.acquire();
+ try {
+ final String tableName = Sql.tableIdentifier(TABLE_NAME);
+ final String numberColumn = Sql.identifier(NUMBER_COLUMN);
+ if (!db.hasTable(tableName)) {
+ lastId = 1;
+ newBatchAt = BATCH_SIZE;
+ db.update("create table " + tableName + " (" + numberColumn + " INTEGER)");
+ db.update("insert into " + tableName + " values (" + newBatchAt + ")");
+ LOG.debug("Initial ID batch created, from " + lastId + " to " + newBatchAt);
+ } else {
+ if (db.update("update " + tableName + " set " + numberColumn + " = " + numberColumn + " + " + BATCH_SIZE) != 1) {
+ throw new SqlObjectStoreException("failed to update serial id table; no rows updated");
+ }
+ final Results rs = db.select("select " + numberColumn + " from " + tableName);
+ rs.next();
+ newBatchAt = rs.getLong(NUMBER_COLUMN); // TODO here
+ lastId = newBatchAt - BATCH_SIZE;
+ LOG.debug("New ID batch created, from " + lastId + " to " + newBatchAt);
+ rs.close();
+ }
+ } catch (final ObjectPersistenceException e) {
+ throw e;
+ } finally {
+ connectionPool.release(db);
+ }
+ }
+
+ public void debugData(final DebugBuilder debug) {
+ debug.appendln("id", lastId);
+ debug.appendln("transient id", transientNumber);
+ }
+
+}
+
Propchange: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlIdentifierGenerator.java
------------------------------------------------------------------------------
svn:eol-style = native
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=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/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 Mon May 14 22:44:57 2012
@@ -35,7 +35,9 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLookup;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.CreateObjectCommand;
@@ -127,7 +129,7 @@ public final class SqlObjectStore implem
final RootOidDefault sqlOid = (RootOidDefault) rootOid;
connector.addToQueryValues(sqlOid.getIdentifier());
- connector.addToQueryValues(rootOid.getObjectType());
+ connector.addToQueryValues(rootOid.getObjectSpecId());
connector.insert(sql.toString());
connectionPool.release(connector);
@@ -411,11 +413,13 @@ public final class SqlObjectStore implem
return (ObjectAdapter[]) instances.toArray();
}
+
@Override
- public ObjectAdapter getObject(final Oid oid, final ObjectSpecification hint) {
+ public ObjectAdapter getObject(final TypedOid oid) {
final DatabaseConnector connection = connectionPool.acquire();
- final ObjectMapping mapper = objectMappingLookup.getMapping(hint, connection);
- final ObjectAdapter object = mapper.getObject(connection, oid, hint);
+ final ObjectSpecification objectSpec = getSpecificationLookup().lookupBySpecId(oid.getObjectSpecId());
+ final ObjectMapping mapper = objectMappingLookup.getMapping(objectSpec, connection);
+ final ObjectAdapter object = mapper.getObject(connection, oid);
connectionPool.release(connection);
return object;
}
@@ -433,14 +437,14 @@ public final class SqlObjectStore implem
sql.append(" where ");
sql.append(Defaults.getIdColumn());
sql.append(" = ?");
- connector.addToQueryValues(serviceSpec.getObjectType());
+ connector.addToQueryValues(serviceSpec.getSpecId());
final Results results = connector.select(sql.toString());
if (!results.next()) {
return null;
}
final int id = results.getInt(Defaults.getPkIdLabel());
- return RootOidDefault.create(serviceSpec.getObjectType(), ""+id);
+ return RootOidDefault.create(serviceSpec.getSpecId(), ""+id);
} finally {
connectionPool.release(connector);
@@ -477,6 +481,10 @@ public final class SqlObjectStore implem
connectionPool.release(connector);
}
+ ///////////////////////////////////////////////////////////
+ // Dependencies (injected)
+ ///////////////////////////////////////////////////////////
+
public void setConnectionPool(final DatabaseConnectorPool connectionPool) {
this.connectionPool = connectionPool;
}
@@ -485,9 +493,17 @@ public final class SqlObjectStore implem
this.objectMappingLookup = mapperLookup;
}
+
+ ///////////////////////////////////////////////////////////
+ // Dependencies (from context)
+ ///////////////////////////////////////////////////////////
protected ObjectAdapterLookup getAdapterManager() {
return IsisContext.getPersistenceSession().getAdapterManager();
}
+ protected SpecificationLookup getSpecificationLookup() {
+ return IsisContext.getSpecificationLoader();
+ }
+
}