Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 163499 Details for
Bug 247226
Transparently support legacy models (CDOLegacyAdapter)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
LegacyAdapter Patch v7 - ready to be committed
patch.txt (text/plain), 113.95 KB, created by
Eike Stepper
on 2010-03-31 04:18:34 EDT
(
hide
)
Description:
LegacyAdapter Patch v7 - ready to be committed
Filename:
MIME Type:
Creator:
Eike Stepper
Created:
2010-03-31 04:18:34 EDT
Size:
113.95 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.emf.cdo >Index: src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java,v >retrieving revision 1.24 >diff -u -r1.24 CDOResourceFactoryImpl.java >--- src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java 28 Feb 2010 19:30:56 -0000 1.24 >+++ src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java 31 Mar 2010 08:17:07 -0000 >@@ -39,8 +39,10 @@ > > /** > * TODO Add TCs to ensure that Ecore internally doesn't change the way the stack is used!!! >+ * >+ * @since 3.0 > */ >- private boolean isGetResource() >+ protected boolean isGetResource() > { > boolean inResourceSet = false; > StackTraceElement[] elements = Thread.currentThread().getStackTrace(); >Index: src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java,v >retrieving revision 1.87 >diff -u -r1.87 CDOResourceImpl.java >--- src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java 28 Feb 2010 19:30:56 -0000 1.87 >+++ src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java 31 Mar 2010 08:17:07 -0000 >@@ -901,8 +901,9 @@ > > /** > * @ADDED >+ * @since 3.0 > */ >- void setExisting(boolean existing) >+ protected void setExisting(boolean existing) > { > this.existing = existing; > } >Index: src/org/eclipse/emf/cdo/transaction/CDOAutoAttacher.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOAutoAttacher.java,v >retrieving revision 1.5 >diff -u -r1.5 CDOAutoAttacher.java >--- src/org/eclipse/emf/cdo/transaction/CDOAutoAttacher.java 3 Feb 2010 10:20:25 -0000 1.5 >+++ src/org/eclipse/emf/cdo/transaction/CDOAutoAttacher.java 31 Mar 2010 08:17:08 -0000 >@@ -23,6 +23,7 @@ > import org.eclipse.emf.cdo.common.revision.delta.CDOSetFeatureDelta; > import org.eclipse.emf.cdo.common.revision.delta.CDOUnsetFeatureDelta; > import org.eclipse.emf.cdo.eresource.CDOResource; >+import org.eclipse.emf.cdo.util.CDOUtil; > > import org.eclipse.emf.internal.cdo.util.FSMUtil; > >@@ -60,7 +61,8 @@ > } > > // Persist the graph as well. >- handle(object, object); >+ EObject obj = CDOUtil.getEObject(object); >+ handle(obj, obj); > } > > @Override >@@ -100,7 +102,7 @@ > } > else > { >- persist(referrer, element); >+ persist(referrer, CDOUtil.getCDOObject(element)); > } > } > } >Index: src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java,v >retrieving revision 1.15 >diff -u -r1.15 CDOPushTransaction.java >--- src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java 16 Mar 2010 14:48:08 -0000 1.15 >+++ src/org/eclipse/emf/cdo/transaction/CDOPushTransaction.java 31 Mar 2010 08:17:08 -0000 >@@ -306,6 +306,11 @@ > return delegate.createResource(path); > } > >+ public boolean isLegacyModeEnabled() >+ { >+ return delegate.isLegacyModeEnabled(); >+ } >+ > public Set<CDOObject> getConflicts() > { > return delegate.getConflicts(); >Index: src/org/eclipse/emf/cdo/util/CDOUtil.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/util/CDOUtil.java,v >retrieving revision 1.74 >diff -u -r1.74 CDOUtil.java >--- src/org/eclipse/emf/cdo/util/CDOUtil.java 3 Feb 2010 10:20:27 -0000 1.74 >+++ src/org/eclipse/emf/cdo/util/CDOUtil.java 31 Mar 2010 08:17:08 -0000 >@@ -27,6 +27,7 @@ > import org.eclipse.emf.cdo.view.CDOViewSet; > > import org.eclipse.emf.internal.cdo.CDOFactoryImpl; >+import org.eclipse.emf.internal.cdo.CDOObjectWrapper; > import org.eclipse.emf.internal.cdo.CDOStateMachine; > import org.eclipse.emf.internal.cdo.messages.Messages; > import org.eclipse.emf.internal.cdo.session.CDOCollectionLoadingPolicyImpl; >@@ -60,6 +61,8 @@ > */ > public final class CDOUtil > { >+ private static final ThreadLocal<Boolean> legacyModeDefault = new InheritableThreadLocal<Boolean>(); >+ > private CDOUtil() > { > } >@@ -400,4 +403,28 @@ > { > return CDOSessionImpl.isInvalidationRunnerActive(); > } >+ >+ /** >+ * @since 3.0 >+ */ >+ public static boolean isLegacyObject(EObject object) >+ { >+ return object instanceof CDOObjectWrapper; >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ public static boolean isLegacyModeDefault() >+ { >+ return legacyModeDefault.get(); >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ public static void setLegacyModeDefault(boolean on) >+ { >+ legacyModeDefault.set(on); >+ } > } >Index: src/org/eclipse/emf/cdo/util/LegacyModeNotEnabledException.java >=================================================================== >RCS file: src/org/eclipse/emf/cdo/util/LegacyModeNotEnabledException.java >diff -N src/org/eclipse/emf/cdo/util/LegacyModeNotEnabledException.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/emf/cdo/util/LegacyModeNotEnabledException.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+/** >+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others. >+ * All rights reserved. This program and the accompanying materials >+ * 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.util; >+ >+/** >+ * @author Eike Stepper >+ * @since 3.0 >+ */ >+public class LegacyModeNotEnabledException extends IllegalStateException >+{ >+ private static final long serialVersionUID = 1L; >+ >+ public LegacyModeNotEnabledException() >+ { >+ this("Legacy mode is not enabled"); >+ } >+ >+ public LegacyModeNotEnabledException(String s) >+ { >+ super(s); >+ } >+ >+ public LegacyModeNotEnabledException(Throwable cause) >+ { >+ super(cause); >+ } >+ >+ public LegacyModeNotEnabledException(String message, Throwable cause) >+ { >+ super(message, cause); >+ } >+} >Index: src/org/eclipse/emf/cdo/view/CDOView.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOView.java,v >retrieving revision 1.15 >diff -u -r1.15 CDOView.java >--- src/org/eclipse/emf/cdo/view/CDOView.java 16 Mar 2010 14:48:09 -0000 1.15 >+++ src/org/eclipse/emf/cdo/view/CDOView.java 31 Mar 2010 08:17:10 -0000 >@@ -176,6 +176,11 @@ > public ReentrantLock getLock(); > > /** >+ * @since 3.0 >+ */ >+ public boolean isLegacyModeEnabled(); >+ >+ /** > * Returns always <code>false</code>. > * <p> > * This method has a special implementation in {@link CDOTransaction} as well. >Index: src/org/eclipse/emf/internal/cdo/CDOLegacyAdapter.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyAdapter.java,v >retrieving revision 1.7 >diff -u -r1.7 CDOLegacyAdapter.java >--- src/org/eclipse/emf/internal/cdo/CDOLegacyAdapter.java 3 Feb 2010 10:20:25 -0000 1.7 >+++ src/org/eclipse/emf/internal/cdo/CDOLegacyAdapter.java 31 Mar 2010 08:17:10 -0000 >@@ -11,7 +11,9 @@ > */ > package org.eclipse.emf.internal.cdo; > >+import org.eclipse.emf.cdo.CDONotification; > import org.eclipse.emf.cdo.common.model.EMFUtil; >+import org.eclipse.emf.cdo.transaction.CDOTransaction; > > import org.eclipse.emf.common.notify.Adapter; > import org.eclipse.emf.common.notify.Notification; >@@ -32,6 +34,14 @@ > super(null); > } > >+ /** >+ * @since 3.0 >+ */ >+ public CDOLegacyAdapter(InternalEObject object) >+ { >+ super(object); >+ } >+ > public void setTarget(Notifier newTarget) > { > instance = (InternalEObject)newTarget; >@@ -57,15 +67,18 @@ > > public void notifyChanged(Notification msg) > { >- EStructuralFeature feature = (EStructuralFeature)msg.getFeature(); >+ if (msg instanceof CDONotification) >+ { >+ return; >+ } > >- if (view == null || feature == null) >+ EStructuralFeature feature = (EStructuralFeature)msg.getFeature(); >+ if (view == null || feature == null || !(view instanceof CDOTransaction)) > { > return; > } > > CDOStore store = view.getStore(); >- > if (EMFUtil.isPersistent(feature)) > { > switch (msg.getEventType()) >@@ -108,17 +121,19 @@ > > case Notification.REMOVE_MANY: > { >- int pos = msg.getPosition(); > @SuppressWarnings("unchecked") > List<Object> list = (List<Object>)msg.getOldValue(); >- for (int i = 0; i < list.size(); i++) >+ for (int i = list.size() - 1; i >= 0; --i) > { >- store.remove(instance, feature, pos); >+ store.remove(instance, feature, i); > } > > break; > } > } >+ >+ // Align Container for bidirectional references because this is not set in the store. See Bugzilla_246622_Test >+ instanceToRevisionContainment(); > } > } > } >Index: src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java,v >retrieving revision 1.38 >diff -u -r1.38 CDOLegacyWrapper.java >--- src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java 5 Feb 2010 08:28:13 -0000 1.38 >+++ src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java 31 Mar 2010 08:17:10 -0000 >@@ -20,17 +20,22 @@ > import org.eclipse.emf.cdo.common.model.EMFUtil; > import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; > import org.eclipse.emf.cdo.common.revision.CDORevision; >+import org.eclipse.emf.cdo.common.revision.CDORevisionData; >+import org.eclipse.emf.cdo.common.util.CDOException; > import org.eclipse.emf.cdo.eresource.CDOResource; > import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; >+import org.eclipse.emf.cdo.util.CDOUtil; > > import org.eclipse.emf.internal.cdo.bundle.OM; > import org.eclipse.emf.internal.cdo.util.FSMUtil; > >-import org.eclipse.net4j.util.ImplementationError; > import org.eclipse.net4j.util.ReflectUtil; >+import org.eclipse.net4j.util.WrappedException; > import org.eclipse.net4j.util.om.trace.ContextTracer; > > import org.eclipse.emf.common.notify.Adapter; >+import org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EObservableAdapterList; >+import org.eclipse.emf.common.util.EList; > import org.eclipse.emf.common.util.URI; > import org.eclipse.emf.ecore.EAttribute; > import org.eclipse.emf.ecore.EClass; >@@ -41,6 +46,7 @@ > import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.resource.Resource; > import org.eclipse.emf.ecore.util.InternalEList; >+import org.eclipse.emf.spi.cdo.CDOElementProxy; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOView; > >@@ -59,20 +65,6 @@ > { > private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_OBJECT, CDOLegacyWrapper.class); > >- protected CDOState state; >- >- protected InternalCDORevision revision; >- >- /** >- * It could happen that while <i>revisionToInstance()</i> is executed externally the <i>internalPostLoad()</i> method >- * will be called. This happens for example if <i>internalPostInvalidate()</i> is called. The leads to another >- * <i>revisionToInstance()</i> call while the first call has not finished. This is certainly not so cool. That's why >- * <b>underConstruction</b> will flag that <i>revisionToInstance()</i> is still running and avoid the second call. >- * >- * @since 3.0 >- */ >- private boolean underConstruction; >- > /** > * This local ThreadMap stores all pre-registered objects. This avoids a neverending loop when setting the container > * for the object. >@@ -95,10 +87,27 @@ > } > }; > >+ protected CDOState state; >+ >+ protected InternalCDORevision revision; >+ >+ /** >+ * It could happen that while <i>revisionToInstance()</i> is executed externally the <i>internalPostLoad()</i> method >+ * will be called. This happens for example if <i>internalPostInvalidate()</i> is called. The leads to another >+ * <i>revisionToInstance()</i> call while the first call has not finished. This is certainly not so cool. That's why >+ * <b>underConstruction</b> will flag that <i>revisionToInstance()</i> is still running and avoid the second call. >+ * >+ * @since 3.0 >+ */ >+ private boolean underConstruction; >+ > public CDOLegacyWrapper(InternalEObject instance) > { > this.instance = instance; > state = CDOState.TRANSIENT; >+ >+ instance.eAdapters().add((Adapter)this); >+ attachAdapterListListener(); > } > > public CDOState cdoState() >@@ -122,12 +131,13 @@ > { > if (TRACER.isEnabled()) > { >- TRACER.format("Setting state {0} for {1}", state, this); >+ TRACER.format("Setting state {0} for {1}", state, this); //$NON-NLS-1$ > } > > CDOState oldState = this.state; > this.state = state; > adjustEProxy(); >+ > if (view != null) > { > view.handleObjectStateChanged(this, oldState, state); >@@ -143,7 +153,7 @@ > { > if (TRACER.isEnabled()) > { >- TRACER.format(("Setting revision: " + revision + "")); >+ TRACER.trace(("Setting revision: " + revision)); //$NON-NLS-1$ > } > > this.revision = (InternalCDORevision)revision; >@@ -153,31 +163,138 @@ > { > instanceToRevision(); > >- // TODO Avoid if no adapters in list (eBasicAdapters?) >- // TODO LEGACY Clarify how to intercept adapter addition in the legacy >- // instance > for (Adapter adapter : eAdapters()) > { >- view.subscribe(this, adapter); >+ if (!(adapter instanceof CDOObjectWrapper)) >+ { >+ view.handleAddAdapter(this, adapter); >+ view.subscribe(this, adapter); >+ } > } > } > > public void cdoInternalPostDetach(boolean remote) > { >+ if (remote) >+ { >+ // Do nothing?? >+ return; >+ } >+ >+ EClass eClass = revision.getEClass(); >+ >+ CDOStore store = view.getStore(); >+ InternalEObject eContainer = store.getContainer(this); >+ if (eContainer != null && eContainmentFeature().isResolveProxies()) >+ { >+ adjustOppositeReference(this, eContainer, eContainmentFeature()); >+ } >+ >+ // This loop adjusts the opposite wrapper objects to support dangling references. See Bugzilla_251263_Test >+ for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(eClass)) >+ { >+ EReference oppositeReference = ((EStructuralFeature.Internal)feature).getEOpposite(); >+ if (oppositeReference != null) >+ { >+ if (feature.isMany()) >+ { >+ int size = revision.size(feature); >+ for (int i = 0; i < size; i++) >+ { >+ EObject object = (EObject)getValueFromRevision(feature, i); >+ CDOObjectWrapper wrapper = (CDOObjectWrapper)CDOUtil.getCDOObject(object); >+ setOppositeReference(wrapper, oppositeReference); >+ } >+ } >+ else >+ { >+ EObject oppositeObject = (EObject)instance.eGet(feature); >+ if (oppositeObject != null) >+ { >+ CDOObjectWrapper wrapper = (CDOObjectWrapper)CDOUtil.getCDOObject(oppositeObject); >+ setOppositeReference(wrapper, oppositeReference); >+ } >+ } >+ } >+ } >+ } >+ >+ private void setOppositeReference(CDOObjectWrapper wrapper, EReference oppositeReference) >+ { >+ if (wrapper != null) >+ { >+ InternalCDOView view = wrapper.cdoView(); >+ if (view != null) >+ { >+ CDOStore store = view.getStore(); >+ if (store != null) >+ { >+ store.set(wrapper, oppositeReference, 0, this); >+ } >+ } >+ } >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ public void cdoInternalPostRollback() >+ { >+ InternalCDORevision revision = cdoView().getRevision(cdoID(), true); >+ cdoInternalSetRevision(revision); >+ revisionToInstance(); >+ state = CDOState.CLEAN; > } > >+ /** >+ * CDO persists the isUnset state of an eObject in the database. The indicator for this is that the feature is null in >+ * the revision (see CDOStore.isSet()). When committing a legacy object all values in the instance for native >+ * attributes are set with the java default values. So, these values will be stored in the revision and CDO cannot >+ * distinguish whether the feature is set or not. This method must ensure that the value will be set to null if the >+ * feature is not set. >+ */ > public void cdoInternalPreCommit() > { >+ // We have to set this here because the CDOLegacyAdapter will not be notified when the instance is the target of a >+ // single-directional containment reference. >+ // If the container is not an legacy Object the system will get no information >+ instanceToRevisionContainment(); >+ >+ EClass eClass = revision.getEClass(); >+ for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(eClass)) >+ { >+ if (feature.isUnsettable()) >+ { >+ if (!instance.eIsSet(feature)) >+ { >+ if (feature.isMany()) >+ { >+ @SuppressWarnings("unchecked") >+ InternalEList<Object> list = (InternalEList<Object>)instance.eGet(feature); >+ clearList(feature, list); >+ } >+ else >+ { >+ revision.set(feature, EStore.NO_INDEX, null); >+ } >+ } >+ else if (instance.eGet(feature) == null) >+ { >+ // Must be single-valued! >+ revision.set(feature, EStore.NO_INDEX, CDORevisionData.NIL); >+ } >+ } >+ } > } > > public void cdoInternalPreLoad() > { >+ // Do nothing > } > > public void cdoInternalPostLoad() > { >- // TODO Consider not remembering the revisin after copying it to the >- // instance (spare 1/2 of the space) >+ // TODO Consider not remembering the revision after copying it to the instance (spare 1/2 of the space) > revisionToInstance(); > } > >@@ -191,7 +308,7 @@ > > public void cdoInternalCleanup() > { >- // clean(); >+ // Do nothing > } > > @Override >@@ -214,14 +331,22 @@ > @Override > public String toString() > { >- return "CDOLegacyWrapper[" + id + "]"; >+ return "CDOLegacyWrapper[" + id + ", " + instance.getClass().getName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ protected void attachAdapterListListener() >+ { >+ ((EObservableAdapterList)instance.eAdapters()).addListener(new AdapterListListener()); > } > > protected void instanceToRevision() > { > if (TRACER.isEnabled()) > { >- TRACER.format("Transfering instance to revision: {0} --> {1}", instance, revision); >+ TRACER.format("Transfering instance to revision: {0} --> {1}", instance, revision); //$NON-NLS-1$ > } > > // Handle containment >@@ -250,7 +375,7 @@ > else > { > CDOObject cdoContainer = FSMUtil.adapt(eContainer, view); >- revision.setContainerID(cdoContainer.cdoID()); >+ revision.setContainerID(cdoContainer); > revision.setContainingFeatureID(getInstanceContainerFeatureID(instance)); > } > } >@@ -265,7 +390,7 @@ > { > if (underConstruction) > { >- // return if revisionToInstance was called before to avoid doubled calls >+ // Return if revisionToInstance was called before to avoid doubled calls > return; > } > >@@ -273,7 +398,7 @@ > > if (TRACER.isEnabled()) > { >- TRACER.format("Transfering revision to instance: {0} --> {1}", revision, instance); >+ TRACER.format("Transfering revision to instance: {0} --> {1}", revision, instance); //$NON-NLS-1$ > } > > boolean deliver = instance.eDeliver(); >@@ -287,7 +412,6 @@ > { > registerWrapper(this); > counter.increment(); >- > revisionToInstanceContainment(); > > for (EStructuralFeature feature : CDOModelUtil.getAllPersistentFeatures(revision.getEClass())) >@@ -300,6 +424,11 @@ > OM.LOG.error(ex); > throw ex; > } >+ catch (Exception ex) >+ { >+ OM.LOG.error(ex); >+ throw new CDOException(ex); >+ } > finally > { > if (deliver) >@@ -329,14 +458,21 @@ > */ > protected void revisionToInstanceFeature(EStructuralFeature feature) > { >+ if (feature.isUnsettable() && !view.getStore().isSet(this, feature)) >+ { >+ // Clarify if this is sufficient for bidirectional references >+ instance.eUnset(feature); >+ return; >+ } >+ > if (feature.isMany()) > { > if (TRACER.isEnabled()) > { >- TRACER.format("State of Object is : " + state); >+ TRACER.format("State of Object (" + this + "/" + instance + ") is : " + state); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > } > >- if (state == CDOState.CLEAN || state == CDOState.PROXY) >+ if (state == CDOState.CLEAN || state == CDOState.PROXY || state == CDOState.NEW || state == CDOState.DIRTY) > { > int size = revision.size(feature); > >@@ -350,7 +486,7 @@ > > if (TRACER.isEnabled()) > { >- TRACER.format("Adding " + object + " to feature " + feature + "in instance " + instance); >+ TRACER.format("Adding " + object + " to feature " + feature + "in instance " + instance); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > } > > list.basicAdd(object, null); >@@ -365,27 +501,42 @@ > { > if (TRACER.isEnabled()) > { >- TRACER.format(("Setting attribute value " + object + " to feature " + feature + " in instance " + instance)); >+ TRACER.format(("Setting attribute value " + object + " to feature " + feature + " in instance " + instance)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > } > >- eSet(feature, object); >+ // Just fake it for the store :( >+ if (feature.isUnsettable() && object.equals(CDORevisionData.NIL)) >+ { >+ eSet(feature, null); >+ } >+ else >+ { >+ eSet(feature, object); >+ } > } > else > { > // EReferences > if (TRACER.isEnabled()) > { >- TRACER.format(("Adding object " + object + " to feature " + feature + " in instance " + instance)); >+ TRACER.format(("Adding object " + object + " to feature " + feature + " in instance " + instance)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > } > > int featureID = instance.eClass().getFeatureID(feature); > Class<? extends Object> baseClass = object == null ? null : object.getClass(); > EStructuralFeature.Internal internalFeature = (EStructuralFeature.Internal)feature; >- EReference oppositeReference = cdoID().isTemporary() ? null : internalFeature.getEOpposite(); >+ EReference oppositeReference = internalFeature.getEOpposite(); > > if (oppositeReference != null) > { >- instance.eInverseAdd((InternalEObject)object, featureID, baseClass, null); >+ // If you have a containment reference but the container is not set, but the object is attached to a resource >+ // do not set the feature to null. Otherwise the object will be removed from the container which is the >+ // resource instead of the original container. As a result the object will be detached. See >+ // MapTest.testEObjectToEObjectValueContainedMap for more information >+ if (object != null) >+ { >+ instance.eInverseAdd((InternalEObject)object, featureID, baseClass, null); >+ } > > if (object != null && !EMFUtil.isPersistent(oppositeReference)) > { >@@ -394,13 +545,19 @@ > } > else > { >- instance.eSet(feature, object); >+ if (object != CDORevisionData.NIL) >+ { >+ instance.eSet(feature, object); >+ } >+ else >+ { >+ instance.eSet(feature, null); >+ } > } > >- // Adjust opposite for transient opposite features > if (TRACER.isEnabled()) > { >- TRACER.format(("Added object " + object + " to feature " + feature + " in instance " + instance)); >+ TRACER.format(("Added object " + object + " to feature " + feature + " in instance " + instance)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > } > } > } >@@ -408,8 +565,8 @@ > > private void adjustOppositeReference(InternalEObject instance, InternalEObject object, EReference oppositeReference) > { >- boolean deliver = object.eDeliver(); // Disable notifications >- if (deliver) >+ boolean wasDeliver = object.eDeliver(); // Disable notifications >+ if (wasDeliver) > { > object.eSetDeliver(false); > } >@@ -434,7 +591,7 @@ > } > finally > { >- if (deliver) >+ if (wasDeliver) > { > object.eSetDeliver(true); > } >@@ -449,9 +606,6 @@ > > // TODO Clarify obj.getClass()/baseclass > ((InternalEList<?>)list).basicRemove(obj, null); >- >- // TODO Martin: baseicRemove seems to be better than eInverseremove >- // instance.eInverseRemove(obj, featureID, obj.getClass(), null); > } > } > >@@ -460,7 +614,7 @@ > * store or the internal pre-registration Map. > * > * @param feature >- * the feature to retireive the value from >+ * the feature to retrieve the value from > * @param index > * the given index of the object in the feature > * @return the value from the feature at the given index >@@ -473,6 +627,12 @@ > return null; > } > >+ if (object instanceof CDOElementProxy) >+ { >+ // Resolve proxy >+ object = ((CDOElementProxy)object).resolve(view.getSession(), revision, feature, index); >+ } >+ > if (object instanceof CDOLegacyWrapper) > { > return ((CDOLegacyWrapper)object).cdoInternalInstance(); >@@ -497,7 +657,15 @@ > return ((CDOLegacyWrapper)object).cdoInternalInstance(); > } > >- object = view.getObject(id); >+ if (id.isExternal()) >+ { >+ object = view.getResourceSet().getEObject(URI.createURI(id.toURIFragment()), true); >+ } >+ else >+ { >+ object = view.getObject(id); >+ } >+ > if (object instanceof CDOObjectWrapper) > { > return ((CDOObjectWrapper)object).cdoInternalInstance(); >@@ -537,7 +705,6 @@ > > protected void setInstanceContainer(InternalEObject container, int containerFeatureID) > { >- // TODO Change to direct call of eBasicSetContainer > Method method = ReflectUtil.getMethod(instance.getClass(), "eBasicSetContainer", InternalEObject.class, int.class); //$NON-NLS-1$ > ReflectUtil.invokeMethod(method, instance, container, containerFeatureID); > } >@@ -563,7 +730,7 @@ > > if (TRACER.isEnabled()) > { >- TRACER.format("getting Object (" + potentialID + ") from localThread instead of the view"); >+ TRACER.format("Getting Object (" + potentialID + ") from localThread instead of the view"); //$NON-NLS-1$ //$NON-NLS-2$ > } > } > else >@@ -576,6 +743,13 @@ > return null; > } > >+ if (id.isExternal()) >+ { >+ URI uri = URI.createURI(id.toURIFragment()); >+ InternalEObject eObject = (InternalEObject)view.getResourceSet().getEObject(uri, true); >+ return eObject; >+ } >+ > boolean loadOnDemand = feature == null; > potentialID = view.getObject(id, loadOnDemand); > if (potentialID == null && !loadOnDemand) >@@ -727,7 +901,7 @@ > URI uri = URI.createURI(CDOProtocolConstants.PROTOCOL_NAME + ":proxy#" + id); //$NON-NLS-1$ > if (TRACER.isEnabled()) > { >- TRACER.format("Setting proxyURI {0} for {1}", uri, instance); >+ TRACER.format("Setting proxyURI {0} for {1}", uri, instance); //$NON-NLS-1$ > } > > instance.eSetProxyURI(uri); >@@ -739,7 +913,7 @@ > { > if (TRACER.isEnabled()) > { >- TRACER.format("Unsetting proxyURI for {0}", instance); >+ TRACER.format("Unsetting proxyURI for {0}", instance); //$NON-NLS-1$ > } > > instance.eSetProxyURI(null); >@@ -747,6 +921,21 @@ > } > } > >+ @Override >+ public synchronized EList<Adapter> eAdapters() >+ { >+ EList<Adapter> adapters = instance.eAdapters(); >+ for (Adapter adapter : adapters) >+ { >+ if (!FSMUtil.isTransient(this) && !(adapter instanceof CDOLegacyWrapper)) >+ { >+ cdoView().handleAddAdapter(this, adapter); >+ } >+ } >+ >+ return adapters; >+ } >+ > public static boolean isLegacyProxy(Object object) > { > return object instanceof LegacyProxy; >@@ -766,30 +955,91 @@ > } > catch (IllegalAccessException ex) > { >- throw new ImplementationError(ex); >+ throw WrappedException.wrap(ex); > } > } > >- private static CDOLegacyWrapper getRegisteredWrapper(CDOID id) >+ /** >+ * @since 3.0 >+ */ >+ protected static CDOLegacyWrapper getRegisteredWrapper(CDOID id) > { > return wrapperRegistry.get().get(id); > } > > /** >- * adds an object to the pre-registered objects list which hold all created objects even if they are not registered in >+ * Adds an object to the pre-registered objects list which hold all created objects even if they are not registered in > * the view >+ * >+ * @since 3.0 > */ >- private static void registerWrapper(CDOLegacyWrapper wrapper) >+ protected static void registerWrapper(CDOLegacyWrapper wrapper) > { > wrapperRegistry.get().put(wrapper.cdoID(), wrapper); > } > >- private static void unregisterWrapper(CDOLegacyWrapper wrapper) >+ /** >+ * @since 3.0 >+ */ >+ protected static void unregisterWrapper(CDOLegacyWrapper wrapper) > { > wrapperRegistry.get().remove(wrapper.cdoID()); > } > > /** >+ * @since 3.0 >+ */ >+ protected static boolean isRegisteredWrapper(CDOLegacyWrapper wrapper) >+ { >+ return wrapperRegistry.get().containsKey(wrapper.cdoID()); >+ } >+ >+ private static void adjustOppositeReference(InternalCDOObject instance, InternalEObject object, EReference feature) >+ { >+ if (object != null) >+ { >+ InternalCDOObject cdoObject = (InternalCDOObject)CDOUtil.getCDOObject(object); >+ if (cdoObject != null && !FSMUtil.isTransient(cdoObject)) >+ { >+ EStore eStore = cdoObject.eStore(); >+ if (feature.isMany()) >+ { >+ int index = eStore.indexOf(cdoObject, feature, instance.cdoID()); >+ if (index != EStore.NO_INDEX) >+ { >+ eStore.set(cdoObject, feature, index, instance); >+ } >+ } >+ else >+ { >+ eStore.set(cdoObject, feature, 0, instance); >+ } >+ } >+ else >+ { >+ if (feature.isResolveProxies()) >+ { >+ // We should not trigger events. But we have no choice :-(. >+ if (feature.isMany()) >+ { >+ @SuppressWarnings("unchecked") >+ InternalEList<Object> list = (InternalEList<Object>)object.eGet(feature); >+ int index = list.indexOf(instance); >+ if (index != EStore.NO_INDEX) >+ { >+ list.set(index, instance); >+ } >+ } >+ else >+ { >+ object.eSet(feature, instance); >+ } >+ } >+ } >+ } >+ } >+ >+ /** > * @author Eike Stepper > */ > private static interface LegacyProxy >@@ -802,11 +1052,11 @@ > */ > private static final class LegacyProxyInvocationHandler implements InvocationHandler, LegacyProxy > { >- private static final Method getIDMethod = ReflectUtil.getMethod(LegacyProxy.class, "getID"); >+ private static final Method getIDMethod = ReflectUtil.getMethod(LegacyProxy.class, "getID"); //$NON-NLS-1$ > >- private static final Method eIsProxyMethod = ReflectUtil.getMethod(EObject.class, "eIsProxy"); >+ private static final Method eIsProxyMethod = ReflectUtil.getMethod(EObject.class, "eIsProxy"); //$NON-NLS-1$ > >- private static final Method eProxyURIMethod = ReflectUtil.getMethod(InternalEObject.class, "eProxyURI"); >+ private static final Method eProxyURIMethod = ReflectUtil.getMethod(InternalEObject.class, "eProxyURI"); //$NON-NLS-1$ > > private CDOLegacyWrapper wrapper; > >@@ -837,18 +1087,14 @@ > > if (method.equals(eProxyURIMethod)) > { >- // Use the resource of the container because it's guaranteed to >- // be in the same CDOView as the resource >- // of the target! >+ // Use container's resource because it's guaranteed to be in the same CDOView as the resource of the target! > Resource resource = wrapper.eResource(); > >- // TODO Consider using a "fake" Resource implementation. See >- // Resource.getEObject(...) >+ // TODO Consider using a "fake" Resource implementation. See Resource.getEObject(...) > return resource.getURI().appendFragment(id.toURIFragment()); > } > >- // A client must have invoked the proxy while being told not to do >- // so! >+ // A client must have invoked the proxy while being told not to do so! > throw new UnsupportedOperationException(method.getName()); > } > } >Index: src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java,v >retrieving revision 1.16 >diff -u -r1.16 CDOMetaWrapper.java >--- src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java 3 Feb 2010 10:20:25 -0000 1.16 >+++ src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java 31 Mar 2010 08:17:10 -0000 >@@ -7,6 +7,7 @@ > * > * Contributors: > * Eike Stepper - initial API and implementation >+ * Martin Fluegge - bug 247226: Transparently support legacy models > */ > package org.eclipse.emf.internal.cdo; > >@@ -111,6 +112,14 @@ > throw new UnsupportedOperationException(); > } > >+ /** >+ * @since 3.0 >+ */ >+ public void cdoInternalPostRollback() >+ { >+ // Do nothing >+ } >+ > public void cdoInternalPreCommit() > { > throw new UnsupportedOperationException(); >Index: src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java,v >retrieving revision 1.135 >diff -u -r1.135 CDOObjectImpl.java >--- src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java 21 Feb 2010 10:57:09 -0000 1.135 >+++ src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java 31 Mar 2010 08:17:11 -0000 >@@ -29,8 +29,8 @@ > import org.eclipse.net4j.util.ImplementationError; > import org.eclipse.net4j.util.ObjectUtil; > import org.eclipse.net4j.util.WrappedException; >-import org.eclipse.net4j.util.concurrent.TimeoutRuntimeException; > import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; >+import org.eclipse.net4j.util.concurrent.TimeoutRuntimeException; > import org.eclipse.net4j.util.om.trace.ContextTracer; > > import org.eclipse.emf.common.notify.Adapter; >@@ -386,6 +386,14 @@ > } > } > >+ /** >+ * @since 3.0 >+ */ >+ public void cdoInternalPostRollback() >+ { >+ // Do nothing >+ } >+ > public void cdoInternalPreCommit() > { > // Do nothing >Index: src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java,v >retrieving revision 1.20 >diff -u -r1.20 CDOObjectMerger.java >--- src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java 16 Feb 2010 08:40:51 -0000 1.20 >+++ src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java 31 Mar 2010 08:17:11 -0000 >@@ -42,5 +42,6 @@ > } > > merge(revision, delta); >+ object.cdoInternalPostLoad(); > } > } >Index: src/org/eclipse/emf/internal/cdo/CDOObjectWrapper.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectWrapper.java,v >retrieving revision 1.22 >diff -u -r1.22 CDOObjectWrapper.java >--- src/org/eclipse/emf/internal/cdo/CDOObjectWrapper.java 3 Feb 2010 10:20:25 -0000 1.22 >+++ src/org/eclipse/emf/internal/cdo/CDOObjectWrapper.java 31 Mar 2010 08:17:11 -0000 >@@ -18,11 +18,15 @@ > import org.eclipse.emf.internal.cdo.bundle.OM; > import org.eclipse.emf.internal.cdo.util.FSMUtil; > >+import org.eclipse.net4j.util.WrappedException; >+import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; >+import org.eclipse.net4j.util.concurrent.TimeoutRuntimeException; > import org.eclipse.net4j.util.om.trace.ContextTracer; > > import org.eclipse.emf.common.notify.Adapter; > import org.eclipse.emf.common.notify.Notification; > import org.eclipse.emf.common.notify.NotificationChain; >+import org.eclipse.emf.common.notify.Notifier; > import org.eclipse.emf.common.util.EList; > import org.eclipse.emf.common.util.TreeIterator; > import org.eclipse.emf.common.util.URI; >@@ -31,13 +35,17 @@ > import org.eclipse.emf.ecore.EOperation; > import org.eclipse.emf.ecore.EReference; > import org.eclipse.emf.ecore.EStructuralFeature; >-import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.EStructuralFeature.Setting; >+import org.eclipse.emf.ecore.EcorePackage; >+import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.resource.Resource; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOView; > > import java.lang.reflect.InvocationTargetException; >+import java.util.Collections; >+import java.util.concurrent.TimeUnit; >+import java.util.concurrent.locks.Condition; > > /** > * @author Eike Stepper >@@ -94,11 +102,6 @@ > > public void cdoInternalSetID(CDOID id) > { >- if (id != null && id.isNull()) >- { >- throw new IllegalArgumentException("id is null"); //$NON-NLS-1$ >- } >- > if (TRACER.isEnabled()) > { > TRACER.format("Setting ID: {0} for {1}", id, instance); //$NON-NLS-1$ >@@ -148,8 +151,31 @@ > > public EStructuralFeature cdoInternalDynamicFeature(int dynamicFeatureID) > { >- // TODO Implement method CDOWrapperImpl.cdoInternalDynamicFeature() >- throw new UnsupportedOperationException("Not yet implemented"); //$NON-NLS-1$ >+ return eDynamicFeature(dynamicFeatureID); >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ protected EStructuralFeature eDynamicFeature(int dynamicFeatureID) >+ { >+ return eClass().getEStructuralFeature(dynamicFeatureID + eStaticFeatureCount()); >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ protected int eStaticFeatureCount() >+ { >+ return eStaticClass().getFeatureCount(); >+ } >+ >+ /** >+ * @since 3.0 >+ */ >+ protected final EClass eStaticClass() >+ { >+ return EcorePackage.eINSTANCE.getEObject(); > } > > /** >@@ -157,7 +183,13 @@ > */ > public CDOLock cdoReadLock() > { >- throw new UnsupportedOperationException(); >+ if (FSMUtil.isTransient(this) || FSMUtil.isNew(this)) >+ { >+ return NOOPLockImpl.INSTANCE; >+ } >+ >+ // Should we cache the locks ? >+ return new Lock(LockType.READ); > } > > /** >@@ -165,7 +197,13 @@ > */ > public CDOLock cdoWriteLock() > { >- throw new UnsupportedOperationException(); >+ if (FSMUtil.isTransient(this) || FSMUtil.isNew(this)) >+ { >+ return NOOPLockImpl.INSTANCE; >+ } >+ >+ // Should we cache the locks ? >+ return new Lock(LockType.WRITE); > } > > public EList<Adapter> eAdapters() >@@ -320,6 +358,12 @@ > > public boolean eIsSet(EStructuralFeature feature) > { >+ if (instance.eIsSet(feature) != view.getStore().isSet(this, feature)) >+ { >+ // TODO Clarify whether this is always true >+ throw new IllegalStateException("Store isSet should never differ from instance"); >+ } >+ > return instance.eIsSet(feature); > } > >@@ -417,4 +461,131 @@ > { > return instance.eURIFragmentSegment(feature, object); > } >+ >+ /** >+ * @author Martin Flügge >+ * @since 3.0 >+ */ >+ protected class AdapterListListener implements >+ org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EObservableAdapterList.Listener >+ { >+ public void added(Notifier notifier, Adapter adapter) >+ { >+ if (TRACER.isEnabled()) >+ { >+ TRACER.format("Added : {0} to {1} ", adapter, CDOObjectWrapper.this); //$NON-NLS-1$ >+ } >+ >+ if (!FSMUtil.isTransient(CDOObjectWrapper.this)) >+ { >+ cdoView().handleAddAdapter(CDOObjectWrapper.this, adapter); >+ } >+ } >+ >+ public void removed(Notifier notifier, Adapter adapter) >+ { >+ if (TRACER.isEnabled()) >+ { >+ TRACER.format("Removed : {0} from {1} ", adapter, CDOObjectWrapper.this); //$NON-NLS-1$ >+ } >+ >+ if (!FSMUtil.isTransient(CDOObjectWrapper.this)) >+ { >+ cdoView().handleRemoveAdapter(CDOObjectWrapper.this, adapter); >+ } >+ } >+ } >+ >+ /** >+ * @author Martin Fluegge >+ * @since 3.0 >+ */ >+ private final class Lock implements CDOLock >+ { >+ private LockType type; >+ >+ public Lock(LockType type) >+ { >+ this.type = type; >+ } >+ >+ public LockType getType() >+ { >+ return type; >+ } >+ >+ public boolean isLocked() >+ { >+ return cdoView().isObjectLocked(CDOObjectWrapper.this, type, false); >+ } >+ >+ /** >+ * @see org.eclipse.emf.cdo.CDOLock#isLockedByOthers() >+ */ >+ public boolean isLockedByOthers() >+ { >+ return cdoView().isObjectLocked(CDOObjectWrapper.this, type, true); >+ } >+ >+ public void lock() >+ { >+ try >+ { >+ cdoView().lockObjects(Collections.singletonList(CDOObjectWrapper.this), type, CDOLock.WAIT); >+ } >+ catch (InterruptedException ex) >+ { >+ throw WrappedException.wrap(ex); >+ } >+ } >+ >+ public void lockInterruptibly() throws InterruptedException >+ { >+ lock(); >+ } >+ >+ public Condition newCondition() >+ { >+ throw new UnsupportedOperationException(); >+ } >+ >+ public boolean tryLock() >+ { >+ try >+ { >+ cdoView().lockObjects(Collections.singletonList(CDOObjectWrapper.this), type, CDOLock.NO_WAIT); >+ return true; >+ } >+ catch (TimeoutRuntimeException ex) >+ { >+ return false; >+ } >+ catch (InterruptedException ex) >+ { >+ throw WrappedException.wrap(ex); >+ } >+ } >+ >+ /** >+ * @throws InterruptedException >+ * if timeout is reached. >+ */ >+ public boolean tryLock(long time, TimeUnit unit) throws InterruptedException >+ { >+ try >+ { >+ cdoView().lockObjects(Collections.singletonList(CDOObjectWrapper.this), type, unit.toMillis(time)); >+ return true; >+ } >+ catch (TimeoutRuntimeException ex) >+ { >+ return false; >+ } >+ } >+ >+ public void unlock() >+ { >+ cdoView().unlockObjects(Collections.singletonList(CDOObjectWrapper.this), type); >+ } >+ } > } >Index: src/org/eclipse/emf/internal/cdo/CDOStateMachine.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java,v >retrieving revision 1.141 >diff -u -r1.141 CDOStateMachine.java >--- src/org/eclipse/emf/internal/cdo/CDOStateMachine.java 11 Mar 2010 15:26:09 -0000 1.141 >+++ src/org/eclipse/emf/internal/cdo/CDOStateMachine.java 31 Mar 2010 08:17:12 -0000 >@@ -41,10 +41,10 @@ > import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.impl.EStoreEObjectImpl; > import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOTransaction; > import org.eclipse.emf.spi.cdo.InternalCDOView; >-import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; > > import java.util.ArrayList; > import java.util.Iterator; >@@ -482,6 +482,7 @@ > } > > process(object, CDOEvent.ROLLBACK, null); >+ object.cdoInternalPostRollback(); > } > finally > { >Index: src/org/eclipse/emf/internal/cdo/query/CDOQueryResultIteratorImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/query/CDOQueryResultIteratorImpl.java,v >retrieving revision 1.14 >diff -u -r1.14 CDOQueryResultIteratorImpl.java >--- src/org/eclipse/emf/internal/cdo/query/CDOQueryResultIteratorImpl.java 27 Feb 2010 07:17:16 -0000 1.14 >+++ src/org/eclipse/emf/internal/cdo/query/CDOQueryResultIteratorImpl.java 31 Mar 2010 08:17:12 -0000 >@@ -13,6 +13,7 @@ > > import org.eclipse.emf.cdo.common.id.CDOID; > import org.eclipse.emf.cdo.common.util.CDOQueryInfo; >+import org.eclipse.emf.cdo.util.CDOUtil; > import org.eclipse.emf.cdo.view.CDOView; > > import org.eclipse.emf.common.util.EList; >@@ -51,7 +52,7 @@ > return null; > } > >- return (T)getView().getObject((CDOID)object, true); >+ return (T)CDOUtil.getEObject(getView().getObject((CDOID)object, true)); > } > > // Support a query return value of Object[] >Index: src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java,v >retrieving revision 1.85 >diff -u -r1.85 CDOSessionImpl.java >--- src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java 30 Mar 2010 10:58:42 -0000 1.85 >+++ src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java 31 Mar 2010 08:17:13 -0000 >@@ -63,13 +63,13 @@ > import org.eclipse.emf.internal.cdo.view.CDOViewImpl; > > import org.eclipse.net4j.util.ObjectUtil; >-import org.eclipse.net4j.util.WrappedException; > import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump; >+import org.eclipse.net4j.util.WrappedException; > import org.eclipse.net4j.util.collection.Pair; > import org.eclipse.net4j.util.concurrent.IRWLockManager; >+import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; > import org.eclipse.net4j.util.concurrent.QueueRunner; > import org.eclipse.net4j.util.concurrent.RWLockManager; >-import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType; > import org.eclipse.net4j.util.container.Container; > import org.eclipse.net4j.util.event.Event; > import org.eclipse.net4j.util.event.EventUtil; >@@ -91,6 +91,7 @@ > import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; > import org.eclipse.emf.spi.cdo.AbstractQueryIterator; > import org.eclipse.emf.spi.cdo.CDOSessionProtocol; >+import org.eclipse.emf.spi.cdo.CDOSessionProtocol.RefreshSessionResult; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDORemoteSessionManager; > import org.eclipse.emf.spi.cdo.InternalCDOSession; >@@ -98,7 +99,6 @@ > import org.eclipse.emf.spi.cdo.InternalCDOTransaction; > import org.eclipse.emf.spi.cdo.InternalCDOView; > import org.eclipse.emf.spi.cdo.InternalCDOViewSet; >-import org.eclipse.emf.spi.cdo.CDOSessionProtocol.RefreshSessionResult; > import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext; > > import java.text.MessageFormat; >@@ -109,8 +109,8 @@ > import java.util.HashSet; > import java.util.List; > import java.util.Map; >-import java.util.Set; > import java.util.Map.Entry; >+import java.util.Set; > > /** > * @author Eike Stepper >@@ -957,26 +957,6 @@ > super.doDeactivate(); > } > >- // private Map<CDOID, CDOIDAndVersion> getAllCDOIDAndVersion() >- // { >- // Map<CDOID, CDOIDAndVersion> uniqueObjects = new HashMap<CDOID, CDOIDAndVersion>(); >- // for (InternalCDOView view : getViews()) >- // { >- // view.getCDOIDAndVersion(uniqueObjects, Arrays.asList(view.getObjectsArray())); >- // } >- // >- // // Need to add Revision from revisionManager since we do not have all objects in view. >- // for (CDORevision revision : getRevisionManager().getCache().getCurrentRevisions()) >- // { >- // if (!uniqueObjects.containsKey(revision.getID())) >- // { >- // uniqueObjects.put(revision.getID(), CDOIDUtil.createIDAndVersion(revision.getID(), revision.getVersion())); >- // } >- // } >- // >- // return uniqueObjects; >- // } >- > public static boolean isInvalidationRunnerActive() > { > return invalidationRunnerActive.get(); >Index: src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java,v >retrieving revision 1.76 >diff -u -r1.76 CDOTransactionImpl.java >--- src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java 16 Mar 2010 14:48:09 -0000 1.76 >+++ src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java 31 Mar 2010 08:17:14 -0000 >@@ -76,10 +76,12 @@ > import org.eclipse.emf.cdo.transaction.CDOTransactionStartedEvent; > import org.eclipse.emf.cdo.transaction.CDOUserSavepoint; > import org.eclipse.emf.cdo.util.CDOURIUtil; >+import org.eclipse.emf.cdo.util.LegacyModeNotEnabledException; > import org.eclipse.emf.cdo.util.ObjectNotFoundException; > import org.eclipse.emf.cdo.view.CDOViewResourcesEvent; > > import org.eclipse.emf.internal.cdo.CDOObjectMerger; >+import org.eclipse.emf.internal.cdo.CDOObjectWrapper; > import org.eclipse.emf.internal.cdo.CDOStateMachine; > import org.eclipse.emf.internal.cdo.bundle.OM; > import org.eclipse.emf.internal.cdo.messages.Messages; >@@ -103,19 +105,19 @@ > import org.eclipse.emf.ecore.EObject; > import org.eclipse.emf.ecore.EPackage; > import org.eclipse.emf.ecore.EReference; >-import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.EStructuralFeature.Setting; >+import org.eclipse.emf.ecore.InternalEObject; > import org.eclipse.emf.ecore.util.EContentsEList; >-import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.ecore.util.EContentsEList.FeatureIterator; >+import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.spi.cdo.CDOSessionProtocol; >+import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; > import org.eclipse.emf.spi.cdo.CDOTransactionStrategy; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOSavepoint; > import org.eclipse.emf.spi.cdo.InternalCDOSession; > import org.eclipse.emf.spi.cdo.InternalCDOTransaction; > import org.eclipse.emf.spi.cdo.InternalCDOUserSavepoint; >-import org.eclipse.emf.spi.cdo.CDOSessionProtocol.CommitTransactionResult; > > import org.eclipse.core.runtime.IProgressMonitor; > import org.eclipse.core.runtime.NullProgressMonitor; >@@ -132,9 +134,9 @@ > import java.util.Iterator; > import java.util.List; > import java.util.Map; >+import java.util.Map.Entry; > import java.util.Set; > import java.util.WeakHashMap; >-import java.util.Map.Entry; > import java.util.concurrent.ConcurrentMap; > import java.util.concurrent.atomic.AtomicInteger; > import java.util.concurrent.locks.ReentrantLock; >@@ -884,6 +886,10 @@ > CDOTransactionStrategy transactionStrategy = getTransactionStrategy(); > return transactionStrategy.commit(this, progressMonitor); > } >+ catch (LegacyModeNotEnabledException ex) >+ { >+ throw ex; >+ } > catch (TransactionException ex) > { > throw ex; >@@ -2030,8 +2036,14 @@ > { > if (!objects.isEmpty()) > { >+ boolean noLegacy = !isLegacyModeEnabled(); > for (CDOObject object : objects.values()) > { >+ if (noLegacy && object instanceof CDOObjectWrapper) >+ { >+ throw new LegacyModeNotEnabledException(); >+ } >+ > ((InternalCDOObject)object).cdoInternalPreCommit(); > } > } >Index: src/org/eclipse/emf/internal/cdo/util/FSMUtil.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java,v >retrieving revision 1.70 >diff -u -r1.70 FSMUtil.java >--- src/org/eclipse/emf/internal/cdo/util/FSMUtil.java 20 Feb 2010 05:50:18 -0000 1.70 >+++ src/org/eclipse/emf/internal/cdo/util/FSMUtil.java 31 Mar 2010 08:17:14 -0000 >@@ -18,6 +18,7 @@ > import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; > import org.eclipse.emf.cdo.util.CDOUtil; > import org.eclipse.emf.cdo.util.InvalidObjectException; >+import org.eclipse.emf.cdo.util.LegacyModeNotEnabledException; > import org.eclipse.emf.cdo.util.ObjectNotFoundException; > import org.eclipse.emf.cdo.view.CDOView; > >@@ -36,7 +37,6 @@ > import org.eclipse.emf.ecore.EPackage; > import org.eclipse.emf.ecore.EcorePackage; > import org.eclipse.emf.ecore.InternalEObject; >-import org.eclipse.emf.ecore.impl.DynamicEObjectImpl; > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOView; >@@ -139,6 +139,11 @@ > > if (object instanceof InternalEObject) > { >+ if (!view.isLegacyModeEnabled()) >+ { >+ throw new LegacyModeNotEnabledException(); >+ } >+ > return adaptLegacy((InternalEObject)object); > } > >@@ -175,17 +180,11 @@ > */ > public static InternalCDOObject adaptLegacy(InternalEObject object) > { >- if (object.getClass() == DynamicEObjectImpl.class) >- { >- throw new IllegalArgumentException(Messages.getString("FSMUtil.4") + object); //$NON-NLS-1$ >- } >- > EList<Adapter> adapters = object.eAdapters(); > CDOLegacyAdapter adapter = getLegacyAdapter(adapters); > if (adapter == null) > { >- adapter = new CDOLegacyAdapter(); >- adapters.add(adapter); >+ adapter = new CDOLegacyAdapter(object); > } > > return adapter; >Index: src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java,v >retrieving revision 1.78 >diff -u -r1.78 CDOViewImpl.java >--- src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java 16 Mar 2010 14:48:09 -0000 1.78 >+++ src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java 31 Mar 2010 08:17:14 -0000 >@@ -72,8 +72,8 @@ > import org.eclipse.emf.internal.cdo.util.FSMUtil; > > import org.eclipse.net4j.util.ImplementationError; >-import org.eclipse.net4j.util.StringUtil; > import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump; >+import org.eclipse.net4j.util.StringUtil; > import org.eclipse.net4j.util.collection.CloseableIterator; > import org.eclipse.net4j.util.collection.FastList; > import org.eclipse.net4j.util.collection.HashBag; >@@ -100,12 +100,12 @@ > import org.eclipse.emf.ecore.resource.ResourceSet; > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.spi.cdo.CDOSessionProtocol; >+import org.eclipse.emf.spi.cdo.CDOSessionProtocol.RefreshSessionResult; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > import org.eclipse.emf.spi.cdo.InternalCDOSession; > import org.eclipse.emf.spi.cdo.InternalCDOTransaction; > import org.eclipse.emf.spi.cdo.InternalCDOView; > import org.eclipse.emf.spi.cdo.InternalCDOViewSet; >-import org.eclipse.emf.spi.cdo.CDOSessionProtocol.RefreshSessionResult; > > import java.text.MessageFormat; > import java.util.ArrayList; >@@ -115,8 +115,8 @@ > import java.util.HashSet; > import java.util.List; > import java.util.Map; >-import java.util.Set; > import java.util.Map.Entry; >+import java.util.Set; > import java.util.concurrent.ConcurrentMap; > import java.util.concurrent.locks.ReentrantLock; > >@@ -127,6 +127,8 @@ > { > private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_VIEW, CDOViewImpl.class); > >+ private final boolean legacyModeEnabled; >+ > private int viewID; > > private InternalCDOSession session; >@@ -176,6 +178,7 @@ > public CDOViewImpl(CDOBranch branch, long timeStamp) > { > branchPoint = branch.getPoint(timeStamp); >+ legacyModeEnabled = CDOUtil.isLegacyModeDefault(); > options = createOptions(); > } > >@@ -205,6 +208,11 @@ > return true; > } > >+ public boolean isLegacyModeEnabled() >+ { >+ return legacyModeEnabled; >+ } >+ > public ResourceSet getResourceSet() > { > return viewSet.getResourceSet(); >@@ -1270,7 +1278,14 @@ > > if (old != null) > { >- throw new IllegalStateException(MessageFormat.format(Messages.getString("CDOViewImpl.20"), object)); //$NON-NLS-1$ >+ if (CDOUtil.isLegacyObject(object)) >+ { >+ OM.LOG.warn("Legacy object has been registered multiple times: " + object); >+ } >+ else >+ { >+ throw new IllegalStateException(MessageFormat.format(Messages.getString("CDOViewImpl.20"), object)); //$NON-NLS-1$ >+ } > } > } > >Index: src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java,v >retrieving revision 1.13 >diff -u -r1.13 AbstractObjectConflictResolver.java >--- src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java 20 Feb 2010 05:50:18 -0000 1.13 >+++ src/org/eclipse/emf/spi/cdo/AbstractObjectConflictResolver.java 31 Mar 2010 08:17:14 -0000 >@@ -129,6 +129,7 @@ > merger.merge(revision, revisionDelta); > ((InternalCDOObject)object).cdoInternalSetRevision(revision); > ((InternalCDOObject)object).cdoInternalSetState(CDOState.DIRTY); >+ ((InternalCDOObject)object).cdoInternalPostLoad(); > } > > /** >@@ -239,7 +240,7 @@ > > public List<CDORevisionDelta> getRevisionDeltas(CDOObject notifier) > { >- List<CDORevisionDelta> list = deltas.get(notifier); >+ List<CDORevisionDelta> list = deltas.get(CDOUtil.getEObject(notifier)); > if (list == null) > { > return Collections.emptyList(); >Index: src/org/eclipse/emf/spi/cdo/InternalCDOObject.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOObject.java,v >retrieving revision 1.7 >diff -u -r1.7 InternalCDOObject.java >--- src/org/eclipse/emf/spi/cdo/InternalCDOObject.java 3 Feb 2010 10:20:23 -0000 1.7 >+++ src/org/eclipse/emf/spi/cdo/InternalCDOObject.java 31 Mar 2010 08:17:14 -0000 >@@ -7,6 +7,7 @@ > * > * Contributors: > * Eike Stepper - initial API and implementation >+ * Martin Flügge - enhancements > */ > package org.eclipse.emf.spi.cdo; > >@@ -39,6 +40,11 @@ > > public void cdoInternalPostInvalidate(); > >+ /** >+ * @since 3.0 >+ */ >+ public void cdoInternalPostRollback(); >+ > public void cdoInternalPreCommit(); > > public void cdoInternalSetID(CDOID id); >#P org.eclipse.emf.cdo.tests >Index: CDO AllTests (Legacy).launch >=================================================================== >RCS file: CDO AllTests (Legacy).launch >diff -N CDO AllTests (Legacy).launch >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ CDO AllTests (Legacy).launch 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,15 @@ >+<?xml version="1.0" encoding="UTF-8" standalone="no"?> >+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig"> >+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> >+<listEntry value="/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsLegacy.java"/> >+</listAttribute> >+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> >+<listEntry value="1"/> >+</listAttribute> >+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/> >+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/> >+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/> >+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/> >+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.cdo.tests.AllTestsLegacy"/> >+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.emf.cdo.tests"/> >+</launchConfiguration> >Index: src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java,v >retrieving revision 1.84 >diff -u -r1.84 AllTestsAllConfigs.java >--- src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java 11 Mar 2010 20:34:39 -0000 1.84 >+++ src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java 31 Mar 2010 08:17:17 -0000 >@@ -130,6 +130,8 @@ > testClasses.add(ConflictResolverTest.class); > testClasses.add(DynamicXSDTest.class); > testClasses.add(SetFeatureTest.class); >+ testClasses.add(DynamicPackageTest.class); >+ testClasses.add(LegacyTest.class); > > // Specific for MEMStore > testClasses.add(MEMStoreQueryTest.class); >Index: src/org/eclipse/emf/cdo/tests/AllTestsLegacy.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllTestsLegacy.java,v >retrieving revision 1.3 >diff -u -r1.3 AllTestsLegacy.java >--- src/org/eclipse/emf/cdo/tests/AllTestsLegacy.java 3 Feb 2010 10:24:05 -0000 1.3 >+++ src/org/eclipse/emf/cdo/tests/AllTestsLegacy.java 31 Mar 2010 08:17:17 -0000 >@@ -10,16 +10,6 @@ > */ > package org.eclipse.emf.cdo.tests; > >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_246622_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_248915_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_251263_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_254489_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_258933_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_259695_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_260756_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_266982_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_273565_Test; >-import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_279982_Test; > import org.eclipse.emf.cdo.tests.config.impl.ConfigTest; > > import java.util.List; >@@ -40,39 +30,14 @@ > @Override > protected void initTestClasses(List<Class<? extends ConfigTest>> testClasses) > { >- // testClasses.add(ChunkingTest.class); > super.initTestClasses(testClasses); >+ // testClasses.add(PerformanceTest.class); > >- testClasses.remove(ComplexTest.class); >- testClasses.remove(UnsetTest.class); >- testClasses.remove(PushTransactionTest.class); // ArrayStoreException >- testClasses.remove(ContainmentTest.class); // ArrayStoreException/NullpointerException in Transaction >- testClasses.remove(RollbackTest.class); // Failures >- testClasses.remove(CrossReferenceTest.class); // Failures >- testClasses.remove(ChunkingTest.class); // ArrayStoreException / ClassCastExecption >- testClasses.remove(ChunkingWithMEMTest.class); // java.lang.ClassCastException >- testClasses.remove(MetaTest.class); // wa // NullPointer >- testClasses.remove(AutoAttacherTest.class); // transaction failure >- testClasses.remove(SavePointTest.class); >- testClasses.remove(ChangeSubscriptionTest.class); // timeout >- testClasses.remove(ExternalReferenceTest.class); // NullPointerException / ObjectNotFoundException >- testClasses.remove(XATransactionTest.class); >- testClasses.remove(LockingManagerTest.class); // Locking not support in Legacy Mode >- testClasses.remove(MultiValuedOfAttributeTest.class); // java.lang.ArrayStoreException >- testClasses.remove(ConflictResolverTest.class); // null value in Attribute >- >- // >- // Bugzilla verifications >- testClasses.remove(Bugzilla_246622_Test.class); >- testClasses.remove(Bugzilla_248915_Test.class); // Failure incomplete resource >- testClasses.remove(Bugzilla_251263_Test.class); >- testClasses.remove(Bugzilla_254489_Test.class); // timeout >- testClasses.remove(Bugzilla_258933_Test.class); >- testClasses.remove(Bugzilla_259695_Test.class); // ArrayIndexOutOfBounds >- testClasses.remove(Bugzilla_260756_Test.class); // ArrayStoreException >- testClasses.remove(Bugzilla_266982_Test.class); >- testClasses.remove(Bugzilla_273565_Test.class); // locking not supported >- testClasses.remove(Bugzilla_279982_Test.class); >+ // testClasses.add(ExternalReferenceTest.class); // null value contraint violated >+ // testClasses.add(XATransactionTest.class);// we shoudl have an exception here >+ >+ // // Legacy only >+ // testClasses.add(GMFTest.class); > } > > @Override >Index: src/org/eclipse/emf/cdo/tests/BranchingTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/BranchingTest.java,v >retrieving revision 1.12 >diff -u -r1.12 BranchingTest.java >--- src/org/eclipse/emf/cdo/tests/BranchingTest.java 29 Mar 2010 15:46:02 -0000 1.12 >+++ src/org/eclipse/emf/cdo/tests/BranchingTest.java 31 Mar 2010 08:17:18 -0000 >@@ -691,7 +691,7 @@ > > CDOID id = CDOUtil.getCDOObject(product).cdoID(); > CDOView view = session.openView(); >- product = (Product1)view.getObject(id); >+ product = (Product1)CDOUtil.getEObject(view.getObject(id)); > > view.setBranch(subBranch); > >Index: src/org/eclipse/emf/cdo/tests/ChangeSubscriptionTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ChangeSubscriptionTest.java,v >retrieving revision 1.24 >diff -u -r1.24 ChangeSubscriptionTest.java >--- src/org/eclipse/emf/cdo/tests/ChangeSubscriptionTest.java 24 Feb 2010 09:04:41 -0000 1.24 >+++ src/org/eclipse/emf/cdo/tests/ChangeSubscriptionTest.java 31 Mar 2010 08:17:18 -0000 >@@ -611,7 +611,7 @@ > } > }.assertNoTimeOut(); > >- assertInstanceOf(Category.class, oldValue[0]); >+ assertInstanceOf(Category.class, CDOUtil.getEObject((EObject)oldValue[0])); > } > > public void testRemoveManyContained() throws Exception >@@ -740,7 +740,7 @@ > } > }.assertNoTimeOut(); > >- assertInstanceOf(OrderDetail.class, oldValue[0]); >+ assertInstanceOf(OrderDetail.class, CDOUtil.getEObject((EObject)oldValue[0])); > } > > public void testRemoveManyXRef() throws Exception >Index: src/org/eclipse/emf/cdo/tests/ConflictResolverTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ConflictResolverTest.java,v >retrieving revision 1.13 >diff -u -r1.13 ConflictResolverTest.java >--- src/org/eclipse/emf/cdo/tests/ConflictResolverTest.java 28 Feb 2010 19:38:01 -0000 1.13 >+++ src/org/eclipse/emf/cdo/tests/ConflictResolverTest.java 31 Mar 2010 08:17:18 -0000 >@@ -60,6 +60,9 @@ > > public void testMergeLocalChangesPerFeature_BasicException() throws Exception > { >+ // Does not work in legacy as long as there is not getter interception >+ skipConfig(LEGACY); >+ > msg("Opening session"); > CDOSession session = openSession(); > >Index: src/org/eclipse/emf/cdo/tests/ContainmentTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/ContainmentTest.java,v >retrieving revision 1.30 >diff -u -r1.30 ContainmentTest.java >--- src/org/eclipse/emf/cdo/tests/ContainmentTest.java 10 Mar 2010 12:14:16 -0000 1.30 >+++ src/org/eclipse/emf/cdo/tests/ContainmentTest.java 31 Mar 2010 08:17:18 -0000 >@@ -404,7 +404,8 @@ > assertEquals(resource1.getContents().get(0), order.eContainer()); > resource2.getContents().remove(order); > >- Order order2 = (Order)container.eGet(container.eClass().getEStructuralFeature("proxyElement")); >+ Order order2 = (Order)CDOUtil.getEObject((EObject)container.eGet(container.eClass().getEStructuralFeature( >+ "proxyElement"))); > assertSame(order, order2); > } > >@@ -453,7 +454,8 @@ > assertEquals(resource1.getContents().get(0), order.eContainer()); > resource2.getContents().remove(order); > >- Order order2 = (Order)container.eGet(container.eClass().getEStructuralFeature("proxyElement")); >+ Order order2 = (Order)CDOUtil.getEObject((EObject)container.eGet(container.eClass().getEStructuralFeature( >+ "proxyElement"))); > assertSame(order, order2); > } > >@@ -632,8 +634,11 @@ > schoolPackage.setNsPrefix("elv"); > schoolPackage.setNsURI("http:///www.elver.org/School"); > schoolPackage.getEClassifiers().add(schoolBookEClass); >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(schoolPackage); >+ } > >- CDOUtil.prepareDynamicEPackage(schoolPackage); > return schoolPackage; > } > >Index: src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java,v >retrieving revision 1.18 >diff -u -r1.18 CrossReferenceTest.java >--- src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java 20 Feb 2010 06:09:04 -0000 1.18 >+++ src/org/eclipse/emf/cdo/tests/CrossReferenceTest.java 31 Mar 2010 08:17:18 -0000 >@@ -319,7 +319,7 @@ > > company.getCustomers().remove(customer); > company.getCustomers().add(customer); >- >+ assertEquals(1, company.getCustomers().size()); > transaction.commit(); > } > >Index: src/org/eclipse/emf/cdo/tests/DynamicPackageTest.java >=================================================================== >RCS file: src/org/eclipse/emf/cdo/tests/DynamicPackageTest.java >diff -N src/org/eclipse/emf/cdo/tests/DynamicPackageTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/emf/cdo/tests/DynamicPackageTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,87 @@ >+/** >+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others. >+ * All rights reserved. This program and the accompanying materials >+ * 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: >+ * Martin Fluegge - initial API and implementation >+ */ >+package org.eclipse.emf.cdo.tests; >+ >+import org.eclipse.emf.cdo.eresource.CDOResource; >+import org.eclipse.emf.cdo.session.CDOSession; >+import org.eclipse.emf.cdo.transaction.CDOTransaction; >+import org.eclipse.emf.cdo.util.CDOUtil; >+ >+import org.eclipse.emf.internal.cdo.DynamicCDOObjectImpl; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EFactory; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EPackage; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.ecore.EcoreFactory; >+import org.eclipse.emf.ecore.EcorePackage; >+import org.eclipse.emf.ecore.impl.DynamicEObjectImpl; >+ >+/** >+ * @author Martin Fluegge >+ */ >+public class DynamicPackageTest extends AbstractCDOTest >+{ >+ protected static EClass mapContainerEClass; >+ >+ public void testDynamicMaps() throws Exception >+ { >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ EPackage dynamicMapEPackge = createPackage(); >+ EFactory dynamicMapEFactoryInstance = dynamicMapEPackge.getEFactoryInstance(); >+ >+ CDOResource resource = transaction.createResource("/test1"); >+ EObject mapContainer = dynamicMapEFactoryInstance.create((EClass)dynamicMapEPackge.getEClassifier("MapContainer")); >+ >+ resource.getContents().add(mapContainer); >+ transaction.commit(); >+ >+ if (!isConfig(LEGACY)) >+ { >+ assertTrue(mapContainer instanceof DynamicCDOObjectImpl); >+ } >+ else >+ { >+ assertTrue(mapContainer instanceof DynamicEObjectImpl); >+ } >+ } >+ >+ public EPackage createPackage() >+ { >+ EcoreFactory theCoreFactory = EcoreFactory.eINSTANCE; >+ EcorePackage theCorePackage = EcorePackage.eINSTANCE; >+ >+ mapContainerEClass = theCoreFactory.createEClass(); >+ mapContainerEClass.setName("MapContainer"); >+ >+ EPackage dynamicMapEPackage = theCoreFactory.createEPackage(); >+ dynamicMapEPackage.setName("DynamicMapPackage"); >+ dynamicMapEPackage.setNsPrefix("dynamicmap"); >+ dynamicMapEPackage.setNsURI("http:///org.mftech.examples.emf.dynamic.map"); >+ >+ dynamicMapEPackage.getEClassifiers().add(mapContainerEClass); >+ >+ EStructuralFeature name = theCoreFactory.createEAttribute(); >+ name.setName("name"); >+ name.setEType(theCorePackage.getEString()); >+ >+ mapContainerEClass.getEStructuralFeatures().add(name); >+ >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(dynamicMapEPackage); >+ } >+ >+ return dynamicMapEPackage; >+ } >+} >Index: src/org/eclipse/emf/cdo/tests/FeatureMapTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/FeatureMapTest.java,v >retrieving revision 1.9 >diff -u -r1.9 FeatureMapTest.java >--- src/org/eclipse/emf/cdo/tests/FeatureMapTest.java 20 Feb 2010 06:09:05 -0000 1.9 >+++ src/org/eclipse/emf/cdo/tests/FeatureMapTest.java 31 Mar 2010 08:17:21 -0000 >@@ -111,8 +111,10 @@ > ExtendedMetaData.INSTANCE.setGroup(bool, fMap); > ExtendedMetaData.INSTANCE.setGroup(ref1, fMap); > ExtendedMetaData.INSTANCE.setGroup(ref2, fMap); >- >- CDOUtil.prepareDynamicEPackage(pkg); >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(pkg); >+ } > > dummyObj = pkg.getEFactoryInstance().create(dummy); > dummyObj.eSet(name, "DummyName"); >Index: src/org/eclipse/emf/cdo/tests/LegacyTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LegacyTest.java,v >retrieving revision 1.7 >diff -u -r1.7 LegacyTest.java >--- src/org/eclipse/emf/cdo/tests/LegacyTest.java 3 Feb 2010 10:24:05 -0000 1.7 >+++ src/org/eclipse/emf/cdo/tests/LegacyTest.java 31 Mar 2010 08:17:21 -0000 >@@ -4,131 +4,53 @@ > * 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 >+ * Martin Fluegge - recreation of the test case > */ > package org.eclipse.emf.cdo.tests; > >+import org.eclipse.emf.cdo.eresource.CDOResource; >+import org.eclipse.emf.cdo.session.CDOSession; >+import org.eclipse.emf.cdo.tests.model1.Customer; >+import org.eclipse.emf.cdo.transaction.CDOTransaction; >+import org.eclipse.emf.cdo.util.CDOUtil; >+import org.eclipse.emf.cdo.util.LegacyModeNotEnabledException; >+ > /** > * @author Eike Stepper > */ > public class LegacyTest extends AbstractCDOTest > { >- // TODO LEGACY >- // public void testCommit() throws Exception >- // { >- // Hook hook = createHook("Mr. Hook"); >- // >- // CDOSession session = openLegacySession(); >- // CDOTransaction transaction = session.openTransaction(); >- // CDOResource resource = transaction.createResource("/test1"); >- // resource.getContents().add(hook); >- // transaction.commit(); >- // >- // CDOObject cdoHook = CDONet4jUtil.getCDOObject(hook); >- // assertEquals(false, CDOLegacyWrapper.isLegacyProxy(cdoHook)); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // assertEquals(CDOState.CLEAN, resource.cdoState()); >- // session.close(); >- // } >- // >- // public void testLoad() throws Exception >- // { >- // { >- // CDOSession session = openLegacySession(); >- // CDOTransaction transaction = session.openTransaction(); >- // CDOResource resource = transaction.createResource("/test1"); >- // resource.getContents().add(createHook("Mr. Hook")); >- // transaction.commit(); >- // session.close(); >- // } >- // >- // CDOSession session = openLegacySession(); >- // CDOTransaction transaction = session.openTransaction(); >- // CDOResource resource = transaction.getResource("/test1"); >- // EList<EObject> contents = resource.getContents(); >- // >- // Hook hook = (Hook)contents.get(0); >- // CDOObject cdoHook = CDONet4jUtil.getCDOObject(hook); >- // assertEquals(false, CDOLegacyWrapper.isLegacyProxy(cdoHook)); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // assertEquals(CDOState.CLEAN, resource.cdoState()); >- // >- // String name = hook.getName(); >- // assertEquals("Mr. Hook", name); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // session.close(); >- // } >- // >- // public void testReferences() throws Exception >- // { >- // { >- // Hook hook = createHook("Mr. Hook"); >- // EList<Hook> children = hook.getChildren(); >- // children.add(createHook("Hook 1")); >- // children.add(createHook("Hook 2")); >- // children.add(createHook("Hook 3")); >- // >- // CDOSession session = openLegacySession(); >- // CDOTransaction transaction = session.openTransaction(); >- // CDOResource resource = transaction.createResource("/test1"); >- // resource.getContents().add(hook); >- // transaction.commit(); >- // >- // CDOObject cdoHook = CDONet4jUtil.getCDOObject(hook); >- // assertEquals(false, CDOLegacyWrapper.isLegacyProxy(cdoHook)); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // assertEquals(CDOState.CLEAN, resource.cdoState()); >- // session.close(); >- // } >- // >- // CDOSession session = openLegacySession(); >- // CDOTransaction transaction = session.openTransaction(); >- // CDOResource resource = transaction.getResource("/test1"); >- // EList<EObject> contents = resource.getContents(); >- // >- // Hook hook = (Hook)contents.get(0); >- // assertNotProxy(hook); >- // >- // CDOObject cdoHook = CDONet4jUtil.getCDOObject(hook); >- // assertEquals(false, CDOLegacyWrapper.isLegacyProxy(cdoHook)); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // >- // EList<Hook> children = hook.getChildren(); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // assertEquals(CDOState.CLEAN, resource.cdoState()); >- // >- // // TODO Should the proxyURI be null for CLEAN? >- // // Hook h = children.get(0); >- // // URI proxyURI = ((InternalEObject)h).eProxyURI(); >- // // assertEquals(null,proxyURI); >- // >- // int size = children.size(); >- // assertEquals(3, size); >- // assertEquals(CDOState.CLEAN, cdoHook.cdoState()); >- // >- // Hook h0 = children.get(0); >- // assertNotProxy(h0); >- // assertEquals("Hook 1", h0.getName()); >- // assertEquals(CDOState.CLEAN, CDONet4jUtil.getCDOObject(h0).cdoState()); >- // >- // Hook h1 = children.get(1); >- // assertNotProxy(h1); >- // assertEquals("Hook 2", h1.getName()); >- // assertEquals(CDOState.CLEAN, CDONet4jUtil.getCDOObject(h1).cdoState()); >- // >- // Hook h2 = children.get(2); >- // assertNotProxy(h2); >- // assertEquals("Hook 3", h2.getName()); >- // assertEquals(CDOState.CLEAN, CDONet4jUtil.getCDOObject(h2).cdoState()); >- // session.close(); >- // } >- // >- // private Hook createHook(String name) >- // { >- // Hook hook = LegacyFactory.eINSTANCE.createHook(); >- // hook.setName(name); >- // return hook; >- // } >+ public void testLegacyModeEnabled() throws Exception >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ customer.setName("Martin Fluegge"); >+ customer.setStreet("ABC Street 7"); >+ customer.setCity("Berlin"); >+ >+ CDOSession session = openSession(); >+ CDOUtil.setLegacyModeDefault(false); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.createResource("/test1"); >+ >+ try >+ { >+ resource.getContents().add(customer); >+ transaction.commit(); >+ >+ if (isConfig(LEGACY)) >+ { >+ fail("LegacyModeNotEnabledException expected"); >+ } >+ } >+ catch (LegacyModeNotEnabledException ex) >+ { >+ if (!isConfig(LEGACY)) >+ { >+ fail("Native mode should not throw an exception here (" + ex.getMessage() + ")"); >+ } >+ } >+ } > } >Index: src/org/eclipse/emf/cdo/tests/LockingManagerTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java,v >retrieving revision 1.20 >diff -u -r1.20 LockingManagerTest.java >--- src/org/eclipse/emf/cdo/tests/LockingManagerTest.java 15 Mar 2010 05:05:56 -0000 1.20 >+++ src/org/eclipse/emf/cdo/tests/LockingManagerTest.java 31 Mar 2010 08:17:22 -0000 >@@ -586,7 +586,7 @@ > > cdoCompany1.cdoWriteLock().lock(); > assertEquals(true, cdoCompany1.cdoWriteLock().isLocked()); >- Company companyFrom2 = (Company)transaction2.getObject(cdoCompany2.cdoID()); >+ Company companyFrom2 = (Company)CDOUtil.getEObject(transaction2.getObject(cdoCompany2.cdoID())); > companyFrom2.setCity("sss"); > transaction2.commit(); > assertEquals(true, cdoCompany1.cdoWriteLock().isLocked()); >Index: src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java,v >retrieving revision 1.51 >diff -u -r1.51 PackageRegistryTest.java >--- src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java 4 Mar 2010 07:03:48 -0000 1.51 >+++ src/org/eclipse/emf/cdo/tests/PackageRegistryTest.java 31 Mar 2010 08:17:22 -0000 >@@ -28,6 +28,7 @@ > import org.eclipse.emf.cdo.tests.model3.subpackage.Class2; > import org.eclipse.emf.cdo.transaction.CDOTransaction; > import org.eclipse.emf.cdo.util.CDOUtil; >+import org.eclipse.emf.cdo.util.LegacyModeNotEnabledException; > > import org.eclipse.emf.common.util.EList; > import org.eclipse.emf.common.util.URI; >@@ -299,7 +300,11 @@ > c.setName("DClass"); > > p.getEClassifiers().add(c); >- CDOUtil.prepareDynamicEPackage(p); >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(p); >+ } >+ > EPackage.Registry.INSTANCE.put(nsURI, p); > > CDOSession session = openSession(); >@@ -337,6 +342,11 @@ > EPackage.Registry.INSTANCE.put(nsURI, p); > > CDOSession session = openSession(); >+ >+ // The default case is that legacy is disabled. For our test bed it is always enabled. >+ // To test the default case we must switch of legacy here. >+ CDOUtil.setLegacyModeDefault(false); >+ > CDOTransaction transaction = session.openTransaction(); > CDOResource res = transaction.createResource("/res"); > >@@ -347,9 +357,9 @@ > transaction.commit(); > session.close(); > >- fail("Expected: IllegalArgumentException: Use CDOFactory to create dynamic object"); >+ fail("LegacyModeNotEnabledException expected"); > } >- catch (IllegalArgumentException success) >+ catch (LegacyModeNotEnabledException expected) > { > // SUCCESS > } >Index: src/org/eclipse/emf/cdo/tests/PerformanceTest.java >=================================================================== >RCS file: src/org/eclipse/emf/cdo/tests/PerformanceTest.java >diff -N src/org/eclipse/emf/cdo/tests/PerformanceTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/emf/cdo/tests/PerformanceTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,379 @@ >+/** >+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others. >+ * All rights reserved. This program and the accompanying materials >+ * 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: >+ * Martin Fluegge - initial API and implementation >+ */ >+package org.eclipse.emf.cdo.tests; >+ >+import org.eclipse.emf.cdo.eresource.CDOResource; >+import org.eclipse.emf.cdo.session.CDOSession; >+import org.eclipse.emf.cdo.tests.model1.Customer; >+import org.eclipse.emf.cdo.tests.model1.SalesOrder; >+import org.eclipse.emf.cdo.transaction.CDOTransaction; >+import org.eclipse.emf.cdo.util.CDOUtil; >+ >+import org.eclipse.net4j.util.io.IOUtil; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EPackage; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.ecore.EcoreFactory; >+import org.eclipse.emf.ecore.EcorePackage; >+ >+import org.junit.AfterClass; >+ >+import java.io.File; >+import java.io.FileWriter; >+import java.io.IOException; >+import java.util.Date; >+import java.util.HashMap; >+import java.util.Map; >+ >+/** >+ * @author Martin Fluegge >+ */ >+public class PerformanceTest extends AbstractCDOTest >+{ >+ protected static EClass mapContainerEClass; >+ >+ private static Map<String, TimeTaker> results = new HashMap<String, TimeTaker>(); >+ >+ public void testSimpleTestNoCommit() throws Exception >+ { >+ TimeTaker t = start("testSimpleTestNoCommit"); >+ >+ getModel1Factory().createCustomer(); >+ for (int i = 0; i < 50000; i++) >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ customer.setCity("Barovia"); >+ customer.setName("Strahd von Zarovich"); >+ customer.setStreet("Necromancer Road 5"); >+ >+ for (int c = 0; c < 50; c++) >+ { >+ SalesOrder salesOrder = getModel1Factory().createSalesOrder(); >+ salesOrder.setCustomer(customer); >+ salesOrder.setId(c); >+ } >+ } >+ >+ finish(t); >+ msg(t.getTiming()); >+ } >+ >+ public void testSimpleTestWithCommit() throws Exception >+ { >+ TimeTaker t = start("testBasicCommitPerformance"); >+ >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.createResource("/test1"); >+ getModel1Factory().createCustomer(); >+ for (int i = 0; i < 500; i++) >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ customer.setCity("Barovia"); >+ customer.setName("Strahd von Zarovich"); >+ customer.setStreet("Necromancer Road 5"); >+ >+ for (int c = 0; c < 5; c++) >+ { >+ SalesOrder salesOrder = getModel1Factory().createSalesOrder(); >+ salesOrder.setCustomer(customer); >+ salesOrder.setId(c); >+ resource.getContents().add(salesOrder); >+ } >+ >+ resource.getContents().add(customer); >+ } >+ >+ transaction.commit(); >+ >+ finish(t); >+ msg(t.getTiming()); >+ } >+ >+ // public void testDynamicPerformance() throws Exception >+ // { >+ // >+ // TimeTaker t = start("testDynamicPerformance"); >+ // CDOSession session = openSession(); >+ // CDOTransaction transaction = session.openTransaction(); >+ // EPackage dynamicMapEPackge = createPackage(); >+ // EFactory dynamicMapEFactoryInstance = dynamicMapEPackge.getEFactoryInstance(); >+ // >+ // CDOResource resource = transaction.createResource("/test1"); >+ // for (int i = 0; i < 5000; i++) >+ // { >+ // >+ // EObject mapContainer = dynamicMapEFactoryInstance >+ // .create((EClass)dynamicMapEPackge.getEClassifier("MapContainer")); >+ // >+ // resource.getContents().add(mapContainer); >+ // >+ // } >+ // transaction.commit(); >+ // >+ // finish(t); >+ // } >+ >+ public void testLoadAnStoreDataPerformance() throws Exception >+ { >+ TimeTaker t = start("testLoadAnStoreDataPerformance"); >+ >+ { >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.createResource("/test1"); >+ getModel1Factory().createCustomer(); >+ for (int i = 0; i < 500; i++) >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ customer.setCity("Barovia"); >+ customer.setName("Strahd von Zarovich"); >+ customer.setStreet("Necromancer Road 5"); >+ >+ for (int c = 0; c < 5; c++) >+ { >+ SalesOrder salesOrder = getModel1Factory().createSalesOrder(); >+ salesOrder.setCustomer(customer); >+ salesOrder.setId(c); >+ resource.getContents().add(salesOrder); >+ } >+ >+ resource.getContents().add(customer); >+ } >+ >+ transaction.commit(); >+ session.close(); >+ } >+ >+ { >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.getResource("/test1"); >+ >+ int i = 0; >+ for (EObject o : resource.getContents()) >+ { >+ if (o instanceof Customer) >+ { >+ Customer customer = (Customer)o; >+ customer.setCity("Dargaard"); >+ customer.setName("Lord Soth"); >+ customer.setStreet("Death Knight Alley 7"); >+ >+ for (SalesOrder salesOrder : customer.getSalesOrders()) >+ { >+ salesOrder.setId(salesOrder.getId() + 1); >+ } >+ >+ i++; >+ } >+ } >+ >+ assertEquals(500, i); >+ >+ transaction.commit(); >+ session.close(); >+ } >+ >+ finish(t); >+ msg(t.getTiming()); >+ } >+ >+ public void testLoadAnStoreDataPreAddPerformance() throws Exception >+ { >+ TimeTaker t = start("testLoadAnStoreDataPreAddPerformance"); >+ >+ { >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.createResource("/test1"); >+ getModel1Factory().createCustomer(); >+ for (int i = 0; i < 500; i++) >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ resource.getContents().add(customer); >+ customer.setCity("Barovia"); >+ customer.setName("Strahd von Zarovich"); >+ customer.setStreet("Necromancer Road 5"); >+ >+ for (int c = 0; c < 5; c++) >+ { >+ SalesOrder salesOrder = getModel1Factory().createSalesOrder(); >+ resource.getContents().add(salesOrder); >+ salesOrder.setCustomer(customer); >+ salesOrder.setId(c); >+ } >+ } >+ >+ transaction.commit(); >+ session.close(); >+ } >+ >+ { >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.getResource("/test1"); >+ >+ int i = 0; >+ for (EObject o : resource.getContents()) >+ { >+ if (o instanceof Customer) >+ { >+ Customer customer = (Customer)o; >+ customer.setCity("Dargaard"); >+ customer.setName("Lord Soth"); >+ customer.setStreet("Death Knight Alley 7"); >+ >+ for (SalesOrder salesOrder : customer.getSalesOrders()) >+ { >+ salesOrder.setId(salesOrder.getId() + 1); >+ } >+ >+ i++; >+ } >+ } >+ >+ assertEquals(500, i); >+ >+ transaction.commit(); >+ session.close(); >+ } >+ >+ finish(t); >+ msg(t.getTiming()); >+ } >+ >+ public void testAddRemove() throws Exception >+ { >+ TimeTaker t = start("testAddRemove"); >+ >+ CDOSession session = openSession(); >+ CDOTransaction transaction = session.openTransaction(); >+ CDOResource resource = transaction.createResource("/test1"); >+ for (int i = 0; i < 100; i++) >+ { >+ Customer customer = getModel1Factory().createCustomer(); >+ customer.setName("Azalin Rex"); >+ customer.setCity("Darkon"); >+ >+ resource.getContents().add(customer); >+ transaction.commit(); >+ >+ resource.getContents().remove(resource.getContents().size() - 1); >+ transaction.commit(); >+ >+ resource.getContents().add(customer); >+ transaction.commit(); >+ } >+ >+ finish(t); >+ msg(t.getTiming()); >+ } >+ >+ public EPackage createPackage() >+ { >+ EcoreFactory theCoreFactory = EcoreFactory.eINSTANCE; >+ EcorePackage theCorePackage = EcorePackage.eINSTANCE; >+ >+ mapContainerEClass = theCoreFactory.createEClass(); >+ mapContainerEClass.setName("MapContainer"); >+ >+ EPackage dynamicMapEPackage = theCoreFactory.createEPackage(); >+ dynamicMapEPackage.setName("DynamicMapPackage"); >+ dynamicMapEPackage.setNsPrefix("dynamicmap"); >+ dynamicMapEPackage.setNsURI("http:///org.mftech.examples.emf.dynamic.map"); >+ dynamicMapEPackage.getEClassifiers().add(mapContainerEClass); >+ >+ EStructuralFeature name = theCoreFactory.createEAttribute(); >+ name.setName("name"); >+ name.setEType(theCorePackage.getEString()); >+ >+ mapContainerEClass.getEStructuralFeatures().add(name); >+ >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(dynamicMapEPackage); >+ } >+ >+ return dynamicMapEPackage; >+ } >+ >+ private TimeTaker start(String testName) >+ { >+ TimeTaker t = new TimeTaker(); >+ results.put(testName, t); >+ t.setStart(System.currentTimeMillis()); >+ return t; >+ } >+ >+ private void finish(TimeTaker t) >+ { >+ t.setEnd(System.currentTimeMillis()); >+ } >+ >+ /** >+ * @author Martin Fluegge >+ */ >+ private static class TimeTaker >+ { >+ private long start; >+ >+ private long end; >+ >+ public void setStart(long start) >+ { >+ this.start = start; >+ } >+ >+ public void setEnd(long end) >+ { >+ this.end = end; >+ } >+ >+ public long getTiming() >+ { >+ return end - start; >+ } >+ } >+ >+ // A fake because afterClass does not seem to work :( >+ @AfterClass >+ public void testTearDown() throws IOException >+ { >+ String ext = "NATIVE"; >+ if (isConfig(LEGACY)) >+ { >+ ext = "LEGACY"; >+ } >+ >+ String location = System.getProperty("user.home") + "/cdo_Performance_" + ext + "_" + new Date().getTime() + ".csv"; >+ System.out.println("Writing performance results to: " + location); >+ File file = new File(location); >+ FileWriter fileWriter = new FileWriter(file); >+ >+ try >+ { >+ StringBuffer stringBuffer = new StringBuffer(); >+ for (String key : results.keySet()) >+ { >+ stringBuffer.append(key + ";" + results.get(key).getTiming() + "\n"); >+ } >+ >+ fileWriter.write(stringBuffer.toString()); >+ } >+ finally >+ { >+ IOUtil.close(fileWriter); >+ } >+ } >+} >Index: src/org/eclipse/emf/cdo/tests/RollbackTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RollbackTest.java,v >retrieving revision 1.14 >diff -u -r1.14 RollbackTest.java >--- src/org/eclipse/emf/cdo/tests/RollbackTest.java 20 Feb 2010 06:09:04 -0000 1.14 >+++ src/org/eclipse/emf/cdo/tests/RollbackTest.java 31 Mar 2010 08:17:24 -0000 >@@ -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 > */ >Index: src/org/eclipse/emf/cdo/tests/SetFeatureTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SetFeatureTest.java,v >retrieving revision 1.2 >diff -u -r1.2 SetFeatureTest.java >--- src/org/eclipse/emf/cdo/tests/SetFeatureTest.java 11 Mar 2010 20:34:39 -0000 1.2 >+++ src/org/eclipse/emf/cdo/tests/SetFeatureTest.java 31 Mar 2010 08:17:24 -0000 >@@ -30,14 +30,12 @@ > */ > public class SetFeatureTest extends AbstractCDOTest > { >- // TODO clarify the problems with the default > public void testUnsettableDateNoDefault_SetDefault() throws Exception > { > testIsSet(getModel2Factory().createUnsettable1(), getModel2Package().getUnsettable1_UnsettableDate(), > getModel2Package().getUnsettable1_UnsettableDate().getDefaultValue()); > } > >- // TODO clarify the problems with the default > public void testUnsettableStringNoDefault_SetDefault() throws Exception > { > testIsSet(getModel2Factory().createUnsettable1(), getModel2Package().getUnsettable1_UnsettableString(), >@@ -316,14 +314,12 @@ > .getNotUnsettableWithDefault_NotUnsettableDouble().getDefaultValue()); > } > >- // TODO clarify the problems with the default > public void testNotUnsettableWithDefaultVAT() throws Exception > { > testIsSet(getModel2Factory().createNotUnsettableWithDefault(), getModel2Package() > .getNotUnsettableWithDefault_NotUnsettableVAT(), VAT.VAT7); > } > >- // TODO clarify the problems with the default > public void testNotUnsettableWithDefaultVAT_SetDefault() throws Exception > { > testIsSet(getModel2Factory().createNotUnsettableWithDefault(), getModel2Package() >@@ -646,14 +642,12 @@ > .getDefaultValue()); > } > >- // TODO clarify the problems with the default > public void testUnsettableWithDefaultVAT() throws Exception > { > testIsSet(getModel2Factory().createUnsettable2WithDefault(), getModel2Package() > .getUnsettable2WithDefault_UnsettableVAT(), VAT.VAT7); > } > >- // TODO clarify the problems with the default > public void testUnsettableWithDefaultVAT_SetDefault() throws Exception > { > testIsSet(getModel2Factory().createUnsettable2WithDefault(), getModel2Package() >@@ -714,6 +708,9 @@ > .eIsSet(feature)); > > session.close(); >+ >+ // ---------- open new session -------------- >+ > session = openSession(); > > transaction = session.openTransaction(); >@@ -743,6 +740,9 @@ > .eIsSet(feature)); > > session.close(); >+ >+ // ---------- open new session -------------- >+ > session = openSession(); > > transaction = session.openTransaction(); >Index: src/org/eclipse/emf/cdo/tests/UnsetTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/UnsetTest.java,v >retrieving revision 1.8 >diff -u -r1.8 UnsetTest.java >--- src/org/eclipse/emf/cdo/tests/UnsetTest.java 11 Mar 2010 20:34:39 -0000 1.8 >+++ src/org/eclipse/emf/cdo/tests/UnsetTest.java 31 Mar 2010 08:17:24 -0000 >@@ -414,8 +414,10 @@ > .getEIntegerObject()); > objectElement.setUnsettable(true); > objectElement.setDefaultValue(42); >- >- CDOUtil.prepareDynamicEPackage(pkg); >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(pkg); >+ } > > { > EObject test1 = EcoreUtil.create(cls); >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java,v >retrieving revision 1.13 >diff -u -r1.13 Bugzilla_246622_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java 20 Feb 2010 06:09:05 -0000 1.13 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_246622_Test.java 31 Mar 2010 08:17:24 -0000 >@@ -46,7 +46,7 @@ > EStructuralFeature order_OrderDetailFeature = getModel1Package().getOrder_OrderDetails(); > assertEquals(orderDetail, CDOUtil.getCDOObject(order).cdoRevision().data().get(order_OrderDetailFeature, 0)); > >- assertEquals(order, CDOUtil.getCDOObject(orderDetail).cdoRevision().data().getContainerID()); >+ assertEquals(CDOUtil.getCDOObject(order), CDOUtil.getCDOObject(orderDetail).cdoRevision().data().getContainerID()); > > Order order2 = getModel1Factory().createOrder(); > OrderDetail orderDetail2 = getModel1Factory().createOrderDetail(); >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248915_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248915_Test.java,v >retrieving revision 1.12 >diff -u -r1.12 Bugzilla_248915_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248915_Test.java 16 Mar 2010 14:48:15 -0000 1.12 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_248915_Test.java 31 Mar 2010 08:17:25 -0000 >@@ -79,8 +79,15 @@ > CDOResource supplierResource2 = transaction2.getResource("/supplierResource"); > Supplier savedSupplier = (Supplier)supplierResource2.getContents().get(0); > >- /* Confirm the presence of supplierResource2 in transaction2's resourceSet */ >- assertEquals(1, transaction2.getResourceSet().getResources().size()); >+ if (!isConfig(LEGACY)) >+ { >+ /* Confirm the presence of supplierResource2 in transaction2's resourceSet */ >+ assertEquals(1, transaction2.getResourceSet().getResources().size()); >+ } >+ else >+ {// legacy mode loads the whole tree. So there will be 3 resources >+ assertEquals(2, transaction2.getResourceSet().getResources().size()); >+ } > > for (PurchaseOrder po : savedSupplier.getPurchaseOrders()) > { >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_254489_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_254489_Test.java,v >retrieving revision 1.15 >diff -u -r1.15 Bugzilla_254489_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_254489_Test.java 24 Feb 2010 09:04:40 -0000 1.15 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_254489_Test.java 31 Mar 2010 08:17:25 -0000 >@@ -21,6 +21,8 @@ > import org.eclipse.emf.cdo.util.CDOUtil; > import org.eclipse.emf.cdo.view.CDOAdapterPolicy; > >+import org.eclipse.emf.ecore.EObject; >+ > /** > * CDOTransaction.postCommit not adjusting the Transaction/View reference > * <p> >@@ -69,7 +71,7 @@ > } > }.assertNoTimeOut(); > >- Category category2 = (Category)companyA2Adapter.getNotifications()[0].getNewValue(); >+ Category category2 = (Category)CDOUtil.getEObject((EObject)companyA2Adapter.getNotifications()[0].getNewValue()); > assertNotSame(category2, category1A); > assertSame(transaction2, CDOUtil.getCDOObject(category2).cdoView()); > } >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_266982_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_266982_Test.java,v >retrieving revision 1.5 >diff -u -r1.5 Bugzilla_266982_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_266982_Test.java 20 Feb 2010 06:09:05 -0000 1.5 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_266982_Test.java 31 Mar 2010 08:17:25 -0000 >@@ -50,7 +50,8 @@ > { > CDOSession session = openSession(); > CDOTransaction transaction = session.openTransaction(); >- Customer customerToLoad = (Customer)transaction.getObject(CDOUtil.getCDOObject(customer).cdoID()); >+ Customer customerToLoad = (Customer)CDOUtil.getEObject(transaction.getObject(CDOUtil.getCDOObject(customer) >+ .cdoID())); > while (!done[0]) > { > // Could fail if the attach is not thread safe >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_273565_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_273565_Test.java,v >retrieving revision 1.16 >diff -u -r1.16 Bugzilla_273565_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_273565_Test.java 11 Mar 2010 11:05:35 -0000 1.16 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_273565_Test.java 31 Mar 2010 08:17:25 -0000 >@@ -66,7 +66,7 @@ > { > CDOSession session = openSession(); > CDOTransaction transaction = session.openTransaction(); >- OrderDetail orderDetail = (OrderDetail)transaction.getObject(id); >+ OrderDetail orderDetail = (OrderDetail)CDOUtil.getEObject(transaction.getObject(id)); > > try > { >@@ -272,7 +272,7 @@ > transaction.commit(); > > CDOTransaction transaction2 = session.openTransaction(); >- OrderDetail orderDetail2 = transaction2.getObject(orderDetail); >+ OrderDetail orderDetail2 = (OrderDetail)CDOUtil.getEObject(transaction2.getObject(orderDetail)); > > CDOUtil.getCDOObject(orderDetail).cdoWriteLock().lock(); > orderDetail.setPrice(2); >Index: src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_279982_Test.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_279982_Test.java,v >retrieving revision 1.4 >diff -u -r1.4 Bugzilla_279982_Test.java >--- src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_279982_Test.java 20 Feb 2010 06:09:05 -0000 1.4 >+++ src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_279982_Test.java 31 Mar 2010 08:17:25 -0000 >@@ -33,7 +33,8 @@ > public class Bugzilla_279982_Test extends AbstractCDOTest > { > public void testBugzilla_279982_Single() throws Exception >- { >+ {// as log as there is no getter interception, stale reference cannot be detected for legacy >+ skipConfig(LEGACY); > CDOSession session = openSession(); > CDOTransaction tx = session.openTransaction(); > CDOResource res = tx.getOrCreateResource("/resource1"); >@@ -98,7 +99,8 @@ > } > > public void testBugzilla_279982_Multi() throws Exception >- { >+ {// as log as there is no getter interception, stale reference cannot be detected for legacy >+ skipConfig(LEGACY); > CDOSession session = openSession(); > CDOTransaction tx = session.openTransaction(); > CDOResource res = tx.getOrCreateResource("/resource1"); >@@ -147,7 +149,8 @@ > } > > public void testBugzilla_279982_Multi_RevisionPrefetchingPolicy() throws Exception >- { >+ {// as log as there is no getter interception, stale reference cannot be detected for legacy >+ skipConfig(LEGACY); > CDOSession session = openSession(); > { > CDOTransaction tx = session.openTransaction(); >Index: src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java,v >retrieving revision 1.19 >diff -u -r1.19 SessionConfig.java >--- src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java 20 Feb 2010 06:09:06 -0000 1.19 >+++ src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java 31 Mar 2010 08:17:25 -0000 >@@ -18,6 +18,7 @@ > import org.eclipse.emf.cdo.tests.config.IConfig; > import org.eclipse.emf.cdo.tests.config.IRepositoryConfig; > import org.eclipse.emf.cdo.tests.config.ISessionConfig; >+import org.eclipse.emf.cdo.util.CDOUtil; > > import org.eclipse.net4j.acceptor.IAcceptor; > import org.eclipse.net4j.connector.IConnector; >@@ -147,6 +148,7 @@ > > protected void configureSession(CDOSession session) > { >+ CDOUtil.setLegacyModeDefault(true); > } > > private void removeDynamicPackagesFromGlobalRegistry() >@@ -241,6 +243,7 @@ > @Override > protected void configureSession(CDOSession session) > { >+ super.configureSession(session); > ((org.eclipse.emf.cdo.net4j.CDOSession)session).options().getProtocol().setTimeout(-1); > } > >#P org.eclipse.emf.cdo.tests.db >Index: src/org/eclipse/emf/cdo/tests/db/DBStoreTest.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests.db/src/org/eclipse/emf/cdo/tests/db/DBStoreTest.java,v >retrieving revision 1.6 >diff -u -r1.6 DBStoreTest.java >--- src/org/eclipse/emf/cdo/tests/db/DBStoreTest.java 2 Mar 2010 10:03:39 -0000 1.6 >+++ src/org/eclipse/emf/cdo/tests/db/DBStoreTest.java 31 Mar 2010 08:17:26 -0000 >@@ -136,8 +136,10 @@ > > assertEquals(cust1ref, cust1); > assertEquals(cust2ref, cust2); >- >- CDOUtil.prepareDynamicEPackage(pkg); >+ if (!isConfig(LEGACY)) >+ { >+ CDOUtil.prepareDynamicEPackage(pkg); >+ } > > { > EObject obj1 = EcoreUtil.create(clz); >#P org.eclipse.emf.cdo.tests.model3 >Index: src/org/eclipse/emf/cdo/tests/legacy/model3/impl/Model3FactoryImpl.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/tests/org.eclipse.emf.cdo.tests.model3/src/org/eclipse/emf/cdo/tests/legacy/model3/impl/Model3FactoryImpl.java,v >retrieving revision 1.10 >diff -u -r1.10 Model3FactoryImpl.java >--- src/org/eclipse/emf/cdo/tests/legacy/model3/impl/Model3FactoryImpl.java 22 Feb 2010 17:19:23 -0000 1.10 >+++ src/org/eclipse/emf/cdo/tests/legacy/model3/impl/Model3FactoryImpl.java 31 Mar 2010 08:17:27 -0000 >@@ -169,21 +169,21 @@ > /** > * <!-- begin-user-doc --> <!-- end-user-doc --> > * >- * @generated >+ * @generated NOT > */ > public Point createPointFromString(EDataType eDataType, String initialValue) > { >- return (Point)super.createFromString(eDataType, initialValue); >+ return Point.parse(initialValue); > } > > /** > * <!-- begin-user-doc --> <!-- end-user-doc --> > * >- * @generated >+ * @generated NOT > */ > public String convertPointToString(EDataType eDataType, Object instanceValue) > { >- return super.convertToString(eDataType, instanceValue); >+ return ((Point)instanceValue).toString(); > } > > /** >#P org.eclipse.emf.cdo.ui >Index: src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java,v >retrieving revision 1.111 >diff -u -r1.111 CDOEditor.java >--- src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java 17 Mar 2010 06:06:45 -0000 1.111 >+++ src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java 31 Mar 2010 08:17:29 -0000 >@@ -30,7 +30,6 @@ > import org.eclipse.emf.cdo.util.CDOUtil; > import org.eclipse.emf.cdo.view.CDOView; > >-import org.eclipse.emf.internal.cdo.CDOLegacyWrapper; > import org.eclipse.emf.internal.cdo.CDOStateMachine; > > import org.eclipse.net4j.util.transaction.TransactionException; >@@ -1268,7 +1267,7 @@ > @Override > protected void objectInvalidated(InternalCDOObject cdoObject) > { >- if (cdoObject instanceof CDOLegacyWrapper) >+ if (CDOUtil.isLegacyObject(cdoObject)) > { > CDOStateMachine.INSTANCE.read(cdoObject); > } >#P org.eclipse.emf.cdo.ui.ide >Index: src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java >=================================================================== >RCS file: /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.cdo/plugins/org.eclipse.emf.cdo.ui.ide/src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java,v >retrieving revision 1.17 >diff -u -r1.17 RepositoryContentProvider.java >--- src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java 16 Mar 2010 13:23:28 -0000 1.17 >+++ src/org/eclipse/emf/cdo/ui/ide/RepositoryContentProvider.java 31 Mar 2010 08:17:31 -0000 >@@ -28,11 +28,11 @@ > import org.eclipse.emf.cdo.ui.ide.Node.SessionsNode; > import org.eclipse.emf.cdo.ui.internal.ide.actions.RemoveResourceActionDelegate; > import org.eclipse.emf.cdo.ui.internal.ide.bundle.OM; >+import org.eclipse.emf.cdo.util.CDOUtil; > import org.eclipse.emf.cdo.view.CDOView; > import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent; > import org.eclipse.emf.cdo.view.CDOViewTargetChangedEvent; > >-import org.eclipse.emf.internal.cdo.CDOLegacyWrapper; > import org.eclipse.emf.internal.cdo.CDOStateMachine; > > import org.eclipse.net4j.util.container.ContainerEventAdapter; >@@ -45,9 +45,9 @@ > import org.eclipse.emf.common.notify.Notifier; > import org.eclipse.emf.edit.EMFEditPlugin; > import org.eclipse.emf.edit.provider.ComposedAdapterFactory; >+import org.eclipse.emf.edit.provider.ComposedAdapterFactory.Descriptor.Registry; > import org.eclipse.emf.edit.provider.ITreeItemContentProvider; > import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; >-import org.eclipse.emf.edit.provider.ComposedAdapterFactory.Descriptor.Registry; > import org.eclipse.emf.spi.cdo.InternalCDOObject; > > import org.eclipse.core.resources.IProject; >@@ -359,7 +359,7 @@ > @Override > protected void objectInvalidated(InternalCDOObject cdoObject) > { >- if (cdoObject instanceof CDOLegacyWrapper) >+ if (CDOUtil.isLegacyObject(cdoObject)) > { > CDOStateMachine.INSTANCE.read(cdoObject); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 247226
:
112514
|
112894
|
134866
|
151009
|
151634
|
151651
|
152232
|
153867
|
153868
|
155030
|
155031
|
155181
|
155182
|
155400
|
163497
| 163499