Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-07-11 06:18:08 +0000
committerEike Stepper2009-07-11 06:18:08 +0000
commit81d94805548152b0a4544376ff520a13638f2248 (patch)
tree04a68155a834c9eafa59e5748205d5101ff8dbd8
parent98c962065013fbe589c0adf3efa91d55d9f006ba (diff)
downloadcdo-81d94805548152b0a4544376ff520a13638f2248.tar.gz
cdo-81d94805548152b0a4544376ff520a13638f2248.tar.xz
cdo-81d94805548152b0a4544376ff520a13638f2248.zip
[282481] Provide an EmbeddedSessionProtocol
https://bugs.eclipse.org/bugs/show_bug.cgi?id=282481
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java23
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java15
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java53
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java186
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java16
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java18
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java56
15 files changed, 203 insertions, 241 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
index b5964e5676..34d4b3b032 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionFactory.java
@@ -4,26 +4,33 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.common.revision;
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.io.CDODataInput;
-
import org.eclipse.emf.ecore.EClass;
-import java.io.IOException;
-
/**
* @author Eike Stepper
* @since 2.0
*/
public interface CDORevisionFactory
{
- public CDORevision createRevision(EClass eClass, CDOID id);
+ /**
+ * @since 3.0
+ */
+ public static final CDORevisionFactory DEFAULT = new CDORevisionFactory()
+ {
+ public CDORevision createRevision(EClass eClass)
+ {
+ return new org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl(eClass);
+ }
+ };
- public CDORevision createRevision(CDODataInput in) throws IOException;
+ /**
+ * @since 3.0
+ */
+ public CDORevision createRevision(EClass eClass);
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
index 5755b0a71d..b45b51eb3c 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.internal.common.messages.Messages;
import org.eclipse.emf.cdo.internal.common.revision.CDOFeatureMapEntryImpl;
import org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl;
-import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.FeatureMap;
@@ -36,14 +35,6 @@ public final class CDORevisionUtil
/**
* @since 2.0
*/
- public static CDORevision createRevision(EClass eClass, CDOID id)
- {
- return new CDORevisionImpl(eClass, id);
- }
-
- /**
- * @since 2.0
- */
public static FeatureMap.Entry createFeatureMapEntry(EStructuralFeature feature, Object value)
{
return new CDOFeatureMapEntryImpl(feature, value);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
index 2382786c0d..9fac6c48f1 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/io/CDODataInputImpl.java
@@ -27,6 +27,7 @@ import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
import org.eclipse.emf.cdo.common.revision.CDORevision;
+import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.common.revision.CDORevisionManager;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
@@ -40,7 +41,6 @@ import org.eclipse.emf.cdo.internal.common.id.CDOIDMetaRangeImpl;
import org.eclipse.emf.cdo.internal.common.id.CDOIDTempMetaImpl;
import org.eclipse.emf.cdo.internal.common.id.CDOIDTempObjectImpl;
import org.eclipse.emf.cdo.internal.common.messages.Messages;
-import org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOAddFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOClearFeatureDeltaImpl;
import org.eclipse.emf.cdo.internal.common.revision.delta.CDOContainerFeatureDeltaImpl;
@@ -56,6 +56,7 @@ import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDOList;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager;
import org.eclipse.net4j.util.ImplementationError;
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
@@ -214,7 +215,10 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl
boolean notNull = readBoolean();
if (notNull)
{
- return new CDORevisionImpl(this);
+ CDORevisionFactory factory = ((InternalCDORevisionManager)getRevisionManager()).getFactory();
+ InternalCDORevision revision = (InternalCDORevision)factory.createRevision(null);
+ revision.read(this);
+ return revision;
}
return null;
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java
index f498b93e09..a0c6932acd 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionImpl.java
@@ -13,8 +13,6 @@
*/
package org.eclipse.emf.cdo.internal.common.revision;
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.CDOType;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -25,8 +23,6 @@ import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
-import java.io.IOException;
-
/**
* @author Eike Stepper
*/
@@ -34,17 +30,12 @@ public class CDORevisionImpl extends AbstractCDORevision
{
private Object[] values;
- public CDORevisionImpl(EClass eClass, CDOID id)
- {
- super(eClass, id);
- }
-
- public CDORevisionImpl(CDODataInput in) throws IOException
+ public CDORevisionImpl(EClass eClass)
{
- super(in);
+ super(eClass);
}
- public CDORevisionImpl(CDORevisionImpl source)
+ protected CDORevisionImpl(CDORevisionImpl source)
{
super(source);
EStructuralFeature[] features = CDOModelUtil.getAllPersistentFeatures(getEClass());
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java
index 0be39f1b3b..5157810065 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java
@@ -376,6 +376,11 @@ public class CDORevisionManagerImpl extends Lifecycle implements InternalCDORevi
protected void doBeforeActivate() throws Exception
{
super.doBeforeActivate();
+ if (factory == null)
+ {
+ factory = CDORevisionFactory.DEFAULT;
+ }
+
if (cache == null)
{
cache = CDORevisionCacheUtil.createDefaultCache();
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
index 963fa17691..947d628635 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/AbstractCDORevision.java
@@ -75,30 +75,30 @@ public abstract class AbstractCDORevision implements InternalCDORevision
private int containingFeatureID;
- public AbstractCDORevision(EClass eClass, CDOID id)
+ /**
+ * @since 3.0
+ */
+ public AbstractCDORevision(EClass eClass)
{
- if (eClass.isAbstract())
+ if (eClass != null)
{
- throw new IllegalArgumentException(MessageFormat.format(Messages.getString("AbstractCDORevision.0"), eClass)); //$NON-NLS-1$
- }
+ if (eClass.isAbstract())
+ {
+ throw new IllegalArgumentException(MessageFormat.format(Messages.getString("AbstractCDORevision.0"), eClass)); //$NON-NLS-1$
+ }
- if (CDOIDUtil.isNull(id))
- {
- throw new IllegalArgumentException(Messages.getString("AbstractCDORevision.1")); //$NON-NLS-1$
+ classInfo = CDOModelUtil.getClassInfo(eClass);
+ version = 0;
+ created = UNSPECIFIED_DATE;
+ revised = UNSPECIFIED_DATE;
+ resourceID = CDOID.NULL;
+ containerID = CDOID.NULL;
+ containingFeatureID = 0;
+ initValues(classInfo.getAllPersistentFeatures());
}
-
- classInfo = CDOModelUtil.getClassInfo(eClass);
- this.id = id;
- version = 0;
- created = UNSPECIFIED_DATE;
- revised = UNSPECIFIED_DATE;
- resourceID = CDOID.NULL;
- containerID = CDOID.NULL;
- containingFeatureID = 0;
- initValues(classInfo.getAllPersistentFeatures());
}
- public AbstractCDORevision(AbstractCDORevision source)
+ protected AbstractCDORevision(AbstractCDORevision source)
{
classInfo = source.classInfo;
id = source.id;
@@ -110,7 +110,10 @@ public abstract class AbstractCDORevision implements InternalCDORevision
containingFeatureID = source.containingFeatureID;
}
- public AbstractCDORevision(CDODataInput in) throws IOException
+ /**
+ * @since 3.0
+ */
+ public void read(CDODataInput in) throws IOException
{
READING.start(this);
EClassifier classifier = in.readCDOClassifierRefAndResolve();
@@ -174,13 +177,6 @@ public abstract class AbstractCDORevision implements InternalCDORevision
return classInfo.getEClass();
}
- /**
- * @since 3.0
- */
- public void setEClass(EClass eClass)
- {
- }
-
public CDOID getID()
{
return id;
@@ -188,6 +184,11 @@ public abstract class AbstractCDORevision implements InternalCDORevision
public void setID(CDOID id)
{
+ if (CDOIDUtil.isNull(id))
+ {
+ throw new IllegalArgumentException(Messages.getString("AbstractCDORevision.1")); //$NON-NLS-1$
+ }
+
if (TRACER.isEnabled())
{
TRACER.format("Setting ID: {0}", id);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
index e7fba9eb41..8a2cca2315 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/InternalCDORevision.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Eike Stepper - initial API and implementation
* Simon McDuff - maintenance
@@ -12,6 +12,7 @@
package org.eclipse.emf.cdo.spi.common.revision;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjustable;
@@ -96,5 +97,10 @@ public interface InternalCDORevision extends CDORevision, CDORevisionData, CDORe
@Deprecated
public void setListSize(EStructuralFeature feature, int size);
+ /**
+ * @since 3.0
+ */
+ public void read(CDODataInput in) throws IOException;
+
public void write(CDODataOutput out, int referenceChunk) throws IOException;
}
diff --git a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
index 940ad09855..8a57f14d54 100644
--- a/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
+++ b/plugins/org.eclipse.emf.cdo.server.db/src/org/eclipse/emf/cdo/server/internal/db/DBStoreAccessor.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.common.CDOQueryInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
-import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.cache.CDORevisionCacheAdder;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.IRepository;
@@ -177,7 +176,7 @@ public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAcce
return null;
}
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.createRevision(eClass, id);
+ InternalCDORevision revision = getStore().createRevision(eClass, id);
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
@@ -205,7 +204,7 @@ public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAcce
}
EClass eClass = getObjectType(id);
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.createRevision(eClass, id);
+ InternalCDORevision revision = getStore().createRevision(eClass, id);
IClassMappingAuditSupport mapping = (IClassMappingAuditSupport)mappingStrategy.getClassMapping(eClass);
if (mapping.readRevisionByTime(this, revision, timeStamp, listChunk))
@@ -222,7 +221,7 @@ public class DBStoreAccessor extends LongIDStoreAccessor implements IDBStoreAcce
IMappingStrategy mappingStrategy = getStore().getMappingStrategy();
EClass eClass = getObjectType(id);
- InternalCDORevision revision = (InternalCDORevision)CDORevisionUtil.createRevision(eClass, id);
+ InternalCDORevision revision = getStore().createRevision(eClass, id);
IClassMapping mapping = mappingStrategy.getClassMapping(eClass);
boolean success = false;
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
index c65790f8fe..228bbb14ad 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java
@@ -10,8 +10,8 @@
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl;
+import org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor;
import org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
@@ -47,13 +47,14 @@ public class CDORevisionInstantiator implements Instantiator
public Object instantiate(Serializable id)
{
+ final HibernateStoreAccessor storeAccessor = HibernateThreadContext.getCurrentStoreAccessor();
+ HibernateStore store = storeAccessor.getStore();
if (entityName == null)
{
- final HibernateStoreAccessor storeAccessor = HibernateThreadContext.getCurrentStoreAccessor();
- entityName = storeAccessor.getStore().getEntityName(eClass);
+ entityName = store.getEntityName(eClass);
}
- return CDORevisionUtil.createRevision(eClass, CDOIDHibernateFactoryImpl.getInstance().createCDOID(id, entityName));
+ return store.createRevision(eClass, CDOIDHibernateFactoryImpl.getInstance().createCDOID(id, entityName));
}
public boolean isInstance(Object object)
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
index 08434a878f..114fe5bbd9 100644
--- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
+++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java
@@ -4,13 +4,14 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
@@ -48,6 +49,11 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return new CDORevisionProxy(li);
}
+ public void read(CDODataInput in) throws IOException
+ {
+ li.getRevision().read(in);
+ }
+
public void write(CDODataOutput out, int referenceChunk) throws IOException
{
li.getRevision().write(out, referenceChunk);
@@ -63,79 +69,69 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li;
}
- public void add(EStructuralFeature feature, int index, Object value)
- {
- li.getRevision().add(feature, index, value);
- }
-
- public void adjustReferences(CDOReferenceAdjuster idMappings)
- {
- li.getRevision().adjustReferences(idMappings);
- }
-
- public void clear(EStructuralFeature feature)
+ public EClass getEClass()
{
- li.getRevision().clear(feature);
+ return li.getRevision().getEClass();
}
- public CDORevisionDelta compare(CDORevision origin)
+ public Object getContainerID()
{
- return li.getRevision().compare(origin);
+ return li.getRevision().getContainerID();
}
- public boolean contains(EStructuralFeature feature, Object value)
+ public void setContainerID(Object containerID)
{
- return li.getRevision().contains(feature, value);
+ li.getRevision().setContainerID(containerID);
}
- public Object get(EStructuralFeature feature, int index)
+ public int getContainingFeatureID()
{
- return li.getRevision().get(feature, index);
+ return li.getRevision().getContainingFeatureID();
}
- public EClass getEClass()
+ public void setContainingFeatureID(int containingFeatureID)
{
- return li.getRevision().getEClass();
+ li.getRevision().setContainingFeatureID(containingFeatureID);
}
- public Object getContainerID()
+ public CDORevisionData data()
{
- return li.getRevision().getContainerID();
+ return li.getRevision().data();
}
- public int getContainingFeatureID()
+ public CDOID getID()
{
- return li.getRevision().getContainingFeatureID();
+ return li.getRevision().getID();
}
- public long getCreated()
+ public void setID(CDOID id)
{
- return li.getRevision().getCreated();
+ li.getRevision().setID(id);
}
- public CDORevisionData data()
+ public int getVersion()
{
- return li.getRevision().data();
+ return li.getRevision().getVersion();
}
- public CDOID getID()
+ public void setVersion(int version)
{
- return li.getRevision().getID();
+ li.getRevision().setVersion(version);
}
- public CDOList getList(EStructuralFeature feature, int size)
+ public boolean isTransactional()
{
- return li.getRevision().getList(feature, size);
+ return li.getRevision().isTransactional();
}
- public CDOList getList(EStructuralFeature feature)
+ public int setTransactional()
{
- return li.getRevision().getList(feature);
+ return li.getRevision().setTransactional();
}
- public void setList(EStructuralFeature feature, InternalCDOList list)
+ public void setUntransactional()
{
- li.getRevision().setList(feature, list);
+ li.getRevision().setUntransactional();
}
public CDOID getResourceID()
@@ -143,44 +139,44 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().getResourceID();
}
- public long getRevised()
+ public void setResourceID(CDOID resourceID)
{
- return li.getRevision().getRevised();
+ li.getRevision().setResourceID(resourceID);
}
- public CDORevision revision()
+ public long getCreated()
{
- return li.getRevision().revision();
+ return li.getRevision().getCreated();
}
- public Object getValue(EStructuralFeature feature)
+ public void setCreated(long created)
{
- return li.getRevision().getValue(feature);
+ li.getRevision().setCreated(created);
}
- public int getVersion()
+ public long getRevised()
{
- return li.getRevision().getVersion();
+ return li.getRevision().getRevised();
}
- public int hashCode(EStructuralFeature feature)
+ public void setRevised(long revised)
{
- return li.getRevision().hashCode(feature);
+ li.getRevision().setRevised(revised);
}
- public int indexOf(EStructuralFeature feature, Object value)
+ public boolean isCurrent()
{
- return li.getRevision().indexOf(feature, value);
+ return li.getRevision().isCurrent();
}
- public boolean isCurrent()
+ public boolean isValid(long timeStamp)
{
- return li.getRevision().isCurrent();
+ return li.getRevision().isValid(timeStamp);
}
- public boolean isEmpty(EStructuralFeature feature)
+ public CDORevision revision()
{
- return li.getRevision().isEmpty(feature);
+ return li.getRevision().revision();
}
public boolean isResourceNode()
@@ -198,95 +194,100 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
return li.getRevision().isResource();
}
- public boolean isTransactional()
+ public void add(EStructuralFeature feature, int index, Object value)
{
- return li.getRevision().isTransactional();
+ li.getRevision().add(feature, index, value);
}
- public boolean isValid(long timeStamp)
+ public void adjustReferences(CDOReferenceAdjuster idMappings)
{
- return li.getRevision().isValid(timeStamp);
+ li.getRevision().adjustReferences(idMappings);
}
- public int lastIndexOf(EStructuralFeature feature, Object value)
+ public void clear(EStructuralFeature feature)
{
- return li.getRevision().lastIndexOf(feature, value);
+ li.getRevision().clear(feature);
}
- public void merge(CDORevisionDelta delta)
+ public CDORevisionDelta compare(CDORevision origin)
{
- li.getRevision().merge(delta);
+ return li.getRevision().compare(origin);
}
- public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex)
+ public boolean contains(EStructuralFeature feature, Object value)
{
- return li.getRevision().move(feature, targetIndex, sourceIndex);
+ return li.getRevision().contains(feature, value);
}
- public Object remove(EStructuralFeature feature, int index)
+ public Object get(EStructuralFeature feature, int index)
{
- return li.getRevision().remove(feature, index);
+ return li.getRevision().get(feature, index);
}
- public Object set(EStructuralFeature feature, int index, Object value)
+ public Object getValue(EStructuralFeature feature)
{
- return li.getRevision().set(feature, index, value);
+ return li.getRevision().getValue(feature);
}
- public void setContainerID(Object containerID)
+ public CDOList getList(EStructuralFeature feature, int size)
{
- li.getRevision().setContainerID(containerID);
+ return li.getRevision().getList(feature, size);
}
- public void setContainingFeatureID(int containingFeatureID)
+ public CDOList getList(EStructuralFeature feature)
{
- li.getRevision().setContainingFeatureID(containingFeatureID);
+ return li.getRevision().getList(feature);
}
- public void setCreated(long created)
+ public void setList(EStructuralFeature feature, InternalCDOList list)
{
- li.getRevision().setCreated(created);
+ li.getRevision().setList(feature, list);
}
- public void setID(CDOID id)
+ public int indexOf(EStructuralFeature feature, Object value)
{
- li.getRevision().setID(id);
+ return li.getRevision().indexOf(feature, value);
}
- @SuppressWarnings("deprecation")
- public void setListSize(EStructuralFeature feature, int size)
+ public boolean isEmpty(EStructuralFeature feature)
{
- li.getRevision().setListSize(feature, size);
+ return li.getRevision().isEmpty(feature);
}
- public void setResourceID(CDOID resourceID)
+ public int lastIndexOf(EStructuralFeature feature, Object value)
{
- li.getRevision().setResourceID(resourceID);
+ return li.getRevision().lastIndexOf(feature, value);
}
- public void setRevised(long revised)
+ public void merge(CDORevisionDelta delta)
{
- li.getRevision().setRevised(revised);
+ li.getRevision().merge(delta);
}
- public int setTransactional()
+ public Object move(EStructuralFeature feature, int targetIndex, int sourceIndex)
{
- return li.getRevision().setTransactional();
+ return li.getRevision().move(feature, targetIndex, sourceIndex);
}
- public void setUntransactional()
+ public Object remove(EStructuralFeature feature, int index)
{
- li.getRevision().setUntransactional();
+ return li.getRevision().remove(feature, index);
}
- public Object setValue(EStructuralFeature feature, Object value)
+ public Object set(EStructuralFeature feature, int index, Object value)
{
- return li.getRevision().setValue(feature, value);
+ return li.getRevision().set(feature, index, value);
}
- public void setVersion(int version)
+ @SuppressWarnings("deprecation")
+ public void setListSize(EStructuralFeature feature, int size)
{
- li.getRevision().setVersion(version);
+ li.getRevision().setListSize(feature, size);
+ }
+
+ public Object setValue(EStructuralFeature feature, Object value)
+ {
+ return li.getRevision().setValue(feature, value);
}
public int size(EStructuralFeature feature)
@@ -318,4 +319,9 @@ public class CDORevisionProxy implements HibernateProxy, InternalCDORevision, Se
{
return li.getRevision().basicSet(feature, index, value);
}
+
+ public int hashCode(EStructuralFeature feature)
+ {
+ return li.getRevision().hashCode(feature);
+ }
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java
index 79681bb4bc..865d258f7f 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/spi/server/Store.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Eike Stepper - initial API and implementation
*/
@@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.common.CDOCommonView;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.ISessionManager;
@@ -21,6 +22,7 @@ import org.eclipse.emf.cdo.server.IStore;
import org.eclipse.emf.cdo.server.IStoreAccessor;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.IView;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.net4j.util.StringUtil;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
@@ -29,6 +31,8 @@ import org.eclipse.net4j.util.lifecycle.Lifecycle;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.monitor.ProgressDistributor;
+import org.eclipse.emf.ecore.EClass;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@@ -58,7 +62,7 @@ public abstract class Store extends Lifecycle implements IStore
private RevisionParallelism revisionParallelism = RevisionParallelism.NONE;
- private IRepository repository;
+ private InternalRepository repository;
@ExcludeFromDump
private transient long lastMetaID;
@@ -105,14 +109,17 @@ public abstract class Store extends Lifecycle implements IStore
return type;
}
- public IRepository getRepository()
+ /**
+ * @since 3.0
+ */
+ public InternalRepository getRepository()
{
return repository;
}
public void setRepository(IRepository repository)
{
- this.repository = repository;
+ this.repository = (InternalRepository)repository;
}
public Set<ChangeFormat> getSupportedChangeFormats()
@@ -240,6 +247,17 @@ public abstract class Store extends Lifecycle implements IStore
return indicatingCommitDistributor;
}
+ /**
+ * @since 3.0
+ */
+ public InternalCDORevision createRevision(EClass eClass, CDOID id)
+ {
+ CDORevisionFactory factory = repository.getRevisionManager().getFactory();
+ InternalCDORevision revision = (InternalCDORevision)factory.createRevision(eClass);
+ revision.setID(id);
+ return revision;
+ }
+
protected void releaseAccessor(StoreAccessor accessor)
{
StoreAccessorPool pool = null;
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
index 7e4daf6871..e327c1caf7 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionHolderTest.java
@@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
+import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
import org.eclipse.emf.cdo.common.revision.CDOList;
import org.eclipse.emf.cdo.common.revision.CDOReferenceAdjuster;
@@ -278,6 +279,11 @@ public class RevisionHolderTest extends AbstractCDOTest
this(id, 0, CDORevision.UNSPECIFIED_DATE);
}
+ public EClass getEClass()
+ {
+ throw new UnsupportedOperationException();
+ }
+
public CDOID getID()
{
return id;
@@ -333,11 +339,6 @@ public class RevisionHolderTest extends AbstractCDOTest
return (revised == UNSPECIFIED_DATE || revised >= timeStamp) && timeStamp >= created;
}
- public EClass getEClass()
- {
- throw new UnsupportedOperationException();
- }
-
public CDORevisionData data()
{
throw new UnsupportedOperationException();
@@ -373,6 +374,11 @@ public class RevisionHolderTest extends AbstractCDOTest
return new TestRevision(CDOIDUtil.getLong(id), version, created, revised);
}
+ public void read(CDODataInput in) throws IOException
+ {
+ throw new UnsupportedOperationException();
+ }
+
public void write(CDODataOutput out, int referenceChunk) throws IOException
{
throw new UnsupportedOperationException();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
index b37b8daff7..41f0ffc9fc 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/session/CDOSession.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.common.CDOCommonSession;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
import org.eclipse.emf.cdo.common.revision.CDORevisionManager;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionManager;
import org.eclipse.emf.cdo.transaction.CDOTimeStampContext;
@@ -219,16 +218,6 @@ public interface CDOSession extends CDOCommonSession, IContainer<CDOView>, IOpti
public void setCollectionLoadingPolicy(CDOCollectionLoadingPolicy policy);
/**
- * Returns the CDORevisionFactory currently being used by this session.
- */
- public CDORevisionFactory getRevisionFactory();
-
- /**
- * Sets the CDORevisionFactory to be used by this session.
- */
- public void setRevisionFactory(CDORevisionFactory factory);
-
- /**
* @author Eike Stepper
*/
public interface GeneratedPackageEmulationEvent extends IOptionsEvent, CDOEvent
@@ -248,13 +237,6 @@ public interface CDOSession extends CDOCommonSession, IContainer<CDOView>, IOpti
public interface CollectionLoadingPolicyEvent extends IOptionsEvent, CDOEvent
{
}
-
- /**
- * @author Eike Stepper
- */
- public interface RevisionFactoryEvent extends IOptionsEvent, CDOEvent
- {
- }
}
/**
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
index 8320de6149..ca9147b8ee 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
@@ -601,8 +601,9 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent
// Create new revision
EClass eClass = object.eClass();
- CDORevisionFactory factory = transaction.getSession().options().getRevisionFactory();
- InternalCDORevision revision = (InternalCDORevision)factory.createRevision(eClass, id);
+ CDORevisionFactory factory = transaction.getSession().getRevisionManager().getFactory();
+ InternalCDORevision revision = (InternalCDORevision)factory.createRevision(eClass);
+ revision.setID(id);
revision.setVersion(-1);
object.cdoInternalSetRevision(revision);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index 4df5ae463f..6633698117 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -23,13 +23,10 @@ import org.eclipse.emf.cdo.common.id.CDOIDLibraryDescriptor;
import org.eclipse.emf.cdo.common.id.CDOIDObject;
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
-import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.protocol.CDOAuthenticator;
import org.eclipse.emf.cdo.common.revision.CDORevision;
-import org.eclipse.emf.cdo.common.revision.CDORevisionFactory;
-import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
import org.eclipse.emf.cdo.common.util.CDOException;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
@@ -79,7 +76,6 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.options.IOptionsContainer;
import org.eclipse.net4j.util.options.OptionsEvent;
-import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
@@ -99,7 +95,6 @@ import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext;
import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext;
import java.io.File;
-import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.text.MessageFormat;
@@ -982,8 +977,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
private CDOCollectionLoadingPolicy collectionLoadingPolicy;
- private CDORevisionFactory revisionFactory;
-
public OptionsImpl()
{
// TODO Remove preferences from core
@@ -1055,42 +1048,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
}
}
- public synchronized CDORevisionFactory getRevisionFactory()
- {
- if (revisionFactory == null)
- {
- revisionFactory = new CDORevisionFactory()
- {
- public CDORevision createRevision(EClass eClass, CDOID id)
- {
- return CDORevisionUtil.createRevision(eClass, id);
- }
-
- public CDORevision createRevision(CDODataInput in) throws IOException
- {
- return in.readCDORevision();
- }
-
- @Override
- public String toString()
- {
- return "DefaultRevisionFactory"; //$NON-NLS-1$
- }
- };
- }
-
- return revisionFactory;
- }
-
- public synchronized void setRevisionFactory(CDORevisionFactory revisionFactory)
- {
- if (this.revisionFactory != revisionFactory)
- {
- this.revisionFactory = revisionFactory;
- fireEvent(new RevisionFactoryEventImpl());
- }
- }
-
/**
* @author Eike Stepper
*/
@@ -1130,19 +1087,6 @@ public abstract class CDOSessionImpl extends Container<CDOView> implements Inter
super(OptionsImpl.this);
}
}
-
- /**
- * @author Eike Stepper
- */
- private final class RevisionFactoryEventImpl extends OptionsEvent implements RevisionFactoryEvent
- {
- private static final long serialVersionUID = 1L;
-
- public RevisionFactoryEventImpl()
- {
- super(OptionsImpl.this);
- }
- }
}
/**

Back to the top