[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);
 	}