[183756] JSP Validation Cannot Find Tag Library Descriptor in Referenced Projects
diff --git a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/TestIndex.java b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/TestIndex.java
index 4c0f80f..8c95208 100644
--- a/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/TestIndex.java
+++ b/tests/org.eclipse.jst.jsp.core.tests/src/org/eclipse/jst/jsp/core/tests/taglibindex/TestIndex.java
@@ -30,13 +30,23 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.core.ClasspathEntry;
import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
+import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
+import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
import org.eclipse.jst.jsp.core.taglib.IJarRecord;
import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
import org.eclipse.jst.jsp.core.taglib.IURLRecord;
import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
import org.eclipse.jst.jsp.core.tests.JSPCoreTestsPlugin;
+import org.eclipse.wst.sse.core.StructuredModelManager;
import org.eclipse.wst.validation.internal.operations.ValidatorManager;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
+import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
+import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* Tests for the TaglibIndex.
@@ -415,4 +425,37 @@
records = TaglibIndex.getAvailableTaglibRecords(new Path("/testavailable1/WebContent"));
assertEquals("total ITaglibRecord count doesn't match (after exporting jar and restarting)", 1, records.length);
}
+
+ public void testUtilityProjectSupport() throws Exception {
+ // Create project 1
+ IProject project = BundleResourceUtil.createSimpleProject("test-jar", null, null);
+ assertTrue(project.exists());
+ BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/bug183756/test-jar", "/test-jar");
+
+ // Create project 2
+ IProject project2 = BundleResourceUtil.createSimpleProject("test-war", null, null);
+ assertTrue(project2.exists());
+ BundleResourceUtil.copyBundleEntriesIntoWorkspace("/testfiles/bug183756/test-war", "/test-war");
+
+ IFile testFile = project2.getFile(new Path("src/main/webapp/test.jsp"));
+ assertTrue("missing test JSP file!", testFile.isAccessible());
+
+ IDOMModel jspModel = null;
+ try {
+ jspModel = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(testFile);
+ NodeList tests = jspModel.getDocument().getElementsByTagName("test:test");
+ assertTrue("test:test element not found", tests.getLength() > 0);
+ CMElementDeclaration elementDecl = ModelQueryUtil.getModelQuery(jspModel).getCMElementDeclaration(((Element) tests.item(0)));
+ assertNotNull("No element declaration was found for test:test at runtime", elementDecl);
+ assertTrue("element declaration was not the expected kind", elementDecl instanceof CMNodeWrapper);
+ CMNode originNode = ((CMNodeWrapper) elementDecl).getOriginNode();
+ assertTrue("element declaration was not from a tag library", originNode instanceof TLDElementDeclaration);
+ assertEquals("element declaration was not from expected tag library", "http://foo.com/testtags", ((TLDDocument) ((TLDElementDeclaration) originNode).getOwnerDocument()).getUri());
+ }
+ finally {
+ if (jspModel != null) {
+ jspModel.releaseFromRead();
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.classpath
new file mode 100644
index 0000000..d5aec8f
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Tomcat 5.5.9"/>
+ <classpathentry exported="true" kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.project
new file mode 100644
index 0000000..80341f8
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>test-jar</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..167796c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Apr 24 11:16:26 BST 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.component b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..0bb9d17
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="test-jar">
+ <wb-resource deploy-path="/" source-path="/src"/>
+<property name="ear_libraries_processed" value="true"/>
+ </wb-module>
+</project-modules>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.project.facet.core.xml b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..fd534a9
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jst.utility"/>
+ <fixed facet="jst.java"/>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/taglib.tld b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/taglib.tld
new file mode 100644
index 0000000..af3a82b
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/META-INF/taglib.tld
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<taglib>
+ <tlib-version>1.0</tlib-version>
+ <jsp-version>1.2</jsp-version>
+ <short-name>test</short-name>
+ <uri>http://foo.com/testtags</uri>
+ <description>Test Tag Library</description>
+
+
+ <tag>
+ <name>test</name>
+ <tag-class>com.foo.TestTag</tag-class>
+ <body-content>empty</body-content>
+ <description>
+ test
+ </description>
+ </tag>
+
+</taglib>
+
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/com/foo/TestTag.class b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/com/foo/TestTag.class
new file mode 100644
index 0000000..a2d7262
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/bin/com/foo/TestTag.class
Binary files differ
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/taglib.tld b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/taglib.tld
new file mode 100644
index 0000000..af3a82b
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/META-INF/taglib.tld
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<taglib>
+ <tlib-version>1.0</tlib-version>
+ <jsp-version>1.2</jsp-version>
+ <short-name>test</short-name>
+ <uri>http://foo.com/testtags</uri>
+ <description>Test Tag Library</description>
+
+
+ <tag>
+ <name>test</name>
+ <tag-class>com.foo.TestTag</tag-class>
+ <body-content>empty</body-content>
+ <description>
+ test
+ </description>
+ </tag>
+
+</taglib>
+
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/com/foo/TestTag.java b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/com/foo/TestTag.java
new file mode 100644
index 0000000..951882c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-jar/src/com/foo/TestTag.java
@@ -0,0 +1,17 @@
+package com.foo;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+public class TestTag extends TagSupport {
+
+ public int doStartTag() throws JspException {
+ try {
+ pageContext.getOut().write("TAG WORKED");
+ } catch (Exception e) {
+
+ }
+ return super.doStartTag();
+ }
+
+}
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.classpath b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.classpath
new file mode 100644
index 0000000..edb36ca
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+ <classpathentry exported="true" kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="output" path="build/classes"/>
+</classpath>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.project b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.project
new file mode 100644
index 0000000..eb59416
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.project
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>test-war</name>
+ <comment></comment>
+ <projects>
+ <project>test-jar</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..84f2b19
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Apr 24 11:08:40 BST 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jst.common.project.facet.core.prefs b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jst.common.project.facet.core.prefs
new file mode 100644
index 0000000..43db39a
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.jst.common.project.facet.core.prefs
@@ -0,0 +1,4 @@
+#Tue Apr 24 11:08:46 BST 2007
+classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType\:\:jdk1.6.0_01/owners=jst.java\:6.0
+classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v4.1/owners=jst.web\:2.3
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.component b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.component
new file mode 100644
index 0000000..2c1da55
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="test-war">
+ <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/test-jar/test-jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <property name="context-root" value="test-war"/>
+ <property name="java-output-path" value="build/classes"/>
+<property name="web_app_libraries_processed" value="true"/>
+<property name="ear_libraries_processed" value="true"/>
+ </wb-module>
+</project-modules>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.project.facet.core.xml b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 0000000..dd3b084
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <runtime name="Apache Tomcat v4.1"/>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.web"/>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.web" version="2.3"/>
+</faceted-project>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/WEB-INF/web.xml b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..47cea3c
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app id="WebApp_ID">
+ <display-name>test-war</display-name>
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ <welcome-file>default.html</welcome-file>
+ <welcome-file>default.htm</welcome-file>
+ <welcome-file>default.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
diff --git a/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/test.jsp b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/test.jsp
new file mode 100644
index 0000000..38c2e60
--- /dev/null
+++ b/tests/org.eclipse.jst.jsp.core.tests/testfiles/bug183756/test-war/src/main/webapp/test.jsp
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+<%@ taglib uri="http://foo.com/testtags" prefix="test" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test</title>
+</head>
+<body>
+Before Tag
+<test:test/>
+After Tag
+</body>
+</html>
\ No newline at end of file