luehe 2002/11/07 14:19:13 Modified: jasper2/src/share/org/apache/jasper/compiler PageInfo.java ParserController.java Validator.java jasper2/src/share/org/apache/jasper/resources messages.properties messages_es.properties messages_fr.properties messages_ja.properties Log: Report translation-time error if different page character encodings are detected in two or more of the following: the XML prolog of a JSP page, the pageEncoding attribute of the page directive of the JSP page, and in a JSP configuration element (whose URL pattern matches the page). Revision Changes Path 1.15 +8 -19 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java Index: PageInfo.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageInfo.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- PageInfo.java 6 Nov 2002 20:14:19 -0000 1.14 +++ PageInfo.java 7 Nov 2002 22:19:13 -0000 1.15 @@ -94,10 +94,7 @@ * (declaration). * Only meaningful for XML documents. */ - private String xmlEncoding = null; - - // Indicates whether page has XML declaration with encoding attribute - private boolean hasEncodingProlog = false; + private String xmlPrologEncoding = null; private int maxTagNesting = 0; private boolean scriptless = false; @@ -235,22 +232,14 @@ return pageEncoding; } - public void setXmlEncoding(String xmlEncoding) { - this.xmlEncoding = xmlEncoding; + public void setXmlPrologEncoding(String xmlPrologEncoding) { + this.xmlPrologEncoding = xmlPrologEncoding; } - public String getXmlEncoding() { - return xmlEncoding; + public String getXmlPrologEncoding() { + return xmlPrologEncoding; } - public void setHasEncodingProlog(boolean hasEncodingProlog) { - this.hasEncodingProlog = hasEncodingProlog; - } - - public boolean hasEncodingProlog() { - return hasEncodingProlog; - } - public int getMaxTagNesting() { return maxTagNesting; } 1.26 +10 -6 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java Index: ParserController.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- ParserController.java 7 Nov 2002 00:50:52 -0000 1.25 +++ ParserController.java 7 Nov 2002 22:19:13 -0000 1.26 @@ -192,9 +192,6 @@ if (isTopFile) { pageInfo.setIsXml(isXml); - if (isXml) { - pageInfo.setXmlEncoding(encoding); - } isTopFile = false; } else { compiler.getPageInfo().addDependant(absFileName); @@ -274,12 +271,19 @@ ctxt, err); sourceEnc = (String) ret[0]; boolean isEncodingSetInProlog = ((Boolean) ret[1]).booleanValue(); - if (isTopFile) { - pageInfo.setHasEncodingProlog(isEncodingSetInProlog); - } if (isEncodingSetInProlog) { // Prolog present only in XML syntax isXml = true; + if (isTopFile) { + String jspConfigPageEnc = pageInfo.getPageEncoding(); + if (jspConfigPageEnc != null + && !jspConfigPageEnc.equals(sourceEnc)) { + err.jspError( + "jsp.error.page.prolog_config_encoding_conflict", + sourceEnc, jspConfigPageEnc); + } + pageInfo.setXmlPrologEncoding(sourceEnc); + } } else if (sourceEnc.equals("UTF-8")) { /* * We don't know if we're dealing with an XML document 1.52 +29 -12 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java Index: Validator.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Validator.java,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- Validator.java 7 Nov 2002 18:34:19 -0000 1.51 +++ Validator.java 7 Nov 2002 22:19:13 -0000 1.52 @@ -255,17 +255,34 @@ if (pageEncodingSeen) err.jspError(n, "jsp.error.page.multiple.pageencoding"); pageEncodingSeen = true; - // Make sure the page-encoding specified in a - // jsp-property-group (if present) matches that of the page - // directive + /* + * It is a translation-time error to name different page + * character encodings in two or more of the following: + * the XML prolog of a JSP page, the pageEncoding + * attribute of the page directive of the JSP page, and in + * a JSP configuration element (whose URL pattern matches + * the page). + * At this point, we've already verified (in + * ParserController.figureOutJspDocument()) that the page + * character encodings specified in a JSP config element + * and XML prolog match. + */ + String compareEnc = null; if (jspProperty != null) { - String jspConfigPageEnc = jspProperty.getPageEncoding(); - if (jspConfigPageEnc != null - && !jspConfigPageEnc.equals(value)) { - err.jspError(n, - "jsp.error.page.pageencoding.conflict", - jspConfigPageEnc, value); + compareEnc = jspProperty.getPageEncoding(); + if (compareEnc != null && !compareEnc.equals(value)) { + err.jspError( + n, "jsp.error.page.config_pagedir_encoding_conflict", + compareEnc, value); } + } + if (compareEnc == null) { + compareEnc = pageInfo.getXmlPrologEncoding(); + if (compareEnc != null && !compareEnc.equals(value)) { + err.jspError( + n, "jsp.error.page.prolog_pagedir_encoding_conflict", + compareEnc, value); + } } pageInfo.setPageEncoding(value); } 1.56 +4 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties Index: messages.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties,v retrieving revision 1.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- messages.properties 6 Nov 2002 20:14:20 -0000 1.55 +++ messages.properties 7 Nov 2002 22:19:13 -0000 1.56 @@ -299,7 +299,9 @@ jsp.error.not.in.template={0} not allowed in a template text body. jsp.error.badaction=The action is not a recognizable standard action. jsp.error.tagdirective.badbodycontent=Invalid body-content ({0}) in tag directive -jsp.error.page.pageencoding.conflict=Page-encoding specified in jsp-property-group ({0}) is different from that specified in page directive ({1}) +jsp.error.page.config_pagedir_encoding_conflict=Page-encoding specified in jsp-property-group ({0}) is different from that specified in page directive ({1}) +jsp.error.page.prolog_pagedir_encoding_conflict=Page-encoding specified in XML prolog ({0}) is different from that specified in page directive ({1}) +jsp.error.page.prolog_config_encoding_conflict=Page-encoding specified in XML prolog ({0}) is different from that specified in jsp-property-group ({1}) jsp.error.attribute.non_rt_with_expr=According to TLD, attribute {0} does not accept any expressions jsp.error.scripting.variable.missing_name=Unable to determine scripting variable name from attribute {0} jasper.error.emptybodycontent.nonempty=According to TLD, tag {0} must be empty, but is not 1.22 +4 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties Index: messages_es.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_es.properties,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- messages_es.properties 6 Nov 2002 20:14:20 -0000 1.21 +++ messages_es.properties 7 Nov 2002 22:19:13 -0000 1.22 @@ -217,7 +217,9 @@ jsp.warning.bad.urlpattern.propertygroup= jsp.error.jspelement.missing.name= jsp.error.tagdirective.badbodycontent= -jsp.error.page.pageencoding.conflict= +jsp.error.page.config_pagedir_encoding_conflict= +jsp.error.page.prolog_pagedir_encoding_conflict= +jsp.error.page.prolog_config_encoding_conflict= jsp.error.attribute.non_rt_with_expr= jsp.error.scripting.variable.missing_name= jasper.error.emptybodycontent.nonempty= 1.2 +4 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties Index: messages_fr.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_fr.properties,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- messages_fr.properties 6 Nov 2002 11:38:49 -0000 1.1 +++ messages_fr.properties 7 Nov 2002 22:19:13 -0000 1.2 @@ -297,7 +297,9 @@ jsp.error.not.in.template={0} n''est pas autorisé dans le corps de texte de template. jsp.error.badaction=L''action n''est pas reconnue comme une action standard. jsp.error.tagdirective.badbodycontent=Contenu de corps (body-content) ({0}) invalide dans la directive tag -jsp.error.page.pageencoding.conflict=L''encode de page (Page-encoding) indiqué dans le jsp-property-group ({0}) est différent de celui indiqué dans la directive de page ({1}) +jsp.error.page.config_pagedir_encoding_conflict=L''encode de page (Page-encoding) indiqué dans le jsp-property-group ({0}) est différent de celui indiqué dans la directive de page ({1}) +jsp.error.page.prolog_pagedir_encoding_conflict= +jsp.error.page.prolog_config_encoding_conflict= jsp.error.attribute.non_rt_with_expr=D''après la TLD, l''attribut {0} n''accepte aucune expression jsp.error.scripting.variable.missing_name=Incapable de déterminer le nom de variable scripting d''après l''attribut {0} jasper.error.emptybodycontent.nonempty=D''après la TLD, le tag {0} doit être vide, mais ne l''est pas 1.22 +4 -2 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties Index: messages_ja.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages_ja.properties,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- messages_ja.properties 6 Nov 2002 20:14:20 -0000 1.21 +++ messages_ja.properties 7 Nov 2002 22:19:13 -0000 1.22 @@ -248,7 +248,9 @@ jsp.warning.bad.urlpattern.propertygroup= jsp.error.jspelement.missing.name= jsp.error.tagdirective.badbodycontent= -jsp.error.page.pageencoding.conflict= +jsp.error.page.config_pagedir_encoding_conflict= +jsp.error.page.prolog_pagedir_encoding_conflict= +jsp.error.page.prolog_config_encoding_conflict= jsp.error.attribute.non_rt_with_expr= jsp.error.scripting.variable.missing_name= jasper.error.emptybodycontent.nonempty=
-- To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>