Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Roldan Betancort2009-02-23 09:14:53 +0000
committerVictor Roldan Betancort2009-02-23 09:14:53 +0000
commit4710b9beccb3d383aab2cd4b476c314a38e59a64 (patch)
tree82c9ad56e19d3a5a829234b18089355233aec3fc /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf
parentc3baf1fa1bdc73692d618b01472f2844c74538d6 (diff)
downloadcdo-4710b9beccb3d383aab2cd4b476c314a38e59a64.tar.gz
cdo-4710b9beccb3d383aab2cd4b476c314a38e59a64.tar.xz
cdo-4710b9beccb3d383aab2cd4b476c314a38e59a64.zip
[265114] Attaching adapters to resources does not load them?
https://bugs.eclipse.org/bugs/show_bug.cgi?id=265114
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFactory.java12
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java52
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java53
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewAdapter.java55
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProvider.java3
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProviderRegistry.java3
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java8
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java2
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewProviderRegistryImpl.java11
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java84
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/PluginContainerViewProvider.java10
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOLoadable.java2
15 files changed, 67 insertions, 239 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFactory.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFactory.java
index 2b8c58cdc2..6aa0dd1584 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFactory.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/CDOResourceFactory.java
@@ -11,7 +11,7 @@
*/
package org.eclipse.emf.cdo.eresource;
-import org.eclipse.emf.cdo.view.CDOViewSet;
+import org.eclipse.emf.cdo.eresource.impl.CDOResourceFactoryImpl;
import org.eclipse.emf.ecore.resource.Resource;
@@ -20,13 +20,5 @@ import org.eclipse.emf.ecore.resource.Resource;
*/
public interface CDOResourceFactory extends Resource.Factory
{
- /**
- * @since 2.0
- */
- public CDOViewSet getViewSet();
-
- /**
- * @since 2.0
- */
- public void setViewSet(CDOViewSet viewSet);
+ public static final CDOResourceFactory eINSTANCE = CDOResourceFactoryImpl.eINSTANCE;
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java
index 81be695f16..ae1bb1065d 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceFactoryImpl.java
@@ -14,15 +14,10 @@ package org.eclipse.emf.cdo.eresource.impl;
import org.eclipse.emf.cdo.eresource.CDOResourceFactory;
import org.eclipse.emf.cdo.util.CDOURIUtil;
-import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.cdo.view.CDOViewAdapter;
-import org.eclipse.emf.cdo.view.CDOViewProviderRegistry;
-import org.eclipse.emf.cdo.view.CDOViewSet;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.spi.cdo.InternalCDOViewSet;
/**
* @author Eike Stepper
@@ -31,57 +26,14 @@ public class CDOResourceFactoryImpl implements Resource.Factory, CDOResourceFact
{
private static final String RESOURCE_SET_CLASS_NAME = ResourceSetImpl.class.getName();
- /**
- * @since 2.0
- */
- private InternalCDOViewSet viewSet;
-
- /**
- * @since 2.0
- */
- public CDOResourceFactoryImpl(CDOViewSet viewSet)
- {
- setViewSet(viewSet);
- }
-
- public CDOResourceFactoryImpl()
- {
- }
-
- /**
- * @since 2.0
- */
- public CDOViewSet getViewSet()
- {
- return viewSet;
- }
-
- /**
- * @since 2.0
- */
- public void setViewSet(CDOViewSet viewSet)
- {
- this.viewSet = (InternalCDOViewSet)viewSet;
- }
+ public static final CDOResourceFactory eINSTANCE = new CDOResourceFactoryImpl();
public Resource createResource(URI uri)
{
- CDOView view = CDOViewProviderRegistry.INSTANCE.provideView(uri, viewSet);
-
- // Build a new URI with the view and the path
String path = CDOURIUtil.extractResourcePath(uri);
- URI newURI = CDOURIUtil.createResourceURI(view, path);
-
- // Important: Set URI *after* registration with the view!
- CDOResourceImpl resource = new CDOResourceImpl(newURI);
+ CDOResourceImpl resource = new CDOResourceImpl(uri);
resource.setRoot(CDOURIUtil.SEGMENT_SEPARATOR.equals(path));
resource.setExisting(isGetResource());
- if (view != null)
- {
- CDOViewAdapter adapter = new CDOViewAdapter(view);
- resource.eAdapters().add(adapter);
- }
-
return resource;
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
index d8788fd0bc..300fda9570 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
@@ -18,16 +18,15 @@ import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.EresourcePackage;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOURIUtil;
-import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.util.ObjectNotFoundException;
import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.cdo.view.CDOViewAdapter;
+import org.eclipse.emf.cdo.view.CDOViewProviderRegistry;
import org.eclipse.emf.internal.cdo.CDOStateMachine;
-import org.eclipse.emf.internal.cdo.bundle.OM;
import org.eclipse.emf.internal.cdo.util.FSMUtil;
-import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.net4j.util.WrappedException;
+
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.notify.impl.NotificationChainImpl;
@@ -564,6 +563,19 @@ public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource,
// }
}
+ @Override
+ public void cdoInternalPreLoad()
+ {
+ try
+ {
+ load(null);
+ }
+ catch (IOException ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ }
+
/**
* @ADDED
*/
@@ -800,42 +812,21 @@ public class CDOResourceImpl extends CDOResourceNodeImpl implements CDOResource,
setResourceSet(resourceSet);
- // ResourceSet isn't prepared, try to look for a CDOViewAdapter
- if (resourceSet != null && CDOUtil.getViewSet(resourceSet) == null)
+ // ResourceSet isn't prepared
+ if (resourceSet != null)
{
InternalCDOView view = cdoView();
if (view == null)
{
- for (Iterator<Adapter> it = eAdapters().iterator(); it.hasNext();)
+ URI uri = getURI();
+ view = (InternalCDOView)CDOViewProviderRegistry.INSTANCE.provideView(uri, resourceSet);
+ if (view != null)
{
- Adapter adapter = it.next();
- if (adapter instanceof CDOViewAdapter)
- {
- view = (InternalCDOView)((CDOViewAdapter)adapter).getView();
- cdoInternalSetView(view);
- view.attachResource(this);
-
- it.remove();
- break;
- }
+ view.attachResource(this);
}
}
}
- // TODO Clarify me: 265114: Attaching adapters to resources does not load them?
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=265114
- if (OM.BUNDLE.getDebugSupport().getDebugOption("load.resource.before.notification", false))
- {
- try
- {
- load(null);
- }
- catch (IOException ex)
- {
- OM.LOG.error(ex);
- }
- }
-
if (eNotificationRequired())
{
if (notifications == null)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewAdapter.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewAdapter.java
deleted file mode 100644
index 6b960aeff1..0000000000
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewAdapter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright (c) 2004 - 2009 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:
- * Victor Roldan Betancort - initial API and implementation
- * Eike Stepper - maintenance
- */
-package org.eclipse.emf.cdo.view;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-
-/**
- * Adapter meant to carry a <code>CDOView</code> associated with (and needed by) certain <code>CDOResource</code>
- *
- * @author Victor Roldan Betancort
- * @since 2.0
- */
-public class CDOViewAdapter implements Adapter
-{
- private CDOView view;
-
- public CDOViewAdapter(CDOView view)
- {
- this.view = view;
- }
-
- public CDOView getView()
- {
- return view;
- }
-
- public Notifier getTarget()
- {
- return null;
- }
-
- public void setTarget(Notifier newTarget)
- {
- }
-
- public boolean isAdapterForType(Object type)
- {
- return false;
- }
-
- public void notifyChanged(Notification notification)
- {
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProvider.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProvider.java
index c9d8faf897..7f9a7f81f1 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProvider.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProvider.java
@@ -12,6 +12,7 @@
package org.eclipse.emf.cdo.view;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
/**
* Capable of opening a <code>CDOView</code> on a target repository, defined by a URI. A regular expression and the
@@ -48,5 +49,5 @@ public interface CDOViewProvider
*
* @return a wired-up and opened <code>CDOView</code>
*/
- public CDOView getView(URI uri, CDOViewSet viewSet);
+ public CDOView getView(URI uri, ResourceSet resourceSet);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProviderRegistry.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProviderRegistry.java
index 907ef78e70..56de04aa7d 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProviderRegistry.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/view/CDOViewProviderRegistry.java
@@ -14,6 +14,7 @@ package org.eclipse.emf.cdo.view;
import org.eclipse.net4j.util.container.IContainer;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
/**
* A global registry of {@link CDOViewProvider view provider} implementations.
@@ -29,7 +30,7 @@ public interface CDOViewProviderRegistry extends IContainer<CDOViewProvider>
* Returns a {@link CDOView view} that serves the given URI in the given {@link CDOViewSet view set}, or
* <code>null</code> if no {@link CDOViewProvider view provider} in this registry can provide such a view
*/
- public CDOView provideView(URI uri, CDOViewSet viewSet);
+ public CDOView provideView(URI uri, ResourceSet viewSet);
/**
* Returns an array of <code>CDOViewProvider</code> instances, determined and ordered by certain criteria based on the
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
index 6f3fa744f1..7744f578a9 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOLegacyWrapper.java
@@ -173,6 +173,10 @@ public final class CDOLegacyWrapper extends CDOObjectWrapper
}
}
+ public void cdoInternalPreLoad()
+ {
+ }
+
public void cdoInternalPostLoad()
{
// TODO Consider not remembering the revisin after copying it to the instance (spare 1/2 of the space)
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
index 559907aaae..dff5aded57 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOMetaWrapper.java
@@ -80,6 +80,11 @@ public class CDOMetaWrapper extends CDOObjectWrapper
throw new UnsupportedOperationException();
}
+ public void cdoInternalPreLoad()
+ {
+ throw new UnsupportedOperationException();
+ }
+
public void cdoInternalPostLoad()
{
throw new UnsupportedOperationException();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
index 4e11de43d4..164db8214c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
@@ -265,6 +265,10 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
throw new UnsupportedOperationException();
}
+ public void cdoInternalPreLoad()
+ {
+ }
+
public void cdoInternalPostLoad()
{
// Reset EMAP objects
@@ -709,6 +713,10 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
entryData = null;
size = delegateEList.size();
}
+
+ public void cdoInternalPreLoad()
+ {
+ }
}
return new EStoreEcoreEMap();
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
index e030594477..ddf034b55b 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOStateMachine.java
@@ -738,6 +738,8 @@ public final class CDOStateMachine extends FiniteStateMachine<CDOState, CDOEvent
public void execute(InternalCDOObject object, CDOState state, CDOEvent event, Object delta)
{
+ object.cdoInternalPreLoad();
+
CDOID id = object.cdoID();
InternalCDOView view = object.cdoView();
InternalCDORevision revision = view.getRevision(id, true);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
index 71d67cca35..2144e6712b 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/util/FSMUtil.java
@@ -83,7 +83,7 @@ public final class FSMUtil
CDOObject cdoObject = (CDOObject)obj;
return cdoObject.cdoState() == CDOState.CLEAN || cdoObject.cdoState() == CDOState.DIRTY;
}
-
+
return false;
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewProviderRegistryImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewProviderRegistryImpl.java
index 7254fbb188..e533b31933 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewProviderRegistryImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewProviderRegistryImpl.java
@@ -12,6 +12,7 @@
package org.eclipse.emf.internal.cdo.view;
import org.eclipse.emf.cdo.util.CDOURIUtil;
+import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.AbstractCDOViewProvider;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.cdo.view.CDOViewProvider;
@@ -26,6 +27,7 @@ import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -61,13 +63,14 @@ public class CDOViewProviderRegistryImpl extends Container<CDOViewProvider> impl
}
}
- public CDOView provideView(URI uri, CDOViewSet viewSet)
+ public CDOView provideView(URI uri, ResourceSet resourceSet)
{
if (uri == null)
{
return null;
}
+ CDOViewSet viewSet = CDOUtil.getViewSet(resourceSet);
if (viewSet != null)
{
try
@@ -87,7 +90,7 @@ public class CDOViewProviderRegistryImpl extends Container<CDOViewProvider> impl
for (CDOViewProvider viewProvider : getViewProviders(uri))
{
- CDOView view = viewProvider.getView(uri, viewSet);
+ CDOView view = viewProvider.getView(uri, resourceSet);
if (view != null)
{
return view;
@@ -260,9 +263,9 @@ public class CDOViewProviderRegistryImpl extends Container<CDOViewProvider> impl
}
}
- public CDOView getView(URI uri, CDOViewSet viewSet)
+ public CDOView getView(URI uri, ResourceSet resourceSet)
{
- return getViewProvider().getView(uri, viewSet);
+ return getViewProvider().getView(uri, resourceSet);
}
private CDOViewProvider getViewProvider()
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
index 49fdd69575..e04dd7b0ee 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewSetImpl.java
@@ -13,18 +13,13 @@ package org.eclipse.emf.internal.cdo.view;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.eresource.CDOResource;
-import org.eclipse.emf.cdo.eresource.impl.CDOResourceFactoryImpl;
-import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
-import org.eclipse.emf.cdo.util.CDOURIUtil;
+import org.eclipse.emf.cdo.eresource.CDOResourceFactory;
import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.internal.cdo.bundle.OM;
-
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.notify.impl.NotificationImpl;
import org.eclipse.emf.common.notify.impl.NotifierImpl;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -49,7 +44,7 @@ public class CDOViewSetImpl extends NotifierImpl implements InternalCDOViewSet
private Map<String, InternalCDOView> mapOfViews = new HashMap<String, InternalCDOView>();
- private CDOResourceFactoryImpl resourceFactory = new CDOResourceFactoryImpl(this);
+ private CDOResourceFactory resourceFactory = CDOResourceFactory.eINSTANCE;
private CDOViewSetPackageRegistryImpl packageRegistry;
@@ -69,7 +64,7 @@ public class CDOViewSetImpl extends NotifierImpl implements InternalCDOViewSet
return packageRegistry;
}
- public CDOResourceFactoryImpl getResourceFactory()
+ public CDOResourceFactory getResourceFactory()
{
return resourceFactory;
}
@@ -137,11 +132,6 @@ public class CDOViewSetImpl extends NotifierImpl implements InternalCDOViewSet
views.add(view);
mapOfViews.put(repositoryUUID, view);
-
- if (views.size() == 1)
- {
- initializeResources(view);
- }
}
if (eNotificationRequired())
@@ -215,75 +205,7 @@ public class CDOViewSetImpl extends NotifierImpl implements InternalCDOViewSet
return type instanceof ResourceSet;
}
- @SuppressWarnings("unchecked")
public void notifyChanged(Notification notification)
{
- try
- {
- // We do not notify view for remove notifications.
- switch (notification.getEventType())
- {
- case Notification.ADD:
- {
- Object newResource = notification.getNewValue();
- if (newResource instanceof CDOResourceImpl)
- {
- notifyAdd((CDOResourceImpl)newResource);
- }
-
- break;
- }
-
- case Notification.ADD_MANY:
- {
- List<Resource> newResources = (List<Resource>)notification.getNewValue();
- for (Resource newResource : newResources)
- {
- if (newResource instanceof CDOResourceImpl)
- {
- notifyAdd((CDOResourceImpl)newResource);
- }
- }
-
- break;
- }
- }
- }
- catch (RuntimeException ex)
- {
- OM.LOG.error(ex);
- throw ex;
- }
- }
-
- /**
- * Only generates event to CDOView if it is a new CDOResource.
- */
- private void notifyAdd(CDOResourceImpl resource)
- {
- String respositoryUUID = CDOURIUtil.extractRepositoryUUID(resource.getURI());
- InternalCDOView view = resolveView(respositoryUUID);
- if (view != null)
- {
- view.attachResource(resource);
- }
- }
-
- private void initializeResources(CDOView cdoView)
- {
- // Intialize the resourceset correctly when it get connected to the first time to a view.
- for (Resource resource : resourceSet.getResources())
- {
- if (resource instanceof CDOResourceImpl)
- {
- CDOResourceImpl cdoResource = (CDOResourceImpl)resource;
- if (cdoResource.cdoView() == null)
- {
- URI newURI = CDOURIUtil.createResourceURI(cdoView, cdoResource.getPath());
- cdoResource.setURI(newURI);
- notifyAdd(cdoResource);
- }
- }
- }
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/PluginContainerViewProvider.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/PluginContainerViewProvider.java
index e8f4d78dc9..51d62e8db7 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/PluginContainerViewProvider.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/PluginContainerViewProvider.java
@@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.util.CDOURIUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.cdo.view.CDOViewProvider;
-import org.eclipse.emf.cdo.view.CDOViewSet;
import org.eclipse.emf.cdo.view.ManagedContainerViewProvider;
import org.eclipse.emf.internal.cdo.session.CDOSessionFactory;
@@ -24,6 +23,7 @@ import org.eclipse.net4j.util.container.IManagedContainer;
import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
/**
* Provides <code>CDOView</code> from <code>CDOSession</code> registered in IPluginContainer
@@ -41,7 +41,7 @@ public class PluginContainerViewProvider extends ManagedContainerViewProvider im
super(IPluginContainer.INSTANCE, REGEX, PRIORITY);
}
- public CDOView getView(URI uri, CDOViewSet viewSet)
+ public CDOView getView(URI uri, ResourceSet resourceSet)
{
IManagedContainer container = getContainer();
if (container == null)
@@ -56,7 +56,7 @@ public class PluginContainerViewProvider extends ManagedContainerViewProvider im
String uuid = session.repository().getUUID();
if (repoUUID.equals(uuid))
{
- CDOView view = openView(session, uri);
+ CDOView view = openView(session, resourceSet);
if (view != null)
{
return view;
@@ -73,8 +73,8 @@ public class PluginContainerViewProvider extends ManagedContainerViewProvider im
return IPluginContainer.INSTANCE;
}
- protected CDOView openView(CDOSession session, URI uri)
+ protected CDOView openView(CDOSession session, ResourceSet resourceSet)
{
- return session.openTransaction();
+ return session.openTransaction(resourceSet);
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOLoadable.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOLoadable.java
index bd00e16f82..af8d441233 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOLoadable.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/InternalCDOLoadable.java
@@ -17,5 +17,7 @@ package org.eclipse.emf.spi.cdo;
*/
public interface InternalCDOLoadable
{
+ public void cdoInternalPreLoad();
+
public void cdoInternalPostLoad();
}

Back to the top