Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2009-03-10 09:16:35 +0000
committerEike Stepper2009-03-10 09:16:35 +0000
commit4752de0d0aaf78663256c0df69798ad816570ad5 (patch)
tree77424c6f93b01e4994462bd66089abb1172eb5a9
parent6e5e92176acbcd85a4fedf250bfa2bb7b2d2a4ad (diff)
downloadcdo-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
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java39
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageRegistryImpl.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOPackageUnitImpl.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/model/InternalCDOPackageRegistry.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/protocol/LoadPackagesIndication.java9
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/SessionConfig.java42
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();
}

Back to the top