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 [2/8] - in
/incubator/isis/trunk/framework/runtimes/dflt:
objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/
objectstores/dflt/src/main/java/org/apache/isis/runtimes/dflt/objectstores/dflt/internal/
ob...
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/ObjectReader.java Mon May 14 22:44:57 2012
@@ -27,6 +27,7 @@ import org.apache.isis.core.metamodel.ad
import org.apache.isis.core.metamodel.adapter.ResolveState;
import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.version.Version;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
@@ -39,21 +40,28 @@ import org.apache.isis.core.metamodel.sp
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSession;
class ObjectReader {
+
+ private final KeyCreatorDefault keyCreator = new KeyCreatorDefault();
- public ObjectAdapter load(final StateReader reader, final KeyCreator keyCreator, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters) {
- final String className = reader.readObjectType();
- final ObjectSpecification specification = getSpecificationLoader().loadSpecification(className);
- final String id = reader.readId();
- final RootOid oid = keyCreator.oid(specification, id);
+ public ObjectAdapter load(final StateReader reader, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters) {
+
+ // final String className = reader.readObjectType();
+ // final String id = reader.readId();
+
+ // final ObjectSpecification specification = getSpecificationLoader().loadSpecification(className);
+ // final RootOid rootOid = keyCreator.oid(specification, id);
- final ObjectAdapter object = getAdapter(oid);
+ final String oidStr = reader.readOid();
+ final RootOid rootOid = getOidMarshaller().unmarshal(oidStr, RootOid.class);
+
+ final ObjectAdapter object = getAdapter(rootOid);
if (object.getResolveState().isResolved()) {
Version version = null;
final String versionString = reader.readVersion();
@@ -72,15 +80,15 @@ class ObjectReader {
// TODO move lock to common method
// object.setOptimisticLock(version);
- loadState(reader, keyCreator, versionCreator, dataEncrypters, object);
+ loadState(reader, versionCreator, dataEncrypters, object);
return object;
}
- public void update(final StateReader reader, final KeyCreator keyCreator, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters, final ObjectAdapter object) {
- loadState(reader, keyCreator, versionCreator, dataEncrypters, object);
+ public void update(final StateReader reader, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters, final ObjectAdapter object) {
+ loadState(reader, versionCreator, dataEncrypters, object);
}
- private void loadState(final StateReader reader, final KeyCreator keyCreator, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters, final ObjectAdapter object) {
+ private void loadState(final StateReader reader, final VersionCreator versionCreator, final Map<String, DataEncryption> dataEncrypters, final ObjectAdapter object) {
final ResolveState resolveState = ResolveState.RESOLVING;
object.changeState(resolveState);
Version version = null;
@@ -91,12 +99,12 @@ class ObjectReader {
version = versionCreator.version(versionString, user, time);
}
final String encryptionType = reader.readEncrytionType();
- readFields(reader, object, keyCreator, dataEncrypters.get(encryptionType));
+ readFields(reader, object, dataEncrypters.get(encryptionType));
object.setVersion(version);
object.changeState(resolveState.getEndState());
}
- private void readFields(final StateReader reader, final ObjectAdapter object, final KeyCreator keyCreator, final DataEncryption dataEncrypter) {
+ private void readFields(final StateReader reader, final ObjectAdapter object, final DataEncryption dataEncrypter) {
final ObjectAssociationContainer specification = object.getSpecification();
final List<ObjectAssociation> associations = specification.getAssociations();
for (final ObjectAssociation association : associations) {
@@ -104,26 +112,29 @@ class ObjectReader {
continue;
}
if (association.isOneToManyAssociation()) {
- readCollection(reader, keyCreator, dataEncrypter, (OneToManyAssociation) association, object);
+ readCollection(reader, dataEncrypter, (OneToManyAssociation) association, object);
} else if (association.getSpecification().isValue()) {
readValue(reader, dataEncrypter, (OneToOneAssociation) association, object);
} else if (association.getSpecification().isParented()) {
- readAggregate(reader, keyCreator, dataEncrypter, (OneToOneAssociation) association, object);
+ readAggregate(reader, dataEncrypter, (OneToOneAssociation) association, object);
} else {
- readReference(reader, keyCreator, (OneToOneAssociation) association, object);
+ readReference(reader, (OneToOneAssociation) association, object);
}
}
}
- private void readAggregate(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToOneAssociation association, final ObjectAdapter parentAdapter) {
+ private void readAggregate(final StateReader reader, final DataEncryption dataEncrypter, final OneToOneAssociation association, final ObjectAdapter parentAdapter) {
final String id = association.getId();
final StateReader aggregateReader = reader.readAggregate(id);
final ObjectAdapter fieldObject;
if (aggregateReader != null) {
- final String localId = aggregateReader.readId();
- final AggregatedOid oid = new AggregatedOid(parentAdapter.getOid(), localId);
- fieldObject = restoreAggregatedObject(aggregateReader, oid, keyCreator, dataEncrypter);
+// final String objectType = aggregateReader.readObjectType();
+// final String localId = aggregateReader.readId();
+// final AggregatedOid aggregatedOid = new AggregatedOid(objectType, (TypedOid) parentAdapter.getOid(), localId);
+ final String oidStr = aggregateReader.readOid();
+ final AggregatedOid aggregatedOid = getOidMarshaller().unmarshal(oidStr, AggregatedOid.class);
+ fieldObject = restoreAggregatedObject(aggregateReader, aggregatedOid, dataEncrypter);
} else {
fieldObject = null;
}
@@ -131,14 +142,17 @@ class ObjectReader {
association.initAssociation(parentAdapter, fieldObject);
}
- private ObjectAdapter restoreAggregatedObject(final StateReader aggregateReader, final Oid oid, final KeyCreator keyCreator, final DataEncryption dataEncrypter) {
- final String objectType = aggregateReader.readObjectType();
- final ObjectSpecification specification = getSpecificationLoader().loadSpecification(objectType);
- final ObjectAdapter fieldObject = getAdapter(specification, oid);
+ private ObjectAdapter restoreAggregatedObject(final StateReader aggregateReader, final AggregatedOid aggregatedOid, final DataEncryption dataEncrypter) {
+
+// final String objectType = aggregateReader.readObjectType();
+// final ObjectSpecification specification = getSpecificationLoader().loadSpecification(objectType);
+ final ObjectSpecification specification = getSpecificationLoader().lookupBySpecId(aggregatedOid.getObjectSpecId());
+
+ final ObjectAdapter fieldObject = getAdapter(specification, aggregatedOid);
if (fieldObject.getResolveState().isGhost()) {
final ResolveState resolveState = ResolveState.RESOLVING;
fieldObject.changeState(resolveState);
- readFields(aggregateReader, fieldObject, keyCreator, dataEncrypter);
+ readFields(aggregateReader, fieldObject, dataEncrypter);
fieldObject.changeState(resolveState.getEndState());
}
return fieldObject;
@@ -158,7 +172,7 @@ class ObjectReader {
}
}
- private void readReference(final StateReader reader, final KeyCreator keyCreator, final OneToOneAssociation association, final ObjectAdapter object) {
+ private void readReference(final StateReader reader, final OneToOneAssociation association, final ObjectAdapter object) {
ObjectAdapter fieldObject;
final String ref = reader.readField(association.getId());
if (ref == null || ref.equals("null")) {
@@ -167,8 +181,8 @@ class ObjectReader {
if (ref.equals("")) {
throw new NoSqlStoreException("Invalid reference field (an empty string) in data for " + association.getName() + " in " + object);
}
- final RootOid oid = keyCreator.oidFromReference(ref);
- final ObjectSpecification specification = keyCreator.specificationFromReference(ref);
+ final RootOid oid = keyCreator.unmarshal(ref);
+ final ObjectSpecification specification = keyCreator.specificationFromOidStr(ref);
fieldObject = getAdapter(specification, oid);
}
try {
@@ -178,7 +192,7 @@ class ObjectReader {
}
}
- private void readCollection(final StateReader reader, final KeyCreator keyCreator, final DataEncryption dataEncrypter, final OneToManyAssociation association, final ObjectAdapter parentAdapter) {
+ private void readCollection(final StateReader reader, final DataEncryption dataEncrypter, final OneToManyAssociation association, final ObjectAdapter parentAdapter) {
final ObjectAdapter collectionAdapter = association.get(parentAdapter);
final CollectionFacet facet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
@@ -188,9 +202,15 @@ class ObjectReader {
final ObjectAdapter[] elementAdapters = new ObjectAdapter[readers.size()];
int i = 0;
for (final StateReader elementReader : readers) {
- final String localId = elementReader.readId();
- final AggregatedOid aggregatedOid = new AggregatedOid(parentAdapter.getOid(), localId);
- elementAdapters[i++] = restoreAggregatedObject(elementReader, aggregatedOid, keyCreator, dataEncrypter);
+
+// final String objectType = elementReader.readObjectType();
+// final String localId = elementReader.readId();
+// final AggregatedOid aggregatedOid = new AggregatedOid(ObjectSpecId.of(objectType), (TypedOid) parentAdapter.getOid(), localId);
+
+ final String oidStr = elementReader.readOid();
+ final AggregatedOid aggregatedOid = getOidMarshaller().unmarshal(oidStr, AggregatedOid.class);
+
+ elementAdapters[i++] = restoreAggregatedObject(elementReader, aggregatedOid, dataEncrypter);
}
facet.init(collectionAdapter, elementAdapters);
} else {
@@ -199,18 +219,18 @@ class ObjectReader {
if (referencesList == null || referencesList.length() == 0) {
facet.init(collectionAdapter, new ObjectAdapter[0]);
} else {
- final ObjectAdapter[] elements = restoreElements(referencesList, keyCreator);
+ final ObjectAdapter[] elements = restoreElements(referencesList);
facet.init(collectionAdapter, elements);
}
}
}
- private ObjectAdapter[] restoreElements(final String referencesList, final KeyCreator keyCreator) {
+ private ObjectAdapter[] restoreElements(final String referencesList) {
final String[] references = referencesList.split("\\|");
final ObjectAdapter[] elements = new ObjectAdapter[references.length];
for (int i = 0; i < references.length; i++) {
- final ObjectSpecification specification = keyCreator.specificationFromReference(references[i]);
- final RootOid oid = keyCreator.oidFromReference(references[i]);
+ final ObjectSpecification specification = keyCreator.specificationFromOidStr(references[i]);
+ final RootOid oid = keyCreator.unmarshal(references[i]);
elements[i] = getAdapter(specification, oid);
}
return elements;
@@ -222,7 +242,7 @@ class ObjectReader {
if (adapter != null) {
return adapter;
}
- return getPersistenceSession().recreateAdapter(oid, specification);
+ return getPersistenceSession().recreateAdapter(specification, oid);
}
protected ObjectAdapter getAdapter(final RootOid oid) {
@@ -242,5 +262,10 @@ class ObjectReader {
return IsisContext.getSpecificationLoader();
}
+ protected OidMarshaller getOidMarshaller() {
+ return new OidMarshaller();
+ }
+
+
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/WriteObjectCommand.java Mon May 14 22:44:57 2012
@@ -28,16 +28,18 @@ import org.apache.isis.core.commons.lang
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.adapter.version.Version;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
import org.apache.isis.core.metamodel.spec.DomainModelException;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommandContext;
@@ -45,34 +47,52 @@ import org.apache.isis.runtimes.dflt.run
class WriteObjectCommand implements PersistenceCommand {
- private final KeyCreator keyCreator;
- private final ObjectAdapter object;
+ public enum Mode {
+ UPDATE,
+ NON_UPDATE;
+
+ public static Mode modeFor(boolean isUpdate) {
+ return isUpdate?UPDATE:NON_UPDATE;
+ }
+
+ public boolean isUpdate() {
+ return this == UPDATE;
+ }
+ }
+
+ private final KeyCreatorDefault keyCreator = new KeyCreatorDefault();
+ private final ObjectAdapter adapter;
private final VersionCreator versionCreator;
private final DataEncryption dataEncrypter;
- private final boolean isUpdate;
+ private final Mode mode;
- WriteObjectCommand(final boolean isUpdate, final KeyCreator keyCreator, final VersionCreator versionCreator, final DataEncryption dataEncrypter, final ObjectAdapter object) {
- this.isUpdate = isUpdate;
- this.keyCreator = keyCreator;
+ WriteObjectCommand(final Mode mode, final VersionCreator versionCreator, final DataEncryption dataEncrypter, final ObjectAdapter adapter) {
+ this.mode = mode;
this.versionCreator = versionCreator;
this.dataEncrypter = dataEncrypter;
- this.object = object;
+ this.adapter = adapter;
}
@Override
public void execute(final PersistenceCommandContext context) {
final NoSqlCommandContext noSqlCommandContext = (NoSqlCommandContext) context;
- final String specName = object.getSpecification().getFullIdentifier();
- final StateWriter writer = noSqlCommandContext.createStateWriter(specName);
- final String key = keyCreator.key(object.getOid());
- writer.writeId(key);
- writeFields(writer, specName, object);
+ final ObjectSpecification objectSpec = adapter.getSpecification();
+ //final String specName = objectSpec.getFullIdentifier();
+ final StateWriter writer = noSqlCommandContext.createStateWriter(objectSpec.getSpecId());
+
+ //final String key = keyCreator.key(adapter.getOid());
+ //writer.writeId(key);
+ final TypedOid typedOid = (TypedOid) adapter.getOid();
+ writer.writeOid(typedOid);
+
+ writeFields(writer, adapter);
final String user = getAuthenticationSession().getUserName();
- final Version currentVersion = object.getVersion();
- final Version newVersion = isUpdate ? versionCreator.nextVersion(currentVersion) : versionCreator.newVersion(user);
- object.setVersion(newVersion);
+ final Version currentVersion = adapter.getVersion();
+
+ final Version newVersion = mode.isUpdate() ? versionCreator.nextVersion(currentVersion) : versionCreator.newVersion(user);
+ adapter.setVersion(newVersion);
if (newVersion != null) {
final String version = currentVersion == null ? null : versionCreator.versionString(currentVersion);
writer.writeVersion(version, versionCreator.versionString(newVersion));
@@ -81,16 +101,22 @@ class WriteObjectCommand implements Pers
writer.writeEncryptionType(dataEncrypter.getType());
}
- if (isUpdate) {
+ if (mode.isUpdate()) {
noSqlCommandContext.update(writer);
} else {
noSqlCommandContext.insert(writer);
}
}
- private void writeFields(final StateWriter writer, final String specName, final ObjectAdapter adapter) {
+ private void writeFields(final StateWriter writer, final ObjectAdapter adapter) {
+
final List<ObjectAssociation> associations = adapter.getSpecification().getAssociations();
- writer.writeType(specName);
+
+// final String specName = adapter.getSpecification().getFullIdentifier();
+// writer.writeObjectType(specName);
+
+ writer.writeOid((TypedOid) adapter.getOid());
+
for (final ObjectAssociation association : associations) {
if (association.isNotPersisted()) {
continue;
@@ -99,7 +125,7 @@ class WriteObjectCommand implements Pers
if (association.isOneToManyAssociation()) {
final OneToManyAssociation oneToManyAssociation = (OneToManyAssociation) association;
final ObjectAdapter collectionAdapter = fieldAdapter; // to explain
- writeCollection(writer, oneToManyAssociation, collectionAdapter, keyCreator);
+ writeCollection(writer, oneToManyAssociation, collectionAdapter);
} else {
final OneToOneAssociation oneToOneAssociation = (OneToOneAssociation) association;
final ObjectAdapter propertyAdapter = fieldAdapter; // to explain
@@ -132,13 +158,13 @@ class WriteObjectCommand implements Pers
private void writeReferenceProperty(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter referencedAdapter) {
if (otoa.getSpecification().isParented()) {
- writeReferencedAsAggregated(writer, otoa, referencedAdapter, keyCreator);
+ writeReferencedAsAggregated(writer, otoa, referencedAdapter);
} else {
- writeReference(writer, otoa, referencedAdapter, keyCreator);
+ writeReference(writer, otoa, referencedAdapter);
}
}
- private void writeReferencedAsAggregated(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter referencedAdapter, final KeyCreator keyCreator) {
+ private void writeReferencedAsAggregated(final StateWriter writer, final OneToOneAssociation otoa, final ObjectAdapter referencedAdapter) {
if (referencedAdapter == null) {
writer.writeField(otoa.getId(), null);
return;
@@ -151,22 +177,22 @@ class WriteObjectCommand implements Pers
final String associationId = otoa.getId();
final StateWriter aggregateWriter = writer.addAggregate(associationId);
- aggregateWriter.writeId(aggregatedOid.getLocalId());
+ //aggregateWriter.writeId(aggregatedOid.getLocalId());
+ aggregateWriter.writeOid(aggregatedOid);
- final String specName = referencedAdapter.getSpecification().getFullIdentifier();
- writeFields(aggregateWriter, specName, referencedAdapter);
+ writeFields(aggregateWriter, referencedAdapter);
}
- private void writeReference(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter referencedAdapter, final KeyCreator keyCreator) {
- final String key = keyCreator.reference(referencedAdapter);
+ private void writeReference(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter referencedAdapter) {
+ final String key = keyCreator.oidStrFor(referencedAdapter);
writer.writeField(association.getId(), key);
}
- private void writeCollection(final StateWriter writer, final OneToManyAssociation association, final ObjectAdapter collectionAdapter, final KeyCreator keyCreator) {
+ private void writeCollection(final StateWriter writer, final OneToManyAssociation association, final ObjectAdapter collectionAdapter) {
if (association.getSpecification().isParented()) {
writeCollectionOfAggregated(writer, association, collectionAdapter);
} else {
- writeCollectionOfReferences(writer, association, collectionAdapter, keyCreator);
+ writeCollectionOfReferences(writer, association, collectionAdapter);
}
}
@@ -176,14 +202,17 @@ class WriteObjectCommand implements Pers
for (final ObjectAdapter referencedAdapter : collectionFacet.iterable(collectionAdapter)) {
final AggregatedOid elementOid = (AggregatedOid) referencedAdapter.getOid();
final StateWriter elementWriter = writer.createElementWriter();
- elementWriter.writeId(elementOid.getLocalId());
- writeFields(elementWriter, referencedAdapter.getSpecification().getFullIdentifier(), referencedAdapter);
+
+ //elementWriter.writeId(elementOid.getLocalId());
+ elementWriter.writeOid(elementOid);
+
+ writeFields(elementWriter, referencedAdapter);
elementWriters.add(elementWriter);
}
writer.writeCollection(association.getId(), elementWriters);
}
- private void writeCollectionOfReferences(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter collectionAdapter, final KeyCreator keyCreator) {
+ private void writeCollectionOfReferences(final StateWriter writer, final ObjectAssociation association, final ObjectAdapter collectionAdapter) {
final CollectionFacet collectionFacet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
final StringBuilder buf = new StringBuilder();
@@ -191,7 +220,7 @@ class WriteObjectCommand implements Pers
if (elementAdapter.isParented()) {
throw new DomainModelException("Can't store an aggregated object within a collection that is not expected aggregates: " + elementAdapter + " (" + collectionAdapter + ")");
}
- buf.append(keyCreator.reference(elementAdapter)).append("|");
+ buf.append(keyCreator.oidStrFor(elementAdapter)).append("|");
}
if (buf.length() > 0) {
writer.writeField(association.getId(), buf.toString());
@@ -201,14 +230,14 @@ class WriteObjectCommand implements Pers
@Override
public ObjectAdapter onObject() {
- return object;
+ return adapter;
}
@Override
public String toString() {
final ToString toString = new ToString(this);
- toString.append("spec", object.getSpecification().getFullIdentifier());
- toString.append("oid", object.getOid());
+ toString.append("spec", adapter.getSpecification().getFullIdentifier());
+ toString.append("oid", adapter.getOid());
return toString.toString();
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlDataDatabase.java Mon May 14 22:44:57 2012
@@ -22,6 +22,7 @@ package org.apache.isis.runtimes.dflt.ob
import java.util.Iterator;
import java.util.List;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
public interface NoSqlDataDatabase {
@@ -31,14 +32,14 @@ public interface NoSqlDataDatabase {
boolean containsData();
- void addService(String name, String key);
- String getService(String name);
+ void addService(ObjectSpecId objectSpecId, String key);
+ String getService(ObjectSpecId objectSpecId);
- boolean hasInstances(String specificationName);
- StateReader getInstance(String key, String specificationName);
- Iterator<StateReader> instancesOf(String specificationName);
+ boolean hasInstances(ObjectSpecId objectSpecId);
+ StateReader getInstance(String key, ObjectSpecId objectSpecId);
+ Iterator<StateReader> instancesOf(ObjectSpecId objectSpecId);
- long nextSerialNumberBatch(String string, int batchSize);
+ long nextSerialNumberBatch(ObjectSpecId objectSpecId, int batchSize);
void write(List<PersistenceCommand> commands);
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/NoSqlPersistorMechanismInstaller.java Mon May 14 22:44:57 2012
@@ -29,12 +29,10 @@ import org.apache.isis.core.commons.conf
import org.apache.isis.core.commons.exceptions.IsisException;
import org.apache.isis.core.commons.factory.InstanceUtil;
import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlIdentifierGenerator;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlObjectStore;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlOidGenerator;
import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.DataEncryption;
import org.apache.isis.runtimes.dflt.objectstores.nosql.encryption.none.DataEncryptionNone;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreator;
import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreatorDefault;
import org.apache.isis.runtimes.dflt.runtime.installerregistry.installerapi.ObjectStorePersistenceMechanismInstallerAbstract;
@@ -42,6 +40,7 @@ import org.apache.isis.runtimes.dflt.run
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.ObjectStore;
import org.apache.isis.runtimes.dflt.runtime.system.DeploymentType;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.IdentifierGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.OidGenerator;
import org.apache.isis.runtimes.dflt.runtime.system.persistence.PersistenceSessionFactory;
@@ -63,8 +62,8 @@ public abstract class NoSqlPersistorMech
}
@Override
- protected OidGenerator createOidGenerator(final IsisConfiguration configuration) {
- return getObjectStore(configuration).getOidGenerator();
+ protected IdentifierGenerator createIdentifierGenerator(final IsisConfiguration configuration) {
+ return getObjectStore(configuration).getIdentifierGenerator();
}
@Override
@@ -75,10 +74,10 @@ public abstract class NoSqlPersistorMech
private NoSqlObjectStore getObjectStore(final IsisConfiguration configuration) {
if (objectStore == null) {
- final KeyCreator keyCreator = createKeyCreator();
+ //final KeyCreatorDefault keyCreator = createKeyCreator();
final VersionCreator versionCreator = createVersionCreator();
final NoSqlDataDatabase db = createNoSqlDatabase(configuration);
- final NoSqlOidGenerator oidGenerator = createOidGenerator(db);
+ final OidGenerator oidGenerator = createOidGenerator(db);
final Map<String, DataEncryption> availableDataEncryption = new HashMap<String, DataEncryption>();
try {
@@ -101,7 +100,7 @@ public abstract class NoSqlPersistorMech
availableDataEncryption.put(encryption.getType(), encryption);
writeWithEncryption = encryption;
}
- objectStore = new NoSqlObjectStore(db, oidGenerator, keyCreator, versionCreator, writeWithEncryption, availableDataEncryption);
+ objectStore = new NoSqlObjectStore(db, oidGenerator, versionCreator, writeWithEncryption, availableDataEncryption);
} catch (final IllegalArgumentException e) {
throw new IsisException(e);
} catch (final SecurityException e) {
@@ -111,15 +110,15 @@ public abstract class NoSqlPersistorMech
return objectStore;
}
- protected NoSqlOidGenerator createOidGenerator(final NoSqlDataDatabase db) {
- return new NoSqlOidGenerator(db);
+ protected OidGenerator createOidGenerator(final NoSqlDataDatabase database) {
+ return new OidGenerator(new NoSqlIdentifierGenerator(database));
}
protected abstract NoSqlDataDatabase createNoSqlDatabase(IsisConfiguration configuration);
- protected KeyCreator createKeyCreator() {
- return new KeyCreatorDefault();
- }
+// protected KeyCreatorDefault createKeyCreator() {
+// return new KeyCreatorDefault();
+// }
private VersionCreator createVersionCreator() {
return new VersionCreatorDefault();
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateReader.java Mon May 14 22:44:57 2012
@@ -49,9 +49,10 @@ public interface StateReader {
String readEncrytionType();
- String readObjectType();
-
- String readId();
+// String readObjectType();
+// String readId();
+
+ String readOid();
String readVersion();
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/StateWriter.java Mon May 14 22:44:57 2012
@@ -21,13 +21,16 @@ package org.apache.isis.runtimes.dflt.ob
import java.util.List;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+
public interface StateWriter {
StateWriter addAggregate(String id);
- void writeId(String oid);
-
- void writeType(String type);
+// void writeObjectType(String type);
+// void writeId(String oid);
+
+ void writeOid(TypedOid typedOid);
void writeEncryptionType(String type);
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileClientCommandContext.java Mon May 14 22:44:57 2012
@@ -21,6 +21,7 @@ package org.apache.isis.runtimes.dflt.ob
import java.util.zip.CRC32;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
@@ -41,13 +42,13 @@ class FileClientCommandContext implement
}
@Override
- public StateWriter createStateWriter(final String specificationName) {
+ public StateWriter createStateWriter(final ObjectSpecId specificationName) {
return new JsonStateWriter();
}
@Override
- public void delete(final String specificationName, final String key, final String version) {
- connection.request('D', specificationName + " " + key + " " + version + " null");
+ public void delete(final ObjectSpecId objectSpecId, final String key, final String version) {
+ connection.request('D', objectSpecId + " " + key + " " + version + " null");
connection.endRequestSection();
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/FileServerDb.java Mon May 14 22:44:57 2012
@@ -29,6 +29,7 @@ import java.util.zip.CRC32;
import org.apache.log4j.Logger;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
@@ -79,11 +80,11 @@ public class FileServerDb implements NoS
}
@Override
- public StateReader getInstance(final String key, final String specificationName) {
+ public StateReader getInstance(final String key, final ObjectSpecId objectSpecId) {
final ClientConnection connection = getConnection();
String data;
try {
- final String request = specificationName + " " + key;
+ final String request = objectSpecId + " " + key;
connection.request('R', request);
connection.validateRequest();
data = connection.getResponseData();
@@ -99,12 +100,12 @@ public class FileServerDb implements NoS
}
@Override
- public Iterator<StateReader> instancesOf(final String specificationName) {
+ public Iterator<StateReader> instancesOf(final ObjectSpecId objectSpecId) {
final ClientConnection connection = getConnection();
List<StateReader> instances;
try {
instances = new ArrayList<StateReader>();
- connection.request('L', specificationName + " 0");
+ connection.request('L', objectSpecId + " 0");
connection.validateRequest();
String data;
while ((data = connection.getResponseData()).length() > 0) {
@@ -188,7 +189,7 @@ public class FileServerDb implements NoS
}
@Override
- public long nextSerialNumberBatch(final String name, final int batchSize) {
+ public long nextSerialNumberBatch(final ObjectSpecId name, final int batchSize) {
final ClientConnection connection = getConnection();
long serialNumber;
try {
@@ -205,10 +206,10 @@ public class FileServerDb implements NoS
}
@Override
- public void addService(final String name, final String key) {
+ public void addService(final ObjectSpecId objectSpecId, final String key) {
final ClientConnection connection = getConnection();
try {
- connection.request('T', name + " " + key);
+ connection.request('T', objectSpecId.asString() + " " + key);
connection.validateRequest();
} catch (final RuntimeException e) {
LOG.error("aborting addService", e);
@@ -219,11 +220,11 @@ public class FileServerDb implements NoS
}
@Override
- public String getService(final String name) {
+ public String getService(final ObjectSpecId objectSpecId) {
final ClientConnection connection = getConnection();
String response;
try {
- connection.request('S', name);
+ connection.request('S', objectSpecId.asString());
connection.validateRequest();
response = connection.getResponse();
} catch (final RuntimeException e) {
@@ -236,11 +237,11 @@ public class FileServerDb implements NoS
}
@Override
- public boolean hasInstances(final String specificationName) {
+ public boolean hasInstances(final ObjectSpecId objectSpecId) {
final ClientConnection connection = getConnection();
boolean hasInstances;
try {
- connection.request('I', specificationName);
+ connection.request('I', objectSpecId.asString());
connection.validateRequest();
hasInstances = connection.getResponseAsBoolean();
} catch (final RuntimeException e) {
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateReader.java Mon May 14 22:44:57 2012
@@ -30,8 +30,9 @@ import org.apache.isis.runtimes.dflt.obj
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
public class JsonStateReader implements StateReader {
- // private static final Logger LOG =
- // Logger.getLogger(FileStateReader.class);
+
+ // private static final Logger LOG = Logger.getLogger(FileStateReader.class);
+
private JSONObject instance;
public JsonStateReader(final String data) {
@@ -85,19 +86,24 @@ public class JsonStateReader implements
}
}
- @Override
- public String readObjectType() {
- return readRequiredField("_type");
- }
-
- @Override
- public String readId() {
- return readRequiredField("_id");
- }
+// @Override
+// public String readObjectType() {
+// return readRequiredField("_type");
+// }
+//
+// @Override
+// public String readId() {
+// return readRequiredField("_id");
+// }
+
+ @Override
+ public String readOid() {
+ return readRequiredField(PropertyNames.OID);
+ }
@Override
public String readVersion() {
- return readRequiredField("_version");
+ return readRequiredField(PropertyNames.VERSION);
}
@Override
@@ -117,12 +123,12 @@ public class JsonStateReader implements
@Override
public String readUser() {
- return readRequiredField("_user");
+ return readRequiredField(PropertyNames.USER);
}
@Override
public String readTime() {
- return readRequiredField("_time");
+ return readRequiredField(PropertyNames.TIME);
}
private String readRequiredField(final String name) {
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/JsonStateWriter.java Mon May 14 22:44:57 2012
@@ -26,6 +26,7 @@ import com.google.common.collect.Lists;
import org.json.JSONException;
import org.json.JSONObject;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
@@ -33,8 +34,8 @@ public class JsonStateWriter implements
private final JSONObject dbObject = new JSONObject();
- private String type;
- private String oid;
+ private TypedOid oid;
+
private String currentVersion;
private String newVersion;
@@ -49,38 +50,45 @@ public class JsonStateWriter implements
return jsonStateWriter;
}
- @Override
- public void writeType(final String type) {
- this.type = type;
- writeField("_type", type);
- }
-
- @Override
- public void writeId(final String oid) {
- this.oid = oid;
- writeField("_id", oid);
- }
+// @Override
+// public void writeObjectType(final String type) {
+// this.type = type;
+// writeField("_type", type);
+// }
+//
+// @Override
+// public void writeId(final String oid) {
+// this.oid = oid;
+// writeField("_id", oid);
+// }
+
+ @Override
+ public void writeOid(final TypedOid typedOid) {
+ this.oid = typedOid;
+ writeField(PropertyNames.OID, typedOid.enString());
+ }
+
@Override
public void writeEncryptionType(final String type) {
- writeField("_encrypt", type);
+ writeField(PropertyNames.ENCRYPT, type);
}
@Override
public void writeVersion(final String currentVersion, final String newVersion) {
this.currentVersion = currentVersion;
this.newVersion = newVersion;
- writeField("_version", newVersion);
+ writeField(PropertyNames.VERSION, newVersion);
}
@Override
public void writeTime(final String time) {
- writeField("_time", time);
+ writeField(PropertyNames.TIME, time);
}
@Override
public void writeUser(final String user) {
- writeField("_user", user);
+ writeField(PropertyNames.USER, user);
}
@Override
@@ -102,7 +110,7 @@ public class JsonStateWriter implements
}
public String getRequest() {
- return type + " " + oid + " " + currentVersion + " " + newVersion;
+ return oid.enString() + " " + currentVersion + " " + newVersion;
}
public String getData() {
Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java?rev=1338472&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java Mon May 14 22:44:57 2012
@@ -0,0 +1,33 @@
+/*
+ * 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.db.file;
+
+interface PropertyNames {
+ static final String ENCRYPT = "_encrypt";
+
+// static final String TYPE = "_type";
+// static final String ID = "_id";
+
+ static final String OID = "_oid";
+ static final String VERSION = "_version";
+ static final String TIME = "_time";
+ static final String USER = "_user";
+}
+
Propchange: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/PropertyNames.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/file/server/FileServer.java Mon May 14 22:44:57 2012
@@ -60,6 +60,7 @@ import org.apache.commons.configuration.
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
+import org.apache.isis.core.commons.lang.CastUtils;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
public class FileServer {
@@ -89,12 +90,13 @@ public class FileServer {
final String mode = cmd.getOptionValue("m");
+ final List<String> argList = CastUtils.cast(cmd.getArgList());
if ("recovery".equals(mode)) {
final FileServer fileServer = new FileServer();
- fileServer.startRecovery(cmd.getArgList());
+ fileServer.startRecovery(argList);
} else if ("archive".equals(mode)) {
final FileServer fileServer = new FileServer();
- fileServer.startArchive(cmd.getArgList());
+ fileServer.startArchive(argList);
} else if ("secondary".equals(mode)) {
final FileServer fileServer = new FileServer();
fileServer.startSecondary();
@@ -433,7 +435,7 @@ public class FileServer {
}
}
- private void startRecovery(final List list) {
+ private void startRecovery(final List<String> list) {
LOG.info("starting recovery");
final LogRange logFileRange = Util.logFileRange();
if (logFileRange.noLogFile()) {
@@ -448,9 +450,9 @@ public class FileServer {
final int size = list.size();
if (size > 0) {
- startId = Long.valueOf((String) list.get(0));
+ startId = Long.valueOf(list.get(0));
if (size > 1) {
- endId = Long.valueOf((String) list.get(1));
+ endId = Long.valueOf(list.get(1));
}
}
if (startId < logFileRange.getFirst() || startId > lastId || endId > lastId) {
@@ -471,7 +473,7 @@ public class FileServer {
LOG.info("recovery complete");
}
- private void startArchive(final List list) {
+ private void startArchive(final List<String> list) {
LOG.info("starting archiving");
final LogRange logFileRange = Util.logFileRange();
if (logFileRange.noLogFile()) {
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoClientCommandContext.java Mon May 14 22:44:57 2012
@@ -21,6 +21,7 @@ package org.apache.isis.runtimes.dflt.ob
import com.mongodb.DB;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
@@ -40,12 +41,12 @@ public class MongoClientCommandContext i
public void end() {}
@Override
- public StateWriter createStateWriter(String specName) {
- return new MongoStateWriter(db, specName);
+ public StateWriter createStateWriter(ObjectSpecId objectSpecId) {
+ return new MongoStateWriter(db, objectSpecId);
}
@Override
- public void delete(String specificationName, String key, String version) {
+ public void delete(ObjectSpecId objectSpecId, String key, String version) {
// TODO
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoDb.java Mon May 14 22:44:57 2012
@@ -35,12 +35,13 @@ import com.mongodb.ObjectId;
import org.apache.log4j.Logger;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlCommandContext;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
+import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.runtime.persistence.objectstore.transaction.PersistenceCommand;
public class MongoDb implements NoSqlDataDatabase {
@@ -54,19 +55,19 @@ public class MongoDb implements NoSqlDat
private final String host;
private final int port;
private final String dbName;
- private final KeyCreator keyCreator;
+ private final KeyCreatorDefault keyCreator;
private Mongo mongo;
private DB db;
- public MongoDb(final String host, final int port, final String name, final KeyCreator keyCreator) {
+ public MongoDb(final String host, final int port, final String name, final KeyCreatorDefault keyCreator) {
this.host = host;
this.port = port == 0 ? DEFAULT_PORT : port;
this.dbName = name;
this.keyCreator = keyCreator;
}
- public KeyCreator getKeyCreator() {
+ public KeyCreatorDefault getKeyCreator() {
return keyCreator;
}
@@ -109,7 +110,7 @@ public class MongoDb implements NoSqlDat
//////////////////////////////////////////////////
@Override
- public long nextSerialNumberBatch(final String name, final int batchSize) {
+ public long nextSerialNumberBatch(final ObjectSpecId name, final int batchSize) {
long next = readSerialNumber();
writeSerialNumber(next + batchSize);
return next + 1;
@@ -143,16 +144,16 @@ public class MongoDb implements NoSqlDat
//////////////////////////////////////////////////
@Override
- public boolean hasInstances(final String specificationName) {
- final DBCollection instances = db.getCollection(specificationName);
+ public boolean hasInstances(final ObjectSpecId objectSpecId) {
+ final DBCollection instances = db.getCollection(objectSpecId.asString());
return instances.getCount() > 0;
}
@Override
- public Iterator<StateReader> instancesOf(final String specificationName) {
- final DBCollection instances = db.getCollection(specificationName);
+ public Iterator<StateReader> instancesOf(final ObjectSpecId objectSpecId) {
+ final DBCollection instances = db.getCollection(objectSpecId.asString());
final DBCursor cursor = instances.find();
- LOG.info("searching for instances of: " + specificationName);
+ LOG.info("searching for instances of: " + objectSpecId);
return new Iterator<StateReader>() {
@Override
public boolean hasNext() {
@@ -173,16 +174,16 @@ public class MongoDb implements NoSqlDat
}
@Override
- public StateReader getInstance(final String key, final String specName) {
- return new MongoStateReader(db, specName, key);
+ public StateReader getInstance(final String key, final ObjectSpecId objectSpecId) {
+ return new MongoStateReader(db, objectSpecId, key);
}
//////////////////////////////////////////////////
// write, delete
//////////////////////////////////////////////////
- public StateWriter createStateWriter(final String specName) {
- return new MongoStateWriter(db, specName);
+ public StateWriter createStateWriter(final ObjectSpecId objectSpecId) {
+ return new MongoStateWriter(db, objectSpecId);
}
@@ -194,8 +195,8 @@ public class MongoDb implements NoSqlDat
}
}
- public void delete(final String specificationName, final String key) {
- final DBCollection instances = db.getCollection(specificationName);
+ public void delete(final ObjectSpecId objectSpecId, final String key) {
+ final DBCollection instances = db.getCollection(objectSpecId.asString());
final ObjectId id = new ObjectId(key);
final DBObject object = instances.findOne(id);
instances.remove(object);
@@ -208,21 +209,21 @@ public class MongoDb implements NoSqlDat
//////////////////////////////////////////////////
@Override
- public void addService(final String name, final String key) {
+ public void addService(final ObjectSpecId objectSpecId, final String key) {
final DBCollection services = db.getCollection("services");
- services.insert(new BasicDBObject().append("name", name).append("key", key));
- LOG.info("service added " + name + ":" + key);
+ services.insert(new BasicDBObject().append("name", objectSpecId.asString()).append("key", key));
+ LOG.info("service added " + objectSpecId + ":" + key);
}
@Override
- public String getService(final String name) {
+ public String getService(final ObjectSpecId objectSpecId) {
final DBCollection services = db.getCollection("services");
- final DBObject object = services.findOne(new BasicDBObject().append("name", name));
+ final DBObject object = services.findOne(new BasicDBObject().append("name", objectSpecId.asString()));
if (object == null) {
return null;
} else {
final String id = (String) object.get("key");
- LOG.info("service found " + name + ":" + id);
+ LOG.info("service found " + objectSpecId + ":" + id);
return id;
}
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/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/db/mongo/MongoPersistorMechanismInstaller.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoPersistorMechanismInstaller.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoPersistorMechanismInstaller.java Mon May 14 22:44:57 2012
@@ -23,7 +23,6 @@ import org.apache.isis.core.commons.conf
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlDataDatabase;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.NoSqlPersistorMechanismInstaller;
-import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreator;
import org.apache.isis.runtimes.dflt.objectstores.nosql.keys.KeyCreatorDefault;
public class MongoPersistorMechanismInstaller extends NoSqlPersistorMechanismInstaller {
@@ -43,7 +42,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 KeyCreatorDefault();
+ final KeyCreatorDefault keyCreator = new KeyCreatorDefault();
db = new MongoDb(host, port, name, keyCreator);
return db;
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateReader.java Mon May 14 22:44:57 2012
@@ -28,25 +28,31 @@ import com.mongodb.DBObject;
import org.apache.log4j.Logger;
import org.apache.isis.core.commons.exceptions.UnexpectedCallException;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateReader;
import org.apache.isis.runtimes.dflt.runtime.persistence.ObjectNotFoundException;
-public class MongoStateReader implements StateReader, PropertyNames {
- private static final Logger LOG = Logger.getLogger(MongoStateReader.class);
+public class MongoStateReader implements StateReader {
+
+ private static final Logger LOG = Logger.getLogger(MongoStateReader.class);
private final DBObject instance;
- public MongoStateReader(final DB db, final String specName, final String key) {
- final DBCollection instances = db.getCollection(specName);
- instance = instances.findOne(key);
+ public MongoStateReader(final DB db, final ObjectSpecId objectSpecId, final String mongoId) {
+ final DBCollection instances = db.getCollection(objectSpecId.asString());
+ instance = instances.findOne(mongoId);
if (instance == null) {
- throw new ObjectNotFoundException(key);
+ throw new ObjectNotFoundException(mongoId);
+ }
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("loading " + instance);
}
- LOG.debug("loading " + instance);
}
public MongoStateReader(final DBObject instance) {
this.instance = instance;
- LOG.debug("loading " + instance);
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("loading " + instance);
+ }
}
@Override
@@ -54,9 +60,8 @@ public class MongoStateReader implements
final Object value = instance.get(id);
if (value == null || value.equals("null")) {
return 0;
- } else {
- return Long.valueOf((String) value);
- }
+ }
+ return Long.valueOf((String) value);
}
@Override
@@ -71,32 +76,33 @@ public class MongoStateReader implements
@Override
public String readEncrytionType() {
- return (String) instance.get(ENCRYPT);
+ return (String) instance.get(PropertyNames.ENCRYPT);
}
- @Override
- public String readObjectType() {
- return (String) instance.get(TYPE);
- }
+// @Override
+// public String readObjectType() {
+// return (String) instance.get(TYPE);
+// }
+//
@Override
- public String readId() {
- return readField(ID);
+ public String readOid() {
+ return readField(PropertyNames.OID);
}
@Override
public String readVersion() {
- return readField(VERSION);
+ return readField(PropertyNames.VERSION);
}
@Override
public String readUser() {
- return readField(USER);
+ return readField(PropertyNames.USER);
}
@Override
public String readTime() {
- return readField(TIME);
+ return readField(PropertyNames.TIME);
}
@Override
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/MongoStateWriter.java Mon May 14 22:44:57 2012
@@ -28,31 +28,45 @@ import com.mongodb.DBCollection;
import org.apache.log4j.Logger;
import org.apache.isis.core.commons.exceptions.UnexpectedCallException;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.runtimes.dflt.objectstores.nosql.db.StateWriter;
-public class MongoStateWriter implements StateWriter, PropertyNames {
+public class MongoStateWriter implements StateWriter {
+
private static final Logger LOG = Logger.getLogger(MongoStateWriter.class);
private final BasicDBObject dbObject;
private final DBCollection instances;
- public MongoStateWriter(final DB db, final String specName) {
+ public MongoStateWriter(final DB db, final ObjectSpecId objectSpecId) {
dbObject = new BasicDBObject();
- instances = db.getCollection(specName);
+ instances = db.getCollection(objectSpecId.asString());
}
public void flush() {
instances.save(dbObject);
- LOG.debug("saved " + dbObject);
- }
-
- @Override
- public void writeId(final String oid) {
- writeField(ID, oid);
- }
-
- @Override
- public void writeType(final String type) {
- writeField(TYPE, type);
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("saved " + dbObject);
+ }
+ }
+
+// public void writeId(final String oid) {
+// writeField(ID, oid);
+// }
+//
+// @Override
+// public void writeObjectType(final String type) {
+// writeField(TYPE, type);
+// }
+
+ @Override
+ public void writeOid(final TypedOid typedOid) {
+ writeField(PropertyNames.OID, typedOid.enString());
+ if(typedOid instanceof RootOid) {
+ RootOid rootOid = (RootOid) typedOid;
+ writeField(PropertyNames.MONGO_INTERNAL_ID, rootOid.getIdentifier());
+ }
}
@Override
@@ -67,22 +81,22 @@ public class MongoStateWriter implements
@Override
public void writeEncryptionType(final String type) {
- writeField(ENCRYPT, type);
+ writeField(PropertyNames.ENCRYPT, type);
}
@Override
public void writeVersion(final String currentVersion, final String newVersion) {
- writeField(VERSION, newVersion);
+ writeField(PropertyNames.VERSION, newVersion);
}
@Override
public void writeTime(final String time) {
- writeField(TIME, time);
+ writeField(PropertyNames.TIME, time);
}
@Override
public void writeUser(final String user) {
- writeField(USER, user);
+ writeField(PropertyNames.USER, user);
}
@Override
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/db/mongo/PropertyNames.java Mon May 14 22:44:57 2012
@@ -19,13 +19,19 @@
package org.apache.isis.runtimes.dflt.objectstores.nosql.db.mongo;
-interface PropertyNames {
+public final class PropertyNames {
+
+ private PropertyNames(){}
+
static final String ENCRYPT = "_encrypt";
- static final String TYPE = "_type";
- static final String ID = "_id";
+
+// static final String TYPE = "_type";
+// static final String ID = "_id";
+
+ static final String MONGO_INTERNAL_ID = "_id";
+ static final String OID = "_oid";
static final String VERSION = "_version";
static final String TIME = "_time";
static final String USER = "_user";
-
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/keys/KeyCreatorDefault.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/keys/KeyCreatorDefault.java?rev=1338472&r1=1338471&r2=1338472&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/keys/KeyCreatorDefault.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/main/java/org/apache/isis/runtimes/dflt/objectstores/nosql/keys/KeyCreatorDefault.java Mon May 14 22:44:57 2012
@@ -21,63 +21,73 @@ package org.apache.isis.runtimes.dflt.ob
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.runtimes.dflt.objectstores.nosql.NoSqlStoreException;
import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-public class KeyCreatorDefault implements KeyCreator {
+public class KeyCreatorDefault {
- public KeyCreatorDefault() {
- }
-
- @Override
- public String key(final Oid oid) {
+ /**
+ * returns {@link RootOid#getIdentifier()} (oid must be {@link RootOid}, and must be persistent).
+ */
+ public String getIdentifierForPersistentRoot(final Oid oid) {
if (!(oid instanceof RootOid)) {
throw new NoSqlStoreException("Oid is not a RootOid: " + oid);
}
- RootOid rootOid = (RootOidDefault) oid;
+ RootOid rootOid = (RootOid) oid;
if (rootOid.isTransient()) {
throw new NoSqlStoreException("Oid is not for a persistent object: " + oid);
}
return rootOid.getIdentifier();
}
- @Override
- public String reference(final ObjectAdapter adapter) {
+ /**
+ * Equivalent to the {@link Oid#enString()} for the adapter's Oid.
+ */
+ public String oidStrFor(final ObjectAdapter adapter) {
if(adapter == null) {
return null;
}
try {
- return adapter.getSpecification().getFullIdentifier() + "@" + key(adapter.getOid());
+ //return adapter.getSpecification().getFullIdentifier() + "@" + key(adapter.getOid());
+ return adapter.getOid().enString();
} catch (final NoSqlStoreException e) {
throw new NoSqlStoreException("Failed to create refence for " + adapter, e);
}
}
- @Override
- public RootOid oid(ObjectSpecification objectSpecification, final String id) {
- final String objectType = objectSpecification.getObjectType();
- return RootOidDefault.create(objectType, id);
- }
-
- @Override
- public RootOid oidFromReference(final String ref) {
- final ObjectSpecification objectSpecification = specificationFromReference(ref);
- final String id = ref.split("@")[1];
- return oid(objectSpecification, id);
- }
-
- @Override
- public ObjectSpecification specificationFromReference(final String ref) {
- final String name = ref.split("@")[0];
- return getSpecificationLoader().loadSpecification(name);
+ public RootOid createRootOid(ObjectSpecification objectSpecification, final String identifier) {
+ final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
+ return RootOidDefault.create(objectSpecId, identifier);
+ }
+
+ public RootOid unmarshal(final String oidStr) {
+// final ObjectSpecification objectSpecification = specificationFromReference(ref);
+// final String id = ref.split("@")[1];
+// return oid(objectSpecification, id);
+ return getOidMarshaller().unmarshal(oidStr, RootOid.class);
+ }
+
+ public ObjectSpecification specificationFromOidStr(final String oidStr) {
+// final String name = ref.split("@")[0];
+// return getSpecificationLoader().loadSpecification(name);
+ final TypedOid oid = getOidMarshaller().unmarshal(oidStr, TypedOid.class);
+ return getSpecificationLoader().lookupBySpecId(oid.getObjectSpecId());
}
protected SpecificationLoader getSpecificationLoader() {
return IsisContext.getSpecificationLoader();
}
+ protected OidMarshaller getOidMarshaller() {
+ return new OidMarshaller();
+ }
+
+
}
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=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/DestroyObjectCommandImplementationTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/nosql/src/test/java/org/apache/isis/runtimes/dflt/objectstores/nosql/DestroyObjectCommandImplementationTest.java Mon May 14 22:44:57 2012
@@ -26,12 +26,13 @@ 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.adapter.version.SerialNumberVersion;
+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.keys.KeyCreatorDefault;
import org.apache.isis.runtimes.dflt.objectstores.nosql.versions.VersionCreatorDefault;
public class DestroyObjectCommandImplementationTest {
@@ -45,33 +46,40 @@ public class DestroyObjectCommandImpleme
private ObjectSpecification specification;
@Mock
private ObjectAdapter adapter;
- @Mock
- private RootOidDefault oid;
+
@Mock
private VersionCreatorDefault versionCreator;
@Mock
- private KeyCreatorDefault keyCreator;
- @Mock
private SerialNumberVersion version;
+ //private KeyCreatorDefault keyCreator;
+
+ private final ObjectSpecId specId = ObjectSpecId.of("com.foo.bar.SomeClass");
private long id = 123;
private String keyStr = Long.toString(id, 16);
-
+
+ private RootOid rootOid = RootOidDefault.create(specId, keyStr);
+
private NoSqlDestroyObjectCommand command;
@Before
public void setup() {
+ //keyCreator = new KeyCreatorDefault();
+
context.checking(new Expectations(){{
allowing(specification).getFullIdentifier();
will(returnValue("com.foo.bar.SomeClass"));
+ allowing(specification).getSpecId();
+ will(returnValue(specId));
+
allowing(adapter).getSpecification();
will(returnValue(specification));
allowing(adapter).getOid();
- will(returnValue(oid));
+ will(returnValue(rootOid));
allowing(adapter).getVersion();
will(returnValue(version));
@@ -86,17 +94,17 @@ public class DestroyObjectCommandImpleme
context.checking(new Expectations() {
{
- one(keyCreator).key(oid);
- will(returnValue(keyStr));
+// one(keyCreator).getIdentifierForPersistentRoot(oid);
+// will(returnValue(keyStr));
one(versionCreator).versionString(version);
will(returnValue(versionStr));
- one(commandContext).delete(specification.getFullIdentifier(), keyStr, versionStr);
+ one(commandContext).delete(specification.getSpecId(), keyStr, versionStr);
}
});
- command = new NoSqlDestroyObjectCommand(keyCreator, versionCreator, adapter);
+ command = new NoSqlDestroyObjectCommand(versionCreator, adapter);
command.execute(commandContext);
}
}