Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfullbright2010-08-03 15:54:08 +0000
committerpfullbright2010-08-03 15:54:08 +0000
commit3393287453a810db4c9c8a5d28c24f16cde5f74e (patch)
tree8187deff885de2c901b35033b4a2b8a43bcdc294
parent7dd96143f6d8538781643f88dcba92a76771efe2 (diff)
downloadwebtools.dali-3393287453a810db4c9c8a5d28c24f16cde5f74e.tar.gz
webtools.dali-3393287453a810db4c9c8a5d28c24f16cde5f74e.tar.xz
webtools.dali-3393287453a810db4c9c8a5d28c24f16cde5f74e.zip
refactored resource providers to handle module core nature not being present and to handle runtime paths better
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmXmlResourceProvider.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceXmlResourceProvider.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractXmlResourceProvider.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmXmlResourceProvider.java4
4 files changed, 39 insertions, 27 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmXmlResourceProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmXmlResourceProvider.java
index 6608c39cb9..068c58b3f1 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmXmlResourceProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmXmlResourceProvider.java
@@ -39,7 +39,7 @@ public class OrmXmlResourceProvider
* the given project in the specified runtime location
*/
public static OrmXmlResourceProvider getXmlResourceProvider(IProject project, IPath runtimePath) {
- return getXmlResourceProvider_(project, JptCorePlugin.getPlatformFile(project, runtimePath).getFullPath());
+ return getXmlResourceProvider_(project, runtimePath);
}
/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceXmlResourceProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceXmlResourceProvider.java
index 46265a2d42..42d6d7b3d5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceXmlResourceProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceXmlResourceProvider.java
@@ -37,7 +37,7 @@ public class PersistenceXmlResourceProvider
* the given project in the specified runtime location
*/
public static PersistenceXmlResourceProvider getXmlResourceProvider(IProject project, IPath runtimePath) {
- return getXmlResourceProvider_(project, JptCorePlugin.getPlatformFile(project, runtimePath).getFullPath());
+ return getXmlResourceProvider_(project, runtimePath);
}
/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractXmlResourceProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractXmlResourceProvider.java
index e6cfd7b974..091f63fd8d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractXmlResourceProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractXmlResourceProvider.java
@@ -23,7 +23,6 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.content.IContentType;
@@ -34,14 +33,13 @@ import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.jem.util.emf.workbench.EMFWorkbenchContextBase;
import org.eclipse.jem.util.emf.workbench.FlexibleProjectResourceSet;
+import org.eclipse.jem.util.emf.workbench.IEMFContextContributor;
import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
-import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.resource.xml.JpaXmlResource;
import org.eclipse.jpt.utility.internal.ListenerList;
-import org.eclipse.wst.common.componentcore.internal.impl.ModuleURIUtil;
-import org.eclipse.wst.common.componentcore.internal.impl.PlatformURLModuleConnection;
import org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry;
import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
import org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateInputProvider;
@@ -60,7 +58,7 @@ import org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateVa
* @since 2.2
*/
public abstract class AbstractXmlResourceProvider
- implements JpaXmlResourceProvider, ResourceStateInputProvider, ResourceStateValidator
+ implements JpaXmlResourceProvider, IEMFContextContributor, ResourceStateInputProvider, ResourceStateValidator
{
protected IProject project;
@@ -79,10 +77,10 @@ public abstract class AbstractXmlResourceProvider
/**
* Create a new AbstractResourceModelProvider for the given project and
- * resourcePath. The resourcePath may be either a) an absolute platform
- * resource path (e.g. "MyProject/src/META-INF/foobar.xml") or b) a relative
- * runtime path (e.g. "META-INF/foobar.xml".) In either case,
- * {@link #buildFileUri(IPath)} will attempt to build an absolutely pathed
+ * resourcePath. The resourcePath may be either
+ * a) an absolute workspace-relative platform resource path (e.g. "/MyProject/src/META-INF/foobar.xml")
+ * or b) a relative runtime path (e.g. "META-INF/foobar.xml".)
+ * In either case, {@link #buildFileUri(IPath)} will attempt to build an absolutely pathed
* URI for the given path.
*/
public AbstractXmlResourceProvider(IProject project, IPath resourcePath, IContentType contentType) {
@@ -99,7 +97,9 @@ public abstract class AbstractXmlResourceProvider
resourceUri = URI.createPlatformResourceURI(resourcePath.toString(), false);
}
else {
- resourceUri = getModuleURI(URI.createURI(resourcePath.toString()));
+ IPath absolutePath =
+ JptCorePlugin.getResourceLocator(this.project).getResourcePath(this.project, resourcePath);
+ resourceUri = URI.createPlatformResourceURI(absolutePath.toString(), false);
}
URIConverter uriConverter = getResourceSet().getURIConverter();
@@ -135,12 +135,12 @@ public abstract class AbstractXmlResourceProvider
protected JpaXmlResource createResource() {
Resource.Factory resourceFactory =
WTPResourceFactoryRegistry.INSTANCE.getFactory(this.fileUri, this.contentType.getDefaultDescription());
- return (JpaXmlResource) ((FlexibleProjectResourceSet) getResourceSet()).createResource(this.fileUri, resourceFactory);
+ return (JpaXmlResource) getResourceSet().createResource(this.fileUri, resourceFactory);
}
protected void loadResource() {
try {
- this.resource.load(((FlexibleProjectResourceSet) getResourceSet()).getLoadOptions());
+ this.resource.load(((ProjectResourceSet) getResourceSet()).getLoadOptions());
}
catch (IOException e) {
JptCorePlugin.log(e);
@@ -179,13 +179,6 @@ public abstract class AbstractXmlResourceProvider
return this.resource;
}
- protected URI getModuleURI(URI uri) {
- URI moduleuri = ModuleURIUtil.fullyQualifyURI(this.project);
- IPath requestPath = new Path(moduleuri.path()).append(new Path(uri.path()));
- URI resourceURI = URI.createURI(PlatformURLModuleConnection.MODULE_PROTOCOL + requestPath.toString());
- return resourceURI;
- }
-
/**
* Used to optionally fill in the root information of a resource if it does not
* exist as a file
@@ -228,8 +221,12 @@ public abstract class AbstractXmlResourceProvider
}
}
- protected ProjectResourceSet getResourceSet() {
- return (ProjectResourceSet) WorkbenchResourceHelperBase.getResourceSet(project);
+ protected FlexibleProjectResourceSet getResourceSet() {
+ return (FlexibleProjectResourceSet) getEmfContext().getResourceSet();
+ }
+
+ protected EMFWorkbenchContextBase getEmfContext() {
+ return WorkbenchResourceHelper.createEMFContext(this.project, this);
}
public IProject getProject() {
@@ -263,7 +260,24 @@ public abstract class AbstractXmlResourceProvider
return work.validateEdit(files, context);
}
return Status.OK_STATUS;
- }
+ }
+
+
+ // **************** IEMFContextContributor impl ***************************
+
+ private boolean contributedToEmfContext = false;
+
+ public void primaryContributeToContext(EMFWorkbenchContextBase context) {
+ if (! this.contributedToEmfContext) {
+ context.getResourceSet().setResourceFactoryRegistry(WTPResourceFactoryRegistry.INSTANCE);
+ this.contributedToEmfContext = true;
+ }
+ }
+
+ public void secondaryContributeToContext(EMFWorkbenchContextBase aNature) {
+ // no op
+ }
+
// **************** ResourceStateValidator impl ****************************
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmXmlResourceProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmXmlResourceProvider.java
index 35e7693e0c..1ae4c93f38 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmXmlResourceProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmXmlResourceProvider.java
@@ -12,7 +12,6 @@ package org.eclipse.jpt.eclipselink.core.internal.resource.orm;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
-import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.internal.operations.OrmFileCreationDataModelProperties;
import org.eclipse.jpt.core.resource.AbstractXmlResourceProvider;
import org.eclipse.jpt.core.resource.orm.AccessType;
@@ -41,8 +40,7 @@ public class EclipseLinkOrmXmlResourceProvider
* the given project in the specified runtime location
*/
public static EclipseLinkOrmXmlResourceProvider getXmlResourceProvider(IProject project, IPath runtimePath) {
- return getXmlResourceProvider_(project, JptCorePlugin.getPlatformFile(project, runtimePath).getFullPath());
-
+ return getXmlResourceProvider_(project, runtimePath);
}
/**

Back to the top