Author: remy.maucherat(a)jboss.com
Date: 2009-06-05 20:40:15 -0400 (Fri, 05 Jun 2009)
New Revision: 1083
Modified:
trunk/java/org/apache/catalina/Context.java
trunk/java/org/apache/catalina/core/StandardContext.java
trunk/java/org/apache/catalina/deploy/jsp/FunctionInfo.java
trunk/java/org/apache/catalina/deploy/jsp/TagVariableInfo.java
trunk/java/org/apache/catalina/startup/ContextConfig.java
trunk/java/org/apache/catalina/startup/TldRuleSet.java
Log:
- I had forgotten about the implicit URI details ...
- Add forgotten function parsing. Oops.
Modified: trunk/java/org/apache/catalina/Context.java
===================================================================
--- trunk/java/org/apache/catalina/Context.java 2009-06-04 21:54:35 UTC (rev 1082)
+++ trunk/java/org/apache/catalina/Context.java 2009-06-06 00:40:15 UTC (rev 1083)
@@ -598,6 +598,14 @@
/**
+ * Add the given JSP tag library metadata.
+ *
+ * @param tagLibraryInfo the tag library info that will be added
+ */
+ public void addJspTagLibrary(String uri, TagLibraryInfo tagLibraryInfo);
+
+
+ /**
* Add a Locale Encoding Mapping (see Sec 5.4 of Servlet spec 2.4)
*
* @param locale locale to map an encoding for
Modified: trunk/java/org/apache/catalina/core/StandardContext.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardContext.java 2009-06-04 21:54:35 UTC (rev
1082)
+++ trunk/java/org/apache/catalina/core/StandardContext.java 2009-06-06 00:40:15 UTC (rev
1083)
@@ -2304,11 +2304,24 @@
for (int i = 0; i < listeners.length; i++) {
addApplicationListener(listeners[i]);
}
+ System.out.println("Add TLD for URI: " + tagLibraryInfo.getUri() +
" " + tagLibraryInfo);
jspTagLibraries.put(tagLibraryInfo.getUri(), tagLibraryInfo);
}
/**
+ * Add the given JSP tag library metadata with a specified mapping.
+ *
+ * @param uri the tag library URI
+ * @param tagLibrayInfo the tag library info that will be added
+ */
+ public void addJspTagLibrary(String uri, TagLibraryInfo tagLibraryInfo) {
+ System.out.println("Add TLD for implicit URI: " + uri + " " +
tagLibraryInfo);
+ jspTagLibraries.put(uri, tagLibraryInfo);
+ }
+
+
+ /**
* Add a Locale Encoding Mapping (see Sec 5.4 of Servlet spec 2.4)
*
* @param locale locale to map an encoding for
Modified: trunk/java/org/apache/catalina/deploy/jsp/FunctionInfo.java
===================================================================
--- trunk/java/org/apache/catalina/deploy/jsp/FunctionInfo.java 2009-06-04 21:54:35 UTC
(rev 1082)
+++ trunk/java/org/apache/catalina/deploy/jsp/FunctionInfo.java 2009-06-06 00:40:15 UTC
(rev 1083)
@@ -19,6 +19,7 @@
public class FunctionInfo {
+ protected String description;
protected String name;
protected String functionClass;
protected String functionSignature;
@@ -41,5 +42,11 @@
public void setFunctionSignature(String functionSignature) {
this.functionSignature = functionSignature;
}
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
Modified: trunk/java/org/apache/catalina/deploy/jsp/TagVariableInfo.java
===================================================================
--- trunk/java/org/apache/catalina/deploy/jsp/TagVariableInfo.java 2009-06-04 21:54:35 UTC
(rev 1082)
+++ trunk/java/org/apache/catalina/deploy/jsp/TagVariableInfo.java 2009-06-06 00:40:15 UTC
(rev 1083)
@@ -25,8 +25,8 @@
protected String nameGiven; // <name-given>
protected String nameFromAttribute; // <name-from-attribute>
protected String className; // <class>
- protected boolean declare; // <declare>
- protected int scope; // <scope>
+ protected boolean declare = true; // <declare>
+ protected String scope; // <scope>
public String getNameGiven() {
return nameGiven;
@@ -52,10 +52,10 @@
public void setDeclare(boolean declare) {
this.declare = declare;
}
- public int getScope() {
+ public String getScope() {
return scope;
}
- public void setScope(int scope) {
+ public void setScope(String scope) {
this.scope = scope;
}
Modified: trunk/java/org/apache/catalina/startup/ContextConfig.java
===================================================================
--- trunk/java/org/apache/catalina/startup/ContextConfig.java 2009-06-04 21:54:35 UTC (rev
1082)
+++ trunk/java/org/apache/catalina/startup/ContextConfig.java 2009-06-06 00:40:15 UTC (rev
1083)
@@ -598,17 +598,9 @@
*/
protected void applicationTldConfig() {
- // Add all TLDs from explicit web config
Map<String, Set<String>> TLDs = getTLDs();
Set<String> warTLDs = TLDs.get("");
- String taglibs[] = context.findTaglibs();
- for (int i = 0; i < taglibs.length; i++) {
- String resourcePath = context.findTaglib(taglibs[i]);
- if (!resourcePath.startsWith("/")) {
- resourcePath = "/WEB-INF/" + resourcePath;
- }
- warTLDs.add(resourcePath);
- }
+ ArrayList<TagLibraryInfo> tagLibraries = new
ArrayList<TagLibraryInfo>();
// Parse all TLDs from the WAR
Iterator<String> warTLDsIterator = warTLDs.iterator();
@@ -631,7 +623,9 @@
}
tagLibraryInfo.setLocation("");
tagLibraryInfo.setPath(tldPath);
+ tagLibraries.add(tagLibraryInfo);
context.addJspTagLibrary(tagLibraryInfo);
+ context.addJspTagLibrary(tldPath, tagLibraryInfo);
}
}
} catch (Exception e) {
@@ -681,7 +675,11 @@
}
tagLibraryInfo.setLocation(jarPath);
tagLibraryInfo.setPath(tldPath);
+ tagLibraries.add(tagLibraryInfo);
context.addJspTagLibrary(tagLibraryInfo);
+ if (tldPath.equals("META-INF/taglib.tld")) {
+ context.addJspTagLibrary(jarPath, tagLibraryInfo);
+ }
}
}
} catch (Exception e) {
@@ -698,6 +696,27 @@
}
}
}
+
+ // Add additional TLDs URIs from explicit web config
+ String taglibs[] = context.findTaglibs();
+ for (int i = 0; i < taglibs.length; i++) {
+ String uri = taglibs[i];
+ String path = context.findTaglib(taglibs[i]);
+ String location = "";
+ if (path.indexOf(':') == -1 &&
!path.startsWith("/")) {
+ path = "/WEB-INF/" + path;
+ }
+ if (path.endsWith(".jar")) {
+ location = path;
+ path = "META-INF/taglib.tld";
+ }
+ for (int j = 0; j < tagLibraries.size(); j++) {
+ TagLibraryInfo tagLibraryInfo = tagLibraries.get(j);
+ if (tagLibraryInfo.getLocation().equals(location) &&
tagLibraryInfo.getPath().equals(path)) {
+ context.addJspTagLibrary(uri, tagLibraryInfo);
+ }
+ }
+ }
}
Modified: trunk/java/org/apache/catalina/startup/TldRuleSet.java
===================================================================
--- trunk/java/org/apache/catalina/startup/TldRuleSet.java 2009-06-04 21:54:35 UTC (rev
1082)
+++ trunk/java/org/apache/catalina/startup/TldRuleSet.java 2009-06-06 00:40:15 UTC (rev
1083)
@@ -103,7 +103,7 @@
digester.addCallMethod(prefix + "taglib/short-name",
"setShortname", 0);
digester.addCallMethod(prefix + "taglib/uri",
- "setUrn", 0);
+ "setUri", 0);
digester.addCallMethod(prefix + "taglib/info",
"setInfo", 0);
digester.addCallMethod(prefix + "taglib/description",
@@ -207,6 +207,21 @@
digester.addCallMethod(prefix +
"taglib/tag/attribute/deferred-value/method-signature",
"setMethodSignature", 0);
+ // tag/function element
+ digester.addObjectCreate(prefix + "taglib/function",
+ "org.apache.catalina.deploy.jsp.FunctionInfo");
+ digester.addSetNext(prefix + "taglib/function",
+ "addFunctionInfo",
+ "org.apache.catalina.deploy.jsp.FunctionInfo");
+ digester.addCallMethod(prefix + "taglib/function/name",
+ "setName", 0);
+ digester.addCallMethod(prefix + "taglib/function/description",
+ "setDescription", 0);
+ digester.addCallMethod(prefix + "taglib/function/function-class",
+ "setFunctionClass", 0);
+ digester.addCallMethod(prefix + "taglib/function/function-signature",
+ "setFunctionSignature", 0);
+
}