[229465] - mapping file wizard does not work for source folder other than "src"
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationOperation.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationOperation.java
index 49b014c..4bd0a7a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationOperation.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/operations/OrmFileCreationOperation.java
@@ -124,7 +124,7 @@
String filePath = getDataModel().getStringProperty(FILE_PATH);
IFile file = folder.getFile(new Path(filePath));
final OrmResourceModelProvider modelProvider =
- OrmResourceModelProvider.getModelProvider(getProject(), file.getProjectRelativePath().toString());
+ OrmResourceModelProvider.getModelProvider(file);
modelProvider.modify(new Runnable() {
public void run() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/JpaResourceModelProviderManager.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/JpaResourceModelProviderManager.java
index d94ef13..289ab52 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/JpaResourceModelProviderManager.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/JpaResourceModelProviderManager.java
@@ -11,7 +11,6 @@
import java.util.HashMap;
import java.util.Iterator;
-
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
@@ -143,7 +142,7 @@
*/
public JpaResourceModelProvider getModelProvider(IFile file) {
IProject project = file.getProject();
- IPath path = file.getProjectRelativePath();
+ IPath path = file.getFullPath();
IContentType contentType = PlatformUtilities.getContentType(file);
while (contentType != null) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java
index 03d0b28..b0ad9ed 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/orm/OrmResourceModelProvider.java
@@ -23,36 +23,37 @@
import org.eclipse.jpt.core.resource.orm.OrmResource;
import org.eclipse.jpt.core.resource.orm.XmlEntityMappings;
-/**
- *
- */
public class OrmResourceModelProvider
extends AbstractResourceModelProvider
{
/**
* (Convenience method) Returns an ORM resource model provider for
- * the given project in the default location
+ * the given file.
+ */
+ public static OrmResourceModelProvider getModelProvider(IFile file) {
+ return getModelProvider_(file.getProject(), file.getFullPath().toString());
+ }
+
+ /**
+ * (Convenience method) Returns an ORM resource model provider for
+ * the given project in the specified deploy location
+ */
+ public static OrmResourceModelProvider getModelProvider(IProject project, String deployLocation) {
+ return getModelProvider_(project, JptCorePlugin.getDeploymentURI(project, deployLocation));
+ }
+
+ /**
+ * (Convenience method) Returns an ORM resource model provider for
+ * the given project in the default deploy location
*/
public static OrmResourceModelProvider getDefaultModelProvider(IProject project) {
return getModelProvider(project, JptCorePlugin.DEFAULT_ORM_XML_FILE_PATH);
}
- /**
- * (Convenience method) Returns an ORM resource model provider for
- * the given file.
- */
- public static OrmResourceModelProvider getModelProvider(IFile file) {
- return getModelProvider(file.getProject(), file.getProjectRelativePath().toString());
- }
-
- /**
- * (Convenience method) Returns an ORM resource model provider for
- * the given project in the specified location
- */
- public static OrmResourceModelProvider getModelProvider(IProject project, String location) {
+ private static OrmResourceModelProvider getModelProvider_(IProject project, String location) {
return (OrmResourceModelProvider) JpaResourceModelProviderManager.instance().getModelProvider(
project,
- new Path(JptCorePlugin.getDeploymentURI(project, location)),
+ new Path(location),
JptCorePlugin.ORM_XML_CONTENT_TYPE);
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java
index 6ff8553..6d8c5be 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/PersistenceResourceModelProvider.java
@@ -24,39 +24,41 @@
import org.eclipse.jpt.core.resource.persistence.XmlPersistence;
import org.eclipse.jpt.core.resource.persistence.XmlPersistenceUnit;
-/**
- *
- */
public class PersistenceResourceModelProvider
extends AbstractResourceModelProvider
{
/**
* (Convenience method) Returns a persistence resource model provider for
- * the given project in the default location
+ * the given file.
+ */
+ public static PersistenceResourceModelProvider getModelProvider(IFile file) {
+ return getModelProvider_(file.getProject(), file.getFullPath().toString());
+ }
+
+ /**
+ * (Convenience method) Returns an persistence resource model provider for
+ * the given project in the specified deploy location
+ */
+ public static PersistenceResourceModelProvider getModelProvider(IProject project, String deployLocation) {
+ return getModelProvider_(project, JptCorePlugin.getDeploymentURI(project, deployLocation));
+ }
+
+ /**
+ * (Convenience method) Returns a persistence resource model provider for
+ * the given project in the default deploy location
*/
public static PersistenceResourceModelProvider getDefaultModelProvider(IProject project) {
return getModelProvider(project, JptCorePlugin.DEFAULT_PERSISTENCE_XML_FILE_PATH);
}
- /**
- * (Convenience method) Returns a persistence resource model provider for
- * the given file.
- */
- public static PersistenceResourceModelProvider getModelProvider(IFile file) {
- return getModelProvider(file.getProject(), file.getProjectRelativePath().toString());
- }
-
- /**
- * (Convenience method) Returns an persistence resource model provider for
- * the given project in the specified location
- */
- public static PersistenceResourceModelProvider getModelProvider(IProject project, String location) {
+ private static PersistenceResourceModelProvider getModelProvider_(IProject project, String location) {
return (PersistenceResourceModelProvider) JpaResourceModelProviderManager.instance().getModelProvider(
project,
- new Path(JptCorePlugin.getDeploymentURI(project, location)),
+ new Path(location),
JptCorePlugin.PERSISTENCE_XML_CONTENT_TYPE);
}
+
public PersistenceResourceModelProvider(IProject project) {
this(project, new Path(JptCorePlugin.DEFAULT_PERSISTENCE_XML_FILE_PATH));
}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java
index 5fc7311..57f4216 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/resource/AbstractResourceModelProvider.java
@@ -43,7 +43,6 @@
import org.eclipse.jpt.core.JptCorePlugin;
import org.eclipse.jpt.core.resource.common.JpaXmlResource;
import org.eclipse.jpt.utility.internal.ListenerList;
-import org.eclipse.jpt.utility.internal.StringTools;
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;
@@ -69,6 +68,14 @@
protected ResourceStateValidator stateValidator;
+ /**
+ * 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
+ * deploy 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 AbstractResourceModelProvider(IProject project, IPath resourcePath) {
super();
this.project = project;
@@ -77,12 +84,13 @@
protected URI buildFileUri(IPath resourcePath) {
- URI resourceUri = URI.createURI(resourcePath.toString());
+ URI resourceUri = null;
- // figure out if path is relative (deployment) or absolute (platform file)
-
- if (StringTools.stringIsEmpty(resourceUri.scheme())) {
- resourceUri = getModuleURI(resourceUri);
+ if (resourcePath.isAbsolute()) {
+ resourceUri = URI.createPlatformResourceURI(resourcePath.toString(), false);
+ }
+ else {
+ resourceUri = getModuleURI(URI.createURI(resourcePath.toString()));
}
URIConverter uriConverter = getResourceSet().getURIConverter();
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java
index a64cabb..9411b8e 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/resource/orm/EclipseLinkOrmResourceModelProvider.java
@@ -28,28 +28,33 @@
{
/**
* (Convenience method) Returns an EclipseLink ORM resource model provider for
- * the given project in the default location
+ * the given file.
+ */
+ public static EclipseLinkOrmResourceModelProvider getModelProvider(IFile file) {
+ return getModelProvider_(file.getProject(), file.getFullPath().toString());
+ }
+
+ /**
+ * (Convenience method) Returns an EclipseLink ORM resource model provider for
+ * the given project in the specified deploy location
+ */
+ public static EclipseLinkOrmResourceModelProvider getModelProvider(IProject project, String deployLocation) {
+ return getModelProvider_(project, JptCorePlugin.getDeploymentURI(project, deployLocation));
+
+ }
+
+ /**
+ * (Convenience method) Returns an EclipseLink ORM resource model provider for
+ * the given project in the default deploy location
*/
public static EclipseLinkOrmResourceModelProvider getDefaultModelProvider(IProject project) {
return getModelProvider(project, JptEclipseLinkCorePlugin.DEFAULT_ECLIPSELINK_ORM_XML_FILE_PATH);
}
- /**
- * (Convenience method) Returns an EclipseLink ORM resource model provider for
- * the given file.
- */
- public static EclipseLinkOrmResourceModelProvider getModelProvider(IFile file) {
- return getModelProvider(file.getProject(), file.getProjectRelativePath().toString());
- }
-
- /**
- * (Convenience method) Returns an EclipseLink ORM resource model provider for
- * the given project in the specified location
- */
- public static EclipseLinkOrmResourceModelProvider getModelProvider(IProject project, String location) {
+ private static EclipseLinkOrmResourceModelProvider getModelProvider_(IProject project, String location) {
return (EclipseLinkOrmResourceModelProvider) JpaResourceModelProviderManager.instance().getModelProvider(
project,
- new Path(JptCorePlugin.getDeploymentURI(project, location)),
+ new Path(location),
JptEclipseLinkCorePlugin.ECLIPSELINK_ORM_XML_CONTENT_TYPE);
}