Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 395926
Collapse All | Expand All

(-)src/org/eclipse/emf/ecp/core/util/ECPUtil.java (-13 / +15 lines)
Lines 9-15 Link Here
9
 */
9
 */
10
package org.eclipse.emf.ecp.core.util;
10
package org.eclipse.emf.ecp.core.util;
11
11
12
import org.eclipse.emf.common.notify.Notifier;
13
import org.eclipse.emf.ecore.EClass;
12
import org.eclipse.emf.ecore.EClass;
14
import org.eclipse.emf.ecore.EClassifier;
13
import org.eclipse.emf.ecore.EClassifier;
15
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecore.EObject;
Lines 17-27 Link Here
17
import org.eclipse.emf.ecore.EPackage.Registry;
16
import org.eclipse.emf.ecore.EPackage.Registry;
18
import org.eclipse.emf.ecore.util.EcoreUtil;
17
import org.eclipse.emf.ecore.util.EcoreUtil;
19
import org.eclipse.emf.ecp.core.ECPProject;
18
import org.eclipse.emf.ecp.core.ECPProject;
20
import org.eclipse.emf.ecp.core.ECPProjectManager;
21
import org.eclipse.emf.ecp.core.ECPProvider;
19
import org.eclipse.emf.ecp.core.ECPProvider;
20
import org.eclipse.emf.ecp.core.ECPProviderRegistry;
22
import org.eclipse.emf.ecp.internal.core.util.ElementDescriptor;
21
import org.eclipse.emf.ecp.internal.core.util.ElementDescriptor;
22
import org.eclipse.emf.ecp.internal.core.util.ExtensionParser.ExtensionDescriptor;
23
import org.eclipse.emf.ecp.internal.core.util.Properties;
23
import org.eclipse.emf.ecp.internal.core.util.Properties;
24
import org.eclipse.emf.ecp.spi.core.InternalProject;
24
import org.eclipse.emf.ecp.spi.core.InternalProvider;
25
25
26
import org.eclipse.core.runtime.Platform;
26
import org.eclipse.core.runtime.Platform;
27
27
Lines 56-71 Link Here
56
		if (clazz.isInstance(object)) {
56
		if (clazz.isInstance(object)) {
57
			return (T) object;
57
			return (T) object;
58
		}
58
		}
59
		for (ECPProject project : ECPProjectManager.INSTANCE.getProjects()) {
59
60
			InternalProject internalProject = (InternalProject) project;
60
		for (ECPProvider provider : ECPProviderRegistry.INSTANCE.getProviders()) {
61
			Notifier notifier = internalProject.getProvider().getRoot(internalProject);
61
			InternalProvider internalProvider;
62
			ECPModelContextAdapter adapter = (ECPModelContextAdapter) EcoreUtil.getAdapter(notifier.eAdapters(),
62
			if (provider instanceof ExtensionDescriptor) {
63
				ECPModelContextAdapter.class);
63
				ExtensionDescriptor<InternalProvider> descriptor = (ExtensionDescriptor<InternalProvider>) provider;
64
			if (adapter != null) {
64
				internalProvider = descriptor.getResolvedElement();
65
				ECPModelContext modelContext = adapter.getContext();
65
			} else {
66
				if (clazz.isInstance(modelContext)) {
66
				internalProvider = (InternalProvider) provider;
67
					return (T) modelContext;
67
			}
68
				}
68
			ECPModelContext modelContext = internalProvider.getModelContext(object);
69
			if (modelContext != null && clazz.isInstance(modelContext)) {
70
				return (T) modelContext;
69
			}
71
			}
70
		}
72
		}
71
73
(-)src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java (+51 lines)
Lines 6-18 Link Here
6
import org.eclipse.emf.common.util.EList;
6
import org.eclipse.emf.common.util.EList;
7
import org.eclipse.emf.ecore.EObject;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EReference;
8
import org.eclipse.emf.ecore.EReference;
9
import org.eclipse.emf.ecore.resource.Resource;
10
import org.eclipse.emf.ecore.resource.ResourceSet;
9
import org.eclipse.emf.ecore.util.EcoreUtil;
11
import org.eclipse.emf.ecore.util.EcoreUtil;
10
import org.eclipse.emf.ecp.core.ECPProject;
12
import org.eclipse.emf.ecp.core.ECPProject;
11
import org.eclipse.emf.ecp.core.util.ECPModelContext;
13
import org.eclipse.emf.ecp.core.util.ECPModelContext;
14
import org.eclipse.emf.ecp.core.util.ECPModelContextProvider;
12
import org.eclipse.emf.ecp.spi.core.DefaultProvider;
15
import org.eclipse.emf.ecp.spi.core.DefaultProvider;
13
import org.eclipse.emf.ecp.spi.core.InternalProject;
16
import org.eclipse.emf.ecp.spi.core.InternalProject;
14
import org.eclipse.emf.ecp.spi.core.InternalRepository;
17
import org.eclipse.emf.ecp.spi.core.InternalRepository;
15
import org.eclipse.emf.ecp.spi.core.util.InternalChildrenList;
18
import org.eclipse.emf.ecp.spi.core.util.InternalChildrenList;
19
import org.eclipse.emf.ecp.spi.core.util.ModelWrapper;
16
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
20
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
17
import org.eclipse.emf.emfstore.client.model.Configuration;
21
import org.eclipse.emf.emfstore.client.model.Configuration;
18
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
22
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
Lines 359-362 Link Here
359
		}
363
		}
360
		return null;
364
		return null;
361
	}
365
	}
366
367
	@Override
368
	public ECPModelContext getModelContext(Object element) {
369
		if (element instanceof ECPModelContext) {
370
			return (ECPModelContext) element;
371
		}
372
373
		if (element instanceof ECPModelContextProvider) {
374
			return ((ECPModelContextProvider) element).getModelContext(element);
375
		}
376
377
		if (element instanceof ModelWrapper) {
378
			return ((ModelWrapper<?, ?>) element).getContext();
379
		}
380
381
		if (element instanceof EObject) {
382
			EObject eObject = (EObject) element;
383
			ProjectSpace ps = WorkspaceManager.getProjectSpace(eObject);
384
			if (ps != null) {
385
				ECPModelContext context = getModelContextFromAdapter(ps.getProject());
386
				if (context != null) {
387
					return context;
388
				}
389
			}
390
			element = eObject.eResource();
391
		}
392
393
		if (element instanceof Resource) {
394
			Resource resource = (Resource) element;
395
			ECPModelContext context = getModelContextFromAdapter(resource);
396
			if (context != null) {
397
				return context;
398
			}
399
400
			element = resource.getResourceSet();
401
		}
402
403
		if (element instanceof ResourceSet) {
404
			ResourceSet resourceSet = (ResourceSet) element;
405
			ECPModelContext context = getModelContextFromAdapter(resourceSet);
406
			if (context != null) {
407
				return context;
408
			}
409
		}
410
411
		return null;
412
	}
362
}
413
}

Return to bug 395926