[257989] - changed adapting from IResource to IResourcePart
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
index 6b1c469..ffa1828 100644
--- a/jpa/plugins/org.eclipse.jpt.core/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
@@ -65,6 +65,12 @@
 			<adapter type="org.eclipse.jpt.core.JpaProject"/>
 		</factory>
 		
+		<factory
+			class="org.eclipse.jpt.core.internal.ResourcePartAdapterFactory"
+			adaptableType="org.eclipse.core.resources.IResource">
+			<adapter type="org.eclipse.jpt.core.IResourcePart"/>
+		</factory>
+		
 	</extension>
 	
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/IResourcePart.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/IResourcePart.java
new file mode 100644
index 0000000..c27da68
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/IResourcePart.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ *  Copyright (c) 2008  Oracle. 
+ *  All rights reserved.  This program and the accompanying materials are 
+ *  made available under the terms of the Eclipse Public License v1.0 which 
+ *  accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors: 
+ *  	Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core;
+
+import org.eclipse.core.resources.IResource;
+
+/**
+ * Represents an object that can be described as being part of an {@link IResource}
+ */
+public interface IResourcePart
+{
+	/**
+	 * Return the resource of which this object is a part
+	 */
+	IResource getResource();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaNode.java
index 1122f07..b85d89c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaNode.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/JpaNode.java
@@ -9,7 +9,6 @@
  ******************************************************************************/
 package org.eclipse.jpt.core;
 
-import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.jpt.utility.model.Model;
 
@@ -24,7 +23,7 @@
  * will almost certainly be broken (repeatedly) as the API evolves.
  */
 public interface JpaNode
-	extends Model, IAdaptable
+	extends Model, IAdaptable, IResourcePart
 {
 	/**
 	 * Return the JPA project the node belongs to.
@@ -32,12 +31,6 @@
 	JpaProject getJpaProject();
 
 	/**
-	 * Return the resource that most directly contains the node.
-	 * This is used by JpaHelper.
-	 */
-	IResource getResource();
-
-	/**
 	 * Return the JPA node's parent. The JPA project will not have a parent.
 	 */
 	JpaNode getParent();
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java
index 2d0a331..f5f31e8 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AbstractJpaNode.java
@@ -78,9 +78,6 @@
 	
 	@SuppressWarnings("unchecked")
 	public Object getAdapter(Class adapter) {
-		if (adapter == IResource.class) {
-			return getResource();
-		}
 		return Platform.getAdapterManager().getAdapter(this, adapter);
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ResourcePartAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ResourcePartAdapterFactory.java
new file mode 100644
index 0000000..a7b9c38
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ResourcePartAdapterFactory.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ *  Copyright (c) 2008  Oracle. 
+ *  All rights reserved.  This program and the accompanying materials are 
+ *  made available under the terms of the Eclipse Public License v1.0 which 
+ *  accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors: 
+ *  	Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.jpt.core.IResourcePart;
+
+public class ResourcePartAdapterFactory implements IAdapterFactory
+{
+	private static Class[] PROPERTIES= new Class[] {
+		IResourcePart.class
+	};
+		
+	public Class[] getAdapterList() {
+		return PROPERTIES;
+	}
+	
+	public Object getAdapter(final Object adaptableObject, Class adapterType) {
+		if (adapterType == IResourcePart.class) {
+			// assume adaptableObject is an instance of IResource - see extension
+			return new IResourcePart() {
+				public IResource getResource() {
+					return (IResource) adaptableObject;
+				}
+			};
+		}
+		return null;
+	}
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
index 308b380..43b3958 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
@@ -16,6 +16,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.IResourcePart;
 import org.eclipse.jpt.core.JpaProject;
 import org.eclipse.jpt.core.JptCorePlugin;
 import org.eclipse.jpt.utility.internal.iterators.SingleElementIterator;
@@ -108,7 +109,7 @@
 	
 	private IMessage adjustMessage(IMessage message) {
 		IAdaptable targetObject = (IAdaptable) message.getTargetObject();
-		IResource targetResource = (IResource) targetObject.getAdapter(IResource.class);
+		IResource targetResource = ((IResourcePart) targetObject.getAdapter(IResourcePart.class)).getResource();
 		message.setTargetObject(targetResource);
 		if (message.getLineNumber() == IMessage.LINENO_UNSET) {
 			message.setAttribute(IMarker.LOCATION, " ");