[264251] ClasspathDependencyValidator incorrectly flagging warnings on RARs
diff --git a/plugins/org.eclipse.jst.j2ee/classpathdep/org/eclipse/jst/j2ee/classpathdep/ClasspathDependencyUtil.java b/plugins/org.eclipse.jst.j2ee/classpathdep/org/eclipse/jst/j2ee/classpathdep/ClasspathDependencyUtil.java index d03fc26..8f93f64 100644 --- a/plugins/org.eclipse.jst.j2ee/classpathdep/org/eclipse/jst/j2ee/classpathdep/ClasspathDependencyUtil.java +++ b/plugins/org.eclipse.jst.j2ee/classpathdep/org/eclipse/jst/j2ee/classpathdep/ClasspathDependencyUtil.java
@@ -110,6 +110,7 @@ } final IProject project = javaProject.getProject(); final boolean isWebApp = JavaEEProjectUtilities.isDynamicWebProject(project); + final boolean isRAR = JavaEEProjectUtilities.isJCAProject(project); final ClasspathDependencyValidatorData data = new ClasspathDependencyValidatorData(project); final IClasspathEntry[] entries = javaProject.getRawClasspath(); for (int i = 0; i < entries.length; i++) { @@ -147,10 +148,19 @@ break; } } - if (foundEntry) { - continue; + } else if(isRAR){ + IContainer [] rootFolders = component.getRootFolder().getUnderlyingFolders(); + for(IContainer root: rootFolders){ + IPath rootPath = root.getFullPath(); + if(rootPath.isPrefixOf(entry.getPath())){ + foundEntry = true; + break; + } } } + if (foundEntry) { + continue; + } // checks for manifest references List manifestRefs = J2EEModuleVirtualComponent.getManifestReferences(component, null); if(manifestRefs != null){
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java index 01b8604..031fa87 100644 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java
@@ -42,6 +42,7 @@ import org.eclipse.jem.util.logger.proxy.Logger; import org.eclipse.jst.j2ee.classpathdep.ClasspathDependencyUtil; import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants; +import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants.DependencyAttributeType; import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive; import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonArchiveResourceHandler; import org.eclipse.jst.j2ee.commonarchivecore.internal.Container; @@ -308,7 +309,7 @@ if (project.hasNature(JavaCore.NATURE_ID)) { final IJavaProject javaProject = JavaCore.create(project); final boolean isWebApp = J2EEProjectUtilities.isDynamicWebProject(project); - final Map taggedEntries = ClasspathDependencyUtil.getRawComponentClasspathDependencies(javaProject); + final Map taggedEntries = ClasspathDependencyUtil.getRawComponentClasspathDependencies(javaProject, DependencyAttributeType.CLASSPATH_COMPONENT_DEPENDENCY); Iterator i = taggedEntries.keySet().iterator(); while (i.hasNext()) {