You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2006/11/02 12:06:05 UTC
svn commit: r470325 - in /tomcat/tc6.0.x/trunk/java/org/apache/jasper:
compiler/ParserController.java compiler/TagFileProcessor.java
resources/LocalStrings.properties runtime/PageContextImpl.java
Author: remm
Date: Thu Nov 2 03:06:03 2006
New Revision: 470325
URL: http://svn.apache.org/viewvc?view=rev&rev=470325
Log:
- Indentation.
- Fix a woops which led to ignoring the jsp config for the encoding.
- Send an error for a 2.0 version for the 2.1 tag attributes.
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ParserController.java
tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
tomcat/tc6.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/PageContextImpl.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ParserController.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ParserController.java?view=diff&rev=470325&r1=470324&r2=470325
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ParserController.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/ParserController.java Thu Nov 2 03:06:03 2006
@@ -59,7 +59,7 @@
* for include directives that refer to relative paths.
*/
private Stack baseDirStack = new Stack();
-
+
private boolean isEncodingSpecifiedInProlog;
private boolean isBomPresent;
@@ -74,16 +74,16 @@
*/
public ParserController(JspCompilationContext ctxt, Compiler compiler) {
this.ctxt = ctxt;
- this.compiler = compiler;
- this.err = compiler.getErrorDispatcher();
+ this.compiler = compiler;
+ this.err = compiler.getErrorDispatcher();
}
public JspCompilationContext getJspCompilationContext () {
- return ctxt;
+ return ctxt;
}
public Compiler getCompiler () {
- return compiler;
+ return compiler;
}
/**
@@ -92,11 +92,11 @@
* @param inFileName The path to the JSP page or tag file to be parsed.
*/
public Node.Nodes parse(String inFileName)
- throws FileNotFoundException, JasperException, IOException {
- // If we're parsing a packaged tag file or a resource included by it
- // (using an include directive), ctxt.getTagFileJar() returns the
- // JAR file from which to read the tag file or included resource,
- // respectively.
+ throws FileNotFoundException, JasperException, IOException {
+ // If we're parsing a packaged tag file or a resource included by it
+ // (using an include directive), ctxt.getTagFileJar() returns the
+ // JAR file from which to read the tag file or included resource,
+ // respectively.
isTagFile = ctxt.isTagFile();
directiveOnly = false;
return doParse(inFileName, null, ctxt.getTagFileJarUrl());
@@ -111,8 +111,8 @@
* or null of the included resource is to be read from the filesystem
*/
public Node.Nodes parse(String inFileName, Node parent,
- URL jarFileUrl)
- throws FileNotFoundException, JasperException, IOException {
+ URL jarFileUrl)
+ throws FileNotFoundException, JasperException, IOException {
// For files that are statically included, isTagfile and directiveOnly
// remain unchanged.
return doParse(inFileName, parent, jarFileUrl);
@@ -127,7 +127,7 @@
* @param inFileName The name of the tag file to be parsed.
*/
public Node.Nodes parseTagFileDirectives(String inFileName)
- throws FileNotFoundException, JasperException, IOException {
+ throws FileNotFoundException, JasperException, IOException {
boolean isTagFileSave = isTagFile;
boolean directiveOnlySave = directiveOnly;
isTagFile = true;
@@ -154,87 +154,87 @@
* or null if the JSP page or tag file is to be read from the filesystem
*/
private Node.Nodes doParse(String inFileName,
- Node parent,
- URL jarFileUrl)
- throws FileNotFoundException, JasperException, IOException {
-
- Node.Nodes parsedPage = null;
- isEncodingSpecifiedInProlog = false;
- isBomPresent = false;
- isDefaultPageEncoding = false;
-
- JarFile jarFile = getJarFile(jarFileUrl);
- String absFileName = resolveFileName(inFileName);
- String jspConfigPageEnc = getJspConfigPageEncoding(absFileName);
-
- // Figure out what type of JSP document and encoding type we are
- // dealing with
- determineSyntaxAndEncoding(absFileName, jarFile, jspConfigPageEnc);
-
- if (parent != null) {
- // Included resource, add to dependent list
- compiler.getPageInfo().addDependant(absFileName);
- }
-
- if ((isXml && isEncodingSpecifiedInProlog) || isBomPresent) {
- /*
- * Make sure the encoding explicitly specified in the XML
- * prolog (if any) matches that in the JSP config element
- * (if any), treating "UTF-16", "UTF-16BE", and "UTF-16LE" as
- * identical.
- */
- if (jspConfigPageEnc != null && !jspConfigPageEnc.equals(sourceEnc)
- && (!jspConfigPageEnc.startsWith("UTF-16")
- || !sourceEnc.startsWith("UTF-16"))) {
- err.jspError("jsp.error.prolog_config_encoding_mismatch",
- sourceEnc, jspConfigPageEnc);
- }
- }
-
- // Dispatch to the appropriate parser
- if (isXml) {
- // JSP document (XML syntax)
+ Node parent,
+ URL jarFileUrl)
+ throws FileNotFoundException, JasperException, IOException {
+
+ Node.Nodes parsedPage = null;
+ isEncodingSpecifiedInProlog = false;
+ isBomPresent = false;
+ isDefaultPageEncoding = false;
+
+ JarFile jarFile = getJarFile(jarFileUrl);
+ String absFileName = resolveFileName(inFileName);
+ String jspConfigPageEnc = getJspConfigPageEncoding(absFileName);
+
+ // Figure out what type of JSP document and encoding type we are
+ // dealing with
+ determineSyntaxAndEncoding(absFileName, jarFile, jspConfigPageEnc);
+
+ if (parent != null) {
+ // Included resource, add to dependent list
+ compiler.getPageInfo().addDependant(absFileName);
+ }
+
+ if ((isXml && isEncodingSpecifiedInProlog) || isBomPresent) {
+ /*
+ * Make sure the encoding explicitly specified in the XML
+ * prolog (if any) matches that in the JSP config element
+ * (if any), treating "UTF-16", "UTF-16BE", and "UTF-16LE" as
+ * identical.
+ */
+ if (jspConfigPageEnc != null && !jspConfigPageEnc.equals(sourceEnc)
+ && (!jspConfigPageEnc.startsWith("UTF-16")
+ || !sourceEnc.startsWith("UTF-16"))) {
+ err.jspError("jsp.error.prolog_config_encoding_mismatch",
+ sourceEnc, jspConfigPageEnc);
+ }
+ }
+
+ // Dispatch to the appropriate parser
+ if (isXml) {
+ // JSP document (XML syntax)
// InputStream for jspx page is created and properly closed in
// JspDocumentParser.
parsedPage = JspDocumentParser.parse(this, absFileName,
- jarFile, parent,
- isTagFile, directiveOnly,
- sourceEnc,
- jspConfigPageEnc,
- isEncodingSpecifiedInProlog,
- isBomPresent);
- } else {
- // Standard syntax
- InputStreamReader inStreamReader = null;
- try {
- inStreamReader = JspUtil.getReader(absFileName, sourceEnc,
- jarFile, ctxt, err);
- JspReader jspReader = new JspReader(ctxt, absFileName,
- sourceEnc, inStreamReader,
- err);
+ jarFile, parent,
+ isTagFile, directiveOnly,
+ sourceEnc,
+ jspConfigPageEnc,
+ isEncodingSpecifiedInProlog,
+ isBomPresent);
+ } else {
+ // Standard syntax
+ InputStreamReader inStreamReader = null;
+ try {
+ inStreamReader = JspUtil.getReader(absFileName, sourceEnc,
+ jarFile, ctxt, err);
+ JspReader jspReader = new JspReader(ctxt, absFileName,
+ sourceEnc, inStreamReader,
+ err);
parsedPage = Parser.parse(this, jspReader, parent, isTagFile,
- directiveOnly, jarFileUrl,
- sourceEnc, jspConfigPageEnc,
- isDefaultPageEncoding, isBomPresent);
+ directiveOnly, jarFileUrl,
+ sourceEnc, jspConfigPageEnc,
+ isDefaultPageEncoding, isBomPresent);
} finally {
- if (inStreamReader != null) {
- try {
- inStreamReader.close();
- } catch (Exception any) {
- }
- }
- }
- }
-
- if (jarFile != null) {
- try {
- jarFile.close();
- } catch (Throwable t) {}
- }
+ if (inStreamReader != null) {
+ try {
+ inStreamReader.close();
+ } catch (Exception any) {
+ }
+ }
+ }
+ }
+
+ if (jarFile != null) {
+ try {
+ jarFile.close();
+ } catch (Throwable t) {}
+ }
- baseDirStack.pop();
+ baseDirStack.pop();
- return parsedPage;
+ return parsedPage;
}
/*
@@ -248,12 +248,12 @@
* jsp-property-group with matching URL pattern
*/
private String getJspConfigPageEncoding(String absFileName)
- throws JasperException {
+ throws JasperException {
- JspConfig jspConfig = ctxt.getOptions().getJspConfig();
- JspConfig.JspProperty jspProperty
- = jspConfig.findJspProperty(absFileName);
- return jspProperty.getPageEncoding();
+ JspConfig jspConfig = ctxt.getOptions().getJspConfig();
+ JspConfig.JspProperty jspProperty
+ = jspConfig.findJspProperty(absFileName);
+ return jspProperty.getPageEncoding();
}
/**
@@ -262,137 +262,142 @@
* instance variables, respectively.
*/
private void determineSyntaxAndEncoding(String absFileName,
- JarFile jarFile,
- String jspConfigPageEnc)
- throws JasperException, IOException {
-
- isXml = false;
-
- /*
- * 'true' if the syntax (XML or standard) of the file is given
- * from external information: either via a JSP configuration element,
- * the ".jspx" suffix, or the enclosing file (for included resources)
- */
- boolean isExternal = false;
-
- /*
- * Indicates whether we need to revert from temporary usage of
- * "ISO-8859-1" back to "UTF-8"
- */
- boolean revert = false;
+ JarFile jarFile,
+ String jspConfigPageEnc)
+ throws JasperException, IOException {
+
+ isXml = false;
+
+ /*
+ * 'true' if the syntax (XML or standard) of the file is given
+ * from external information: either via a JSP configuration element,
+ * the ".jspx" suffix, or the enclosing file (for included resources)
+ */
+ boolean isExternal = false;
+
+ /*
+ * Indicates whether we need to revert from temporary usage of
+ * "ISO-8859-1" back to "UTF-8"
+ */
+ boolean revert = false;
JspConfig jspConfig = ctxt.getOptions().getJspConfig();
JspConfig.JspProperty jspProperty = jspConfig.findJspProperty(
- absFileName);
+ absFileName);
if (jspProperty.isXml() != null) {
// If <is-xml> is specified in a <jsp-property-group>, it is used.
isXml = JspUtil.booleanValue(jspProperty.isXml());
- isExternal = true;
- } else if (absFileName.endsWith(".jspx")
- || absFileName.endsWith(".tagx")) {
- isXml = true;
- isExternal = true;
- }
-
- if (isExternal && !isXml) {
- // JSP (standard) syntax. Use encoding specified in jsp-config
- // if provided.
- sourceEnc = jspConfigPageEnc;
- if (sourceEnc != null) {
- return;
- }
- // We don't know the encoding, so use BOM to determine it
- sourceEnc = "ISO-8859-1";
- } else {
- // XML syntax or unknown, (auto)detect encoding ...
- Object[] ret = XMLEncodingDetector.getEncoding(absFileName,
- jarFile, ctxt, err);
- sourceEnc = (String) ret[0];
- if (((Boolean) ret[1]).booleanValue()) {
- isEncodingSpecifiedInProlog = true;
- }
- if (((Boolean) ret[2]).booleanValue()) {
- isBomPresent = true;
- }
-
- if (!isXml && sourceEnc.equals("UTF-8")) {
- /*
- * We don't know if we're dealing with XML or standard syntax.
- * Therefore, we need to check to see if the page contains
- * a <jsp:root> element.
- *
- * We need to be careful, because the page may be encoded in
- * ISO-8859-1 (or something entirely different), and may
- * contain byte sequences that will cause a UTF-8 converter to
- * throw exceptions.
- *
- * It is safe to use a source encoding of ISO-8859-1 in this
- * case, as there are no invalid byte sequences in ISO-8859-1,
- * and the byte/character sequences we're looking for (i.e.,
- * <jsp:root>) are identical in either encoding (both UTF-8
- * and ISO-8859-1 are extensions of ASCII).
- */
- sourceEnc = "ISO-8859-1";
- revert = true;
- }
- }
-
- if (isXml) {
- // (This implies 'isExternal' is TRUE.)
- // We know we're dealing with a JSP document (via JSP config or
- // ".jspx" suffix), so we're done.
- return;
- }
-
- /*
- * At this point, 'isExternal' or 'isXml' is FALSE.
- * Search for jsp:root action, in order to determine if we're dealing
- * with XML or standard syntax (unless we already know what we're
- * dealing with, i.e., when 'isExternal' is TRUE and 'isXml' is FALSE).
- * No check for XML prolog, since nothing prevents a page from
- * outputting XML and still using JSP syntax (in this case, the
- * XML prolog is treated as template text).
- */
- JspReader jspReader = null;
- try {
- jspReader = new JspReader(ctxt, absFileName, sourceEnc, jarFile,
- err);
- } catch (FileNotFoundException ex) {
- throw new JasperException(ex);
- }
+ isExternal = true;
+ } else if (absFileName.endsWith(".jspx")
+ || absFileName.endsWith(".tagx")) {
+ isXml = true;
+ isExternal = true;
+ }
+
+ if (isExternal && !isXml) {
+ // JSP (standard) syntax. Use encoding specified in jsp-config
+ // if provided.
+ sourceEnc = jspConfigPageEnc;
+ if (sourceEnc != null) {
+ return;
+ }
+ // We don't know the encoding, so use BOM to determine it
+ sourceEnc = "ISO-8859-1";
+ } else {
+ // XML syntax or unknown, (auto)detect encoding ...
+ Object[] ret = XMLEncodingDetector.getEncoding(absFileName,
+ jarFile, ctxt, err);
+ sourceEnc = (String) ret[0];
+ if (((Boolean) ret[1]).booleanValue()) {
+ isEncodingSpecifiedInProlog = true;
+ }
+ if (((Boolean) ret[2]).booleanValue()) {
+ isBomPresent = true;
+ }
+
+ if (!isXml && sourceEnc.equals("UTF-8")) {
+ /*
+ * We don't know if we're dealing with XML or standard syntax.
+ * Therefore, we need to check to see if the page contains
+ * a <jsp:root> element.
+ *
+ * We need to be careful, because the page may be encoded in
+ * ISO-8859-1 (or something entirely different), and may
+ * contain byte sequences that will cause a UTF-8 converter to
+ * throw exceptions.
+ *
+ * It is safe to use a source encoding of ISO-8859-1 in this
+ * case, as there are no invalid byte sequences in ISO-8859-1,
+ * and the byte/character sequences we're looking for (i.e.,
+ * <jsp:root>) are identical in either encoding (both UTF-8
+ * and ISO-8859-1 are extensions of ASCII).
+ */
+ sourceEnc = "ISO-8859-1";
+ revert = true;
+ }
+ }
+
+ if (isXml) {
+ // (This implies 'isExternal' is TRUE.)
+ // We know we're dealing with a JSP document (via JSP config or
+ // ".jspx" suffix), so we're done.
+ return;
+ }
+
+ /*
+ * At this point, 'isExternal' or 'isXml' is FALSE.
+ * Search for jsp:root action, in order to determine if we're dealing
+ * with XML or standard syntax (unless we already know what we're
+ * dealing with, i.e., when 'isExternal' is TRUE and 'isXml' is FALSE).
+ * No check for XML prolog, since nothing prevents a page from
+ * outputting XML and still using JSP syntax (in this case, the
+ * XML prolog is treated as template text).
+ */
+ JspReader jspReader = null;
+ try {
+ jspReader = new JspReader(ctxt, absFileName, sourceEnc, jarFile,
+ err);
+ } catch (FileNotFoundException ex) {
+ throw new JasperException(ex);
+ }
jspReader.setSingleFile(true);
Mark startMark = jspReader.mark();
- if (!isExternal) {
- jspReader.reset(startMark);
- if (hasJspRoot(jspReader)) {
- if (revert) sourceEnc = "UTF-8";
- isXml = true;
- return;
- } else {
- if (revert && isBomPresent) sourceEnc = "UTF-8";
- isXml = false;
- }
- }
-
- /*
- * At this point, we know we're dealing with JSP syntax.
- * If an XML prolog is provided, it's treated as template text.
- * Determine the page encoding from the page directive, unless it's
- * specified via JSP config.
- */
- if (sourceEnc == null) {
- sourceEnc = jspConfigPageEnc;
- if (sourceEnc == null) {
- sourceEnc = getPageEncodingForJspSyntax(jspReader, startMark);
+ if (!isExternal) {
+ jspReader.reset(startMark);
+ if (hasJspRoot(jspReader)) {
+ if (revert) {
+ sourceEnc = "UTF-8";
+ }
+ isXml = true;
+ return;
+ } else {
+ if (revert && isBomPresent) {
+ sourceEnc = "UTF-8";
+ }
+ isXml = false;
+ }
+ }
+
+ /*
+ * At this point, we know we're dealing with JSP syntax.
+ * If an XML prolog is provided, it's treated as template text.
+ * Determine the page encoding from the page directive, unless it's
+ * specified via JSP config.
+ */
+ if (!isBomPresent) {
+ sourceEnc = jspConfigPageEnc;
if (sourceEnc == null) {
- // Default to "ISO-8859-1" per JSP spec
- sourceEnc = "ISO-8859-1";
- isDefaultPageEncoding = true;
+ sourceEnc = getPageEncodingForJspSyntax(jspReader, startMark);
+ if (sourceEnc == null) {
+ // Default to "ISO-8859-1" per JSP spec
+ sourceEnc = "ISO-8859-1";
+ isDefaultPageEncoding = true;
+ }
}
}
+
}
- }
-
+
/*
* Determines page source encoding for page or tag file in JSP syntax,
* by reading (in this order) the value of the 'pageEncoding' page
@@ -402,18 +407,18 @@
* @return The page encoding, or null if not found
*/
private String getPageEncodingForJspSyntax(JspReader jspReader,
- Mark startMark)
- throws JasperException {
+ Mark startMark)
+ throws JasperException {
- String encoding = null;
+ String encoding = null;
String saveEncoding = null;
jspReader.reset(startMark);
- /*
- * Determine page encoding from directive of the form <%@ page %>,
- * <%@ tag %>, <jsp:directive.page > or <jsp:directive.tag >.
- */
+ /*
+ * Determine page encoding from directive of the form <%@ page %>,
+ * <%@ tag %>, <jsp:directive.page > or <jsp:directive.tag >.
+ */
while (true) {
if (jspReader.skipUntil("<") == null) {
break;
@@ -428,7 +433,7 @@
}
boolean isDirective = jspReader.matches("%@");
if (isDirective) {
- jspReader.skipSpaces();
+ jspReader.skipSpaces();
}
else {
isDirective = jspReader.matches("jsp:directive.");
@@ -437,27 +442,27 @@
continue;
}
- // compare for "tag ", so we don't match "taglib"
- if (jspReader.matches("tag ") || jspReader.matches("page")) {
+ // compare for "tag ", so we don't match "taglib"
+ if (jspReader.matches("tag ") || jspReader.matches("page")) {
- jspReader.skipSpaces();
+ jspReader.skipSpaces();
Attributes attrs = Parser.parseAttributes(this, jspReader);
- encoding = getPageEncodingFromDirective(attrs, "pageEncoding");
+ encoding = getPageEncodingFromDirective(attrs, "pageEncoding");
if (encoding != null) {
break;
}
- encoding = getPageEncodingFromDirective(attrs, "contentType");
+ encoding = getPageEncodingFromDirective(attrs, "contentType");
if (encoding != null) {
saveEncoding = encoding;
}
- }
- }
+ }
+ }
if (encoding == null) {
encoding = saveEncoding;
}
- return encoding;
+ return encoding;
}
/*
@@ -475,8 +480,8 @@
* @return The page encoding, or null
*/
private String getPageEncodingFromDirective(Attributes attrs,
- String attrName) {
- String value = attrs.getValue(attrName);
+ String attrName) {
+ String value = attrs.getValue(attrName);
if (attrName.equals("pageEncoding")) {
return value;
}
@@ -485,13 +490,13 @@
String contentType = value;
String encoding = null;
if (contentType != null) {
- int loc = contentType.indexOf(CHARSET);
- if (loc != -1) {
- encoding = contentType.substring(loc + CHARSET.length());
- }
- }
+ int loc = contentType.indexOf(CHARSET);
+ if (loc != -1) {
+ encoding = contentType.substring(loc + CHARSET.length());
+ }
+ }
- return encoding;
+ return encoding;
}
/*
@@ -503,12 +508,12 @@
private String resolveFileName(String inFileName) {
String fileName = inFileName.replace('\\', '/');
boolean isAbsolute = fileName.startsWith("/");
- fileName = isAbsolute ? fileName
- : (String) baseDirStack.peek() + fileName;
- String baseDir =
- fileName.substring(0, fileName.lastIndexOf("/") + 1);
- baseDirStack.push(baseDir);
- return fileName;
+ fileName = isAbsolute ? fileName
+ : (String) baseDirStack.peek() + fileName;
+ String baseDir =
+ fileName.substring(0, fileName.lastIndexOf("/") + 1);
+ baseDirStack.push(baseDir);
+ return fileName;
}
/*
@@ -526,67 +531,67 @@
*/
private boolean hasJspRoot(JspReader reader) throws JasperException {
- // <prefix>:root must be the first element
- Mark start = null;
- while ((start = reader.skipUntil("<")) != null) {
- int c = reader.nextChar();
- if (c != '!' && c != '?') break;
- }
- if (start == null) {
- return false;
- }
- Mark stop = reader.skipUntil(":root");
- if (stop == null) {
- return false;
- }
- // call substring to get rid of leading '<'
- String prefix = reader.getText(start, stop).substring(1);
-
- start = stop;
- stop = reader.skipUntil(">");
- if (stop == null) {
- return false;
- }
-
- // Determine namespace associated with <root> element's prefix
- String root = reader.getText(start, stop);
- String xmlnsDecl = "xmlns:" + prefix;
- int index = root.indexOf(xmlnsDecl);
- if (index == -1) {
- return false;
- }
- index += xmlnsDecl.length();
- while (index < root.length()
- && Character.isWhitespace(root.charAt(index))) {
- index++;
- }
- if (index < root.length() && root.charAt(index) == '=') {
- index++;
- while (index < root.length()
- && Character.isWhitespace(root.charAt(index))) {
- index++;
- }
- if (index < root.length() && root.charAt(index++) == '"'
- && root.regionMatches(index, JSP_URI, 0,
- JSP_URI.length())) {
- return true;
- }
- }
+ // <prefix>:root must be the first element
+ Mark start = null;
+ while ((start = reader.skipUntil("<")) != null) {
+ int c = reader.nextChar();
+ if (c != '!' && c != '?') break;
+ }
+ if (start == null) {
+ return false;
+ }
+ Mark stop = reader.skipUntil(":root");
+ if (stop == null) {
+ return false;
+ }
+ // call substring to get rid of leading '<'
+ String prefix = reader.getText(start, stop).substring(1);
+
+ start = stop;
+ stop = reader.skipUntil(">");
+ if (stop == null) {
+ return false;
+ }
+
+ // Determine namespace associated with <root> element's prefix
+ String root = reader.getText(start, stop);
+ String xmlnsDecl = "xmlns:" + prefix;
+ int index = root.indexOf(xmlnsDecl);
+ if (index == -1) {
+ return false;
+ }
+ index += xmlnsDecl.length();
+ while (index < root.length()
+ && Character.isWhitespace(root.charAt(index))) {
+ index++;
+ }
+ if (index < root.length() && root.charAt(index) == '=') {
+ index++;
+ while (index < root.length()
+ && Character.isWhitespace(root.charAt(index))) {
+ index++;
+ }
+ if (index < root.length() && root.charAt(index++) == '"'
+ && root.regionMatches(index, JSP_URI, 0,
+ JSP_URI.length())) {
+ return true;
+ }
+ }
- return false;
+ return false;
}
private JarFile getJarFile(URL jarFileUrl) throws IOException {
- JarFile jarFile = null;
+ JarFile jarFile = null;
- if (jarFileUrl != null) {
- JarURLConnection conn = (JarURLConnection) jarFileUrl.openConnection();
- conn.setUseCaches(false);
- conn.connect();
- jarFile = conn.getJarFile();
- }
+ if (jarFileUrl != null) {
+ JarURLConnection conn = (JarURLConnection) jarFileUrl.openConnection();
+ conn.setUseCaches(false);
+ conn.connect();
+ jarFile = conn.getJarFile();
+ }
- return jarFile;
+ return jarFile;
}
}
Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java?view=diff&rev=470325&r1=470324&r2=470325
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java Thu Nov 2 03:06:03 2006
@@ -273,6 +273,12 @@
}
}
+ if ("2.0".equals(tagLibInfo.getRequiredVersion())
+ && (deferredMethodSpecified || deferredMethod
+ || deferredValueSpecified || deferredValue)) {
+ err.jspError("jsp.error.invalid.version", path);
+ }
+
TagAttributeInfo tagAttributeInfo = new TagAttributeInfo(attrName,
required, type, rtexprvalue, fragment, null, deferredValue,
deferredMethod, deferredValueType, deferredMethodSignature);
Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties?view=diff&rev=470325&r1=470324&r2=470325
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties Thu Nov 2 03:06:03 2006
@@ -79,6 +79,7 @@
jsp.error.invalid.directive=Invalid directive
jsp.error.invalid.implicit=Invalid implicit TLD for tag file at {0}
jsp.error.invalid.implicit.version=Invalid JSP version defined in implicit TLD for tag file at {0}
+jsp.error.invalid.version=Invalid JSP version defined for tag file at {0}
jsp.error.directive.istagfile={0} directive cannot be used in a tag file
jsp.error.directive.isnottagfile={0} directive can only be used in a tag file
jsp.error.tagfile.tld.name=The \"name\" attribute of the tag directive has a value {0} while the \"name\" tag of the \"tag-file\" element in the TLD is {1}
@@ -91,6 +92,7 @@
jsp.error.unable.load=Unable to load class for JSP
jsp.error.unable.rename=Unable to rename class file {0} to {1}
jsp.error.mandatory.attribute={0}: Mandatory attribute {1} missing
+jsp.error.flush=Exception occurred when flushing data
jsp.engine.info=Jasper JSP 2.0 Engine
jsp.error.invalid.expression="{0}" contains invalid expression(s): {1}
jsp.error.invalid.attribute={0} has invalid attribute: {1}
Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/PageContextImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/PageContextImpl.java?view=diff&rev=470325&r1=470324&r2=470325
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/PageContextImpl.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/PageContextImpl.java Thu Nov 2 03:06:03 2006
@@ -191,7 +191,7 @@
((JspWriterImpl) out).flushBuffer();
}
} catch (IOException ex) {
- IllegalStateException ise = new IllegalStateException("Internal error flushing the buffer in release()", ex);
+ IllegalStateException ise = new IllegalStateException(Localizer.getMessage("jsp.error.flush"), ex);
throw ise;
} finally {
servlet = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org