Author: scabanovich
Date: 2011-03-04 18:31:41 -0500 (Fri, 04 Mar 2011)
New Revision: 29520
Modified:
branches/jbosstools-3.2.x/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java
Log:
JBIDE-8275
https://issues.jboss.org/browse/JBIDE-8275
Modified:
branches/jbosstools-3.2.x/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java
===================================================================
---
branches/jbosstools-3.2.x/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java 2011-03-04
23:24:37 UTC (rev 29519)
+++
branches/jbosstools-3.2.x/jsf/plugins/org.jboss.tools.jsf/src/org/jboss/tools/jsf/jsf2/util/JSF2ResourceUtil.java 2011-03-04
23:31:41 UTC (rev 29520)
@@ -17,6 +17,7 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@@ -26,6 +27,7 @@
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.core.ExternalPackageFragmentRoot;
import org.eclipse.jdt.internal.core.JarEntryDirectory;
import org.eclipse.jdt.internal.core.JarEntryFile;
import org.eclipse.jdt.internal.core.JarEntryResource;
@@ -80,8 +82,17 @@
return file;
}
}
- return searchInClassPath(project, "META-INF" + relativeLocation
//$NON-NLS-1$
- + "/" + nodeName + ".xhtml", JAR_FILE_RESOURCE_TYPE);
//$NON-NLS-1$ //$NON-NLS-2$
+ String classPathResource = "META-INF" + relativeLocation //$NON-NLS-1$
+ + "/" + nodeName + ".xhtml"; //$NON-NLS-1$ //$NON-NLS-2$
+ JarEntryResource jer = searchInClassPath(project, classPathResource,
JAR_FILE_RESOURCE_TYPE);
+ if(jer != null) {
+ return jer;
+ }
+ IResource r = searchInClassPath2(project, classPathResource, JAR_FILE_RESOURCE_TYPE);
+ if(r != null) {
+ return r;
+ }
+ return null;
}
private static JarEntryResource searchInClassPath(IProject project,
@@ -118,6 +129,36 @@
return null;
}
+ private static IResource searchInClassPath2(IProject project,
+ String classPathResource, int jarResourceType) {
+ IJavaProject javaProject = JavaCore.create(project);
+ try {
+ for (IPackageFragmentRoot fragmentRoot : javaProject
+ .getAllPackageFragmentRoots()) {
+ IResource r = fragmentRoot.getResource();
+ if(fragmentRoot instanceof ExternalPackageFragmentRoot) {
+ r = ((ExternalPackageFragmentRoot) fragmentRoot).resource();
+ }
+ if(r instanceof IFolder && r.exists()) {
+ IFolder f = (IFolder)r;
+ IFile f1 = f.getFile(classPathResource);
+ if(f1.exists()) {
+ return f1;
+ }
+ IFolder f2 = f.getFolder(classPathResource);
+ if(f2.exists()) {
+ return f2;
+ }
+ }
+ }
+ } catch (JavaModelException e) {
+ JSFModelPlugin.getPluginLog().logError(e);
+ } catch (CoreException e) {
+ JSFModelPlugin.getPluginLog().logError(e);
+ }
+ return null;
+ }
+
public static Object findResourcesFolderContainerByNameSpace(
IProject project, String nameSpaceURI) {
if (nameSpaceURI == null || nameSpaceURI.indexOf(JSF2_URI_PREFIX) == -1) {
@@ -137,8 +178,16 @@
return resFolder;
}
}
- return searchInClassPath(project,
- "META-INF" + relativeLocation, JAR_DIRECTORY_RESOURCE_TYPE); //$NON-NLS-1$
+ String classPathResource = "META-INF" + relativeLocation; //$NON-NLS-1$
+ JarEntryResource jer = searchInClassPath(project, classPathResource,
JAR_DIRECTORY_RESOURCE_TYPE);
+ if(jer != null) {
+ return jer;
+ }
+ IResource r = searchInClassPath2(project, classPathResource,
JAR_DIRECTORY_RESOURCE_TYPE);
+ if(r != null) {
+ return r;
+ }
+ return null;
}
public static boolean isResourcesFolderExists(IProject project,
@@ -274,4 +323,4 @@
return projectResourceRelativePath;
}
-}
+}
\ No newline at end of file