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 224370 Details for
Bug 395926
getECPProject in ECPUtil does not return right project
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]
patch for retrieving the correct project.
getECPProject.patch (text/plain), 4.86 KB, created by
Tobias Verhoeven
on 2012-12-06 09:03:42 EST
(
hide
)
Description:
patch for retrieving the correct project.
Filename:
MIME Type:
Creator:
Tobias Verhoeven
Created:
2012-12-06 09:03:42 EST
Size:
4.86 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.emf.ecp.core >diff --git src/org/eclipse/emf/ecp/core/util/ECPUtil.java src/org/eclipse/emf/ecp/core/util/ECPUtil.java >index cd043d2..66ed03a 100644 >--- src/org/eclipse/emf/ecp/core/util/ECPUtil.java >+++ src/org/eclipse/emf/ecp/core/util/ECPUtil.java >@@ -9,7 +9,6 @@ > */ > package org.eclipse.emf.ecp.core.util; > >-import org.eclipse.emf.common.notify.Notifier; > import org.eclipse.emf.ecore.EClass; > import org.eclipse.emf.ecore.EClassifier; > import org.eclipse.emf.ecore.EObject; >@@ -17,11 +16,12 @@ > import org.eclipse.emf.ecore.EPackage.Registry; > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.ecp.core.ECPProject; >-import org.eclipse.emf.ecp.core.ECPProjectManager; > import org.eclipse.emf.ecp.core.ECPProvider; >+import org.eclipse.emf.ecp.core.ECPProviderRegistry; > import org.eclipse.emf.ecp.internal.core.util.ElementDescriptor; >+import org.eclipse.emf.ecp.internal.core.util.ExtensionParser.ExtensionDescriptor; > import org.eclipse.emf.ecp.internal.core.util.Properties; >-import org.eclipse.emf.ecp.spi.core.InternalProject; >+import org.eclipse.emf.ecp.spi.core.InternalProvider; > > import org.eclipse.core.runtime.Platform; > >@@ -56,16 +56,18 @@ > if (clazz.isInstance(object)) { > return (T) object; > } >- for (ECPProject project : ECPProjectManager.INSTANCE.getProjects()) { >- InternalProject internalProject = (InternalProject) project; >- Notifier notifier = internalProject.getProvider().getRoot(internalProject); >- ECPModelContextAdapter adapter = (ECPModelContextAdapter) EcoreUtil.getAdapter(notifier.eAdapters(), >- ECPModelContextAdapter.class); >- if (adapter != null) { >- ECPModelContext modelContext = adapter.getContext(); >- if (clazz.isInstance(modelContext)) { >- return (T) modelContext; >- } >+ >+ for (ECPProvider provider : ECPProviderRegistry.INSTANCE.getProviders()) { >+ InternalProvider internalProvider; >+ if (provider instanceof ExtensionDescriptor) { >+ ExtensionDescriptor<InternalProvider> descriptor = (ExtensionDescriptor<InternalProvider>) provider; >+ internalProvider = descriptor.getResolvedElement(); >+ } else { >+ internalProvider = (InternalProvider) provider; >+ } >+ ECPModelContext modelContext = internalProvider.getModelContext(object); >+ if (modelContext != null && clazz.isInstance(modelContext)) { >+ return (T) modelContext; > } > } > >#P org.eclipse.emf.ecp.emfstore.core >diff --git src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java >index 24c912c..06ac4ef 100644 >--- src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java >+++ src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java >@@ -6,13 +6,17 @@ > import org.eclipse.emf.common.util.EList; > import org.eclipse.emf.ecore.EObject; > import org.eclipse.emf.ecore.EReference; >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; > import org.eclipse.emf.ecore.util.EcoreUtil; > import org.eclipse.emf.ecp.core.ECPProject; > import org.eclipse.emf.ecp.core.util.ECPModelContext; >+import org.eclipse.emf.ecp.core.util.ECPModelContextProvider; > import org.eclipse.emf.ecp.spi.core.DefaultProvider; > import org.eclipse.emf.ecp.spi.core.InternalProject; > import org.eclipse.emf.ecp.spi.core.InternalRepository; > import org.eclipse.emf.ecp.spi.core.util.InternalChildrenList; >+import org.eclipse.emf.ecp.spi.core.util.ModelWrapper; > import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; > import org.eclipse.emf.emfstore.client.model.Configuration; > import org.eclipse.emf.emfstore.client.model.ProjectSpace; >@@ -359,4 +363,51 @@ > } > return null; > } >+ >+ @Override >+ public ECPModelContext getModelContext(Object element) { >+ if (element instanceof ECPModelContext) { >+ return (ECPModelContext) element; >+ } >+ >+ if (element instanceof ECPModelContextProvider) { >+ return ((ECPModelContextProvider) element).getModelContext(element); >+ } >+ >+ if (element instanceof ModelWrapper) { >+ return ((ModelWrapper<?, ?>) element).getContext(); >+ } >+ >+ if (element instanceof EObject) { >+ EObject eObject = (EObject) element; >+ ProjectSpace ps = WorkspaceManager.getProjectSpace(eObject); >+ if (ps != null) { >+ ECPModelContext context = getModelContextFromAdapter(ps.getProject()); >+ if (context != null) { >+ return context; >+ } >+ } >+ element = eObject.eResource(); >+ } >+ >+ if (element instanceof Resource) { >+ Resource resource = (Resource) element; >+ ECPModelContext context = getModelContextFromAdapter(resource); >+ if (context != null) { >+ return context; >+ } >+ >+ element = resource.getResourceSet(); >+ } >+ >+ if (element instanceof ResourceSet) { >+ ResourceSet resourceSet = (ResourceSet) element; >+ ECPModelContext context = getModelContextFromAdapter(resourceSet); >+ if (context != null) { >+ return context; >+ } >+ } >+ >+ return null; >+ } > }
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
Flags:
eneufeld
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 395926
: 224370