diff options
author | Eike Stepper | 2009-03-10 09:16:35 +0000 |
---|---|---|
committer | Eike Stepper | 2009-03-10 09:16:35 +0000 |
commit | 4752de0d0aaf78663256c0df69798ad816570ad5 (patch) | |
tree | 77424c6f93b01e4994462bd66089abb1172eb5a9 | |
parent | 6e5e92176acbcd85a4fedf250bfa2bb7b2d2a4ad (diff) | |
download | cdo-4752de0d0aaf78663256c0df69798ad816570ad5.tar.gz cdo-4752de0d0aaf78663256c0df69798ad816570ad5.tar.xz cdo-4752de0d0aaf78663256c0df69798ad816570ad5.zip |
[265435] Replace CDOModelElements by EModelElements
https://bugs.eclipse.org/bugs/show_bug.cgi?id=265435
7 files changed, 79 insertions, 43 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java index d6f2c863ec..a4b9a82a68 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java @@ -224,26 +224,23 @@ public final class CDOModelUtil public static CDOPackageInfo getPackageInfo(EPackage ePackage, CDOPackageRegistry packageRegistry) { - EList<Adapter> adapters = ePackage.eAdapters(); - for (int i = 0, size = adapters.size(); i < size; ++i) + synchronized (ePackage) { - Adapter adapter = adapters.get(i); - if (adapter instanceof CDOPackageInfo) + EList<Adapter> adapters = ePackage.eAdapters(); + for (int i = 0, size = adapters.size(); i < size; ++i) { - CDOPackageInfo packageInfo = (CDOPackageInfo)adapter; - if (packageInfo.getPackageUnit().getPackageRegistry() == packageRegistry) + Adapter adapter = adapters.get(i); + if (adapter instanceof CDOPackageInfo) { - return packageInfo; + CDOPackageInfo packageInfo = (CDOPackageInfo)adapter; + if (packageInfo.getPackageUnit().getPackageRegistry() == packageRegistry) + { + return packageInfo; + } } } } - // Object value = packageRegistry.get(ePackage.getNsURI()); - // if (value instanceof CDOPackageInfo) - // { - // return (CDOPackageInfo)value; - // } - return null; } @@ -260,15 +257,17 @@ public final class CDOModelUtil public static CDOClassInfo getClassInfo(EClass eClass) { - EList<Adapter> adapters = eClass.eAdapters(); - CDOClassInfo classInfo = (CDOClassInfo)EcoreUtil.getAdapter(adapters, CDOClassInfo.class); - if (classInfo == null) + synchronized (eClass) { - classInfo = new CDOClassInfoImpl(); - adapters.add(classInfo); + EList<Adapter> adapters = eClass.eAdapters(); + CDOClassInfo classInfo = (CDOClassInfo)EcoreUtil.getAdapter(adapters, CDOClassInfo.class); + if (classInfo == null) + { + classInfo = new CDOClassInfoImpl(); + adapters.add(classInfo); + } + return classInfo; } - - return classInfo; } public static EStructuralFeature[] getAllPersistentFeatures(EClass eClass) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java index 3a9a0628e7..52344841a0 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java @@ -424,10 +424,13 @@ public final class EMFUtil public static void addAdapter(Notifier notifier, Adapter adapter) { - EList<Adapter> adapters = notifier.eAdapters(); - if (!adapters.contains(adapter)) + synchronized (notifier) { - adapters.add(adapter); + EList<Adapter> adapters = notifier.eAdapters(); + if (!adapters.contains(adapter)) + { + adapters.add(adapter); + } } } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java index d8b3a33e72..ffbc70f99b 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java @@ -201,17 +201,17 @@ public class CDOPackageRegistryImpl extends EPackageRegistryImpl implements Inte resetInternalCaches(); } - public synchronized InternalCDOPackageInfo getPackageInfo(Object keyOrValue) + public synchronized InternalCDOPackageInfo getPackageInfo(Object value) { LifecycleUtil.checkActive(this); - if (keyOrValue instanceof CDOPackageInfo) + if (value instanceof CDOPackageInfo) { - return (InternalCDOPackageInfo)keyOrValue; + return (InternalCDOPackageInfo)value; } - if (keyOrValue instanceof EPackage) + if (value instanceof EPackage) { - EPackage ePackage = (EPackage)keyOrValue; + EPackage ePackage = (EPackage)value; InternalCDOPackageInfo packageInfo = (InternalCDOPackageInfo)CDOModelUtil.getPackageInfo(ePackage, this); if (packageInfo != null) { @@ -226,12 +226,6 @@ public class CDOPackageRegistryImpl extends EPackageRegistryImpl implements Inte } } - if (keyOrValue instanceof String) - { - Object value = get(keyOrValue); - return getPackageInfo(value); - } - return null; } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java index 56fd319b7a..6fc9ea4f84 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java @@ -196,7 +196,10 @@ public class CDOPackageUnitImpl implements InternalCDOPackageUnit EPackage ePackage = packageInfo.getEPackage(false); if (ePackage != null) { - ePackage.eAdapters().remove(packageInfo); + synchronized (ePackage) + { + ePackage.eAdapters().remove(packageInfo); + } } } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java index 3295dafe7c..cbb16587f3 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java @@ -43,7 +43,7 @@ public interface InternalCDOPackageRegistry extends CDOPackageRegistry, ILifecyc public void putPackageUnit(InternalCDOPackageUnit packageUnit); - public InternalCDOPackageInfo getPackageInfo(Object keyOrValue); + public InternalCDOPackageInfo getPackageInfo(Object value); /** * Returns all package infos that are registered in this package registry. diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java index e3efdd1cbf..6c15210e8d 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java @@ -15,11 +15,12 @@ import org.eclipse.emf.cdo.common.io.CDODataOutput; import org.eclipse.emf.cdo.common.model.CDOModelUtil; import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; import org.eclipse.emf.cdo.internal.server.bundle.OM; -import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageInfo; import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; import org.eclipse.net4j.util.om.trace.ContextTracer; +import org.eclipse.emf.ecore.EPackage; + import java.io.IOException; /** @@ -50,12 +51,12 @@ public class LoadPackagesIndication extends CDOReadIndication protected void responding(CDODataOutput out) throws IOException { InternalCDOPackageRegistry packageRegistry = getRepository().getPackageRegistry(); - InternalCDOPackageInfo packageInfo = packageRegistry.getPackageInfo(packageUnitID); - if (packageInfo == null) + EPackage ePackage = packageRegistry.getEPackage(packageUnitID); + if (ePackage == null) { throw new IllegalStateException("Package unit not found: " + packageUnitID); } - CDOModelUtil.writePackage(out, packageInfo.getEPackage(), true, packageRegistry); + CDOModelUtil.writePackage(out, ePackage, true, packageRegistry); } } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java index 63812f3b26..b64be0a821 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java @@ -21,11 +21,15 @@ import org.eclipse.net4j.acceptor.IAcceptor; import org.eclipse.net4j.connector.IConnector; import org.eclipse.net4j.jvm.JVMUtil; import org.eclipse.net4j.tcp.TCPUtil; +import org.eclipse.net4j.util.event.IListener; +import org.eclipse.net4j.util.lifecycle.ILifecycle; +import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.impl.EPackageImpl; +import java.util.HashSet; import java.util.Set; /** @@ -37,6 +41,10 @@ public abstract class SessionConfig extends Config implements ISessionConfig private static final long serialVersionUID = 1L; + private transient Set<CDOSession> sessions; + + private transient IListener sessionListener; + public SessionConfig(String name) { super(name); @@ -96,15 +104,33 @@ public abstract class SessionConfig extends Config implements ISessionConfig return session; } + public CDOSession openSession() + { + return openSession(IRepositoryConfig.REPOSITORY_NAME); + } + public CDOSession openSession(String repositoryName) { CDOSessionConfiguration configuration = createSessionConfiguration(repositoryName); - return configuration.openSession(); + CDOSession session = configuration.openSession(); + session.addListener(sessionListener); + sessions.add(session); + return session; } - public CDOSession openSession() + @Override + public void setUp() throws Exception { - return openSession(IRepositoryConfig.REPOSITORY_NAME); + super.setUp(); + sessions = new HashSet<CDOSession>(); + sessionListener = new LifecycleEventAdapter() + { + @Override + protected void onDeactivated(ILifecycle session) + { + sessions.remove(session); + } + }; } @Override @@ -112,6 +138,16 @@ public abstract class SessionConfig extends Config implements ISessionConfig { try { + for (CDOSession session : sessions) + { + session.removeListener(sessionListener); + LifecycleUtil.deactivate(session); + } + + sessionListener = null; + sessions.clear(); + sessions = null; + stopTransport(); super.tearDown(); } |