diff options
author | Eike Stepper | 2009-07-11 06:18:08 +0000 |
---|---|---|
committer | Eike Stepper | 2009-07-11 06:18:08 +0000 |
commit | 81d94805548152b0a4544376ff520a13638f2248 (patch) | |
tree | 04a68155a834c9eafa59e5748205d5101ff8dbd8 | |
parent | 98c962065013fbe589c0adf3efa91d55d9f006ba (diff) | |
download | cdo-81d94805548152b0a4544376ff520a13638f2248.tar.gz cdo-81d94805548152b0a4544376ff520a13638f2248.tar.xz cdo-81d94805548152b0a4544376ff520a13638f2248.zip |
[282481] Provide an EmbeddedSessionProtocol
https://bugs.eclipse.org/bugs/show_bug.cgi?id=282481
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); - } - } } /** |