Author: markt
Date: Tue Feb 12 14:54:52 2013
New Revision: 1445192
URL: http://svn.apache.org/r1445192
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54239
Enable applications to use a custom EL interpreter.
Based on a patch by Sheldon Shao.
Added:
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELInterpreter.java
- copied unchanged from r1445190,
tomcat/trunk/java/org/apache/jasper/compiler/ELInterpreter.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELInterpreterFactory.java
- copied unchanged from r1445190,
tomcat/trunk/java/org/apache/jasper/compiler/ELInterpreterFactory.java
tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELInterpreterFactory.java
- copied unchanged from r1445190,
tomcat/trunk/test/org/apache/jasper/compiler/TestELInterpreterFactory.java
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Generator.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
tomcat/tc7.0.x/trunk/webapps/docs/jasper-howto.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1445190
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Generator.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Generator.java?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Generator.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Generator.java Tue Feb
12 14:54:52 2013
@@ -125,6 +125,8 @@ class Generator {
private final DateFormat timestampFormat;
+ private final ELInterpreter elInterpreter;
+
/**
* @param s
* the input string
@@ -831,8 +833,8 @@ class Generator {
}
return v;
} else if (attr.isELInterpreterInput()) {
- v = JspUtil.interpreterCall(this.isTagFile, v, expectedType,
- attr.getEL().getMapName(), false);
+ v = elInterpreter.interpreterCall(ctxt, this.isTagFile, v,
+ expectedType, attr.getEL().getMapName(), false);
if (encode) {
return
"org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("
+ v + ", request.getCharacterEncoding())";
@@ -917,9 +919,10 @@ class Generator {
n.setBeginJavaLine(out.getJavaLine());
if (!pageInfo.isELIgnored() && (n.getEL() != null)) {
out.printil("out.write("
- + JspUtil.interpreterCall(this.isTagFile, n.getType() +
- "{" + n.getText() + "}", String.class,
- n.getEL().getMapName(), false) + ");");
+ + elInterpreter.interpreterCall(ctxt, this.isTagFile,
+ n.getType() + "{" + n.getText() + "}",
+ String.class, n.getEL().getMapName(), false) +
+ ");");
} else {
out.printil("out.write("
+ quote(n.getType() + "{" + n.getText() + "}") + ");");
@@ -2977,8 +2980,8 @@ class Generator {
// run attrValue through the expression interpreter
String mapName = (attr.getEL() != null) ? attr.getEL()
.getMapName() : null;
- attrValue = JspUtil.interpreterCall(this.isTagFile,
attrValue,
- c[0], mapName, false);
+ attrValue = elInterpreter.interpreterCall(ctxt,
+ this.isTagFile, attrValue, c[0], mapName, false);
}
} else {
attrValue = convertString(c[0], attrValue, localName,
@@ -3416,7 +3419,7 @@ class Generator {
/**
* Constructor.
*/
- Generator(ServletWriter out, Compiler compiler) {
+ Generator(ServletWriter out, Compiler compiler) throws JasperException {
this.out = out;
methodsBuffered = new ArrayList<GenBuffer>();
charArrayBuffer = null;
@@ -3425,6 +3428,16 @@ class Generator {
fragmentHelperClass = new FragmentHelperClass("Helper");
pageInfo = compiler.getPageInfo();
+ ELInterpreter elInterpreter = null;
+ try {
+ elInterpreter = ELInterpreterFactory.getELInterpreter(
+ compiler.getCompilationContext().getServletContext());
+ } catch (Exception e) {
+ err.jspError("jsp.error.el_interpreter_class.instantiation",
+ e.getMessage());
+ }
+ this.elInterpreter = elInterpreter;
+
/*
* Temporary hack. If a JSP page uses the "extends" attribute of the
* page directive, the _jspInit() method of the generated servlet class
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings.properties
Tue Feb 12 14:54:52 2013
@@ -492,3 +492,6 @@ xmlParser.skipBomFail=Failed to skip BOM
jsp.tldCache.noTldInJar=No TLD files were found in [{0}]. Consider adding the
JAR to the tomcat.util.scan.DefaultJarScanner.jarsToSkip or
org.apache.catalina.startup.TldConfig.jarsToSkip property in
CATALINA_BASE/conf/catalina.properties file.
jsp.tldCache.noTldSummary=At least one JAR was scanned for TLDs yet contained
no TLDs. Enable debug logging for this logger for a complete list of JARs that
were scanned but no TLDs were found in them. Skipping unneeded JARs during
scanning can improve startup time and JSP compilation time.
+
+#ELInterpreter
+jsp.error.el_interpreter_class.instantiation=Failed to load or instantiate
ELInterpreter class [{0}]
\ No newline at end of file
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties
Tue Feb 12 14:54:52 2013
@@ -480,3 +480,6 @@ jsp.message.jsp_unload_check = Revisando
xmlParser.skipBomFail = No pude saltar BOM al analizar flujo de entrada XML
jsp.tldCache.noTldInJar = No se han hallado ficheros TLD en [{0}]. Considera
a\u00F1adir el JAR a la propiedad tomcat.util.scan.DefaultJarScanner.jarsToSkip
en el fichero CATALINA_BASE/conf/catalina.propeperties.
jsp.tldCache.noTldSummary = Al menos un JAR, que se ha explorado buscando
TLDs, a\u00FAn no conten\u00EDa TLDs. Activar historial de depuraci\u00F3n para
este historiador para una completa lista de los JARs que fueron explorados y de
los que nos se hall\u00F3 TLDs. Saltarse JARs no necesarios durante la
exploraci\u00F3n puede dar lugar a una mejora de tiempo significativa en el
arranque y compilaci\u00F3n de JSP .
+
+#ELInterpreter
+jsp.error.el_interpreter_class.instantiation=No se puede cargar la clase
ELInterpreter llamada [{0}]
\ No newline at end of file
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties
Tue Feb 12 14:54:52 2013
@@ -314,3 +314,6 @@ jsp.error.attributes.not.allowed = {0} n
#jsp.error.jspoutput.nonemptybody=
#jsp.error.jspoutput.invalidUse=
#jsp.error.invalid.bean=
+
+#ELInterpreter
+jsp.error.el_interpreter_class.instantiation=Impossible de charger ou
d''instancier la classe ELInterpreter [{0}]
\ No newline at end of file
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties
Tue Feb 12 14:54:52 2013
@@ -415,3 +415,5 @@ jsp.error.unbalanced.endtag=\u7d42\u4e86
jsp.error.invalid.bean=useBean\u306e\u30af\u30e9\u30b9\u5c5e\u6027 {0}
\u306e\u5024\u304c\u7121\u52b9\u3067\u3059
jsp.error.prefix.use_before_dcl=\u3053\u306e\u30bf\u30b0\u6307\u793a\u5b50\u3067\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30d7\u30ea\u30d5\u30a3\u30c3\u30af\u30b9
{0} \u306f\u3001\u3059\u3067\u306b\u30d5\u30a1\u30a4\u30eb {1} \u306e {2}
\u884c\u76ee\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059
+#ELInterpreter
+jsp.error.el_interpreter_class.instantiation=ELInterpreter
class\u306e\u30ed\u30fc\u30c9\u53c8\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f
[{0}]
\ No newline at end of file
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Feb 12 14:54:52 2013
@@ -76,6 +76,15 @@
</fix>
</changelog>
</subsection>
+ <subsection name="Jasper">
+ <changelog>
+ <add>
+ <bug>54239</bug>: Enable web applications to provide their own
+ Expression Language interpreter to enable them to optimise processing
of
+ expressions. Based on a patch by Sheldon Shao. (markt)
+ </add>
+ </changelog>
+ </subsection>
<subsection name="Web applications">
<changelog>
<add>
Modified: tomcat/tc7.0.x/trunk/webapps/docs/jasper-howto.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/jasper-howto.xml?rev=1445192&r1=1445191&r2=1445192&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/jasper-howto.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/jasper-howto.xml Tue Feb 12 14:54:52 2013
@@ -380,6 +380,28 @@ depending on the application.</li>
</p>
</section>
+<section name="Optimisation">
+<p>
+There are a number of extension points provided within Jasper that enable the
+user to optimise the behaviour for their environment.
+</p>
+
+<p>
+The first of these extension points is the tag plug-in mechanism. This allows
+alternative implementations of tag handlers to be provided for a web
application
+to use. Tag plug-ins are registered via a <code>tagPlugins.xml</code> file
+located under <code>WEB-INF</code>. A sample plug-in for the JSTL is included
+with Jasper.
+</p>
+
+<p>
+The second extension point is the Expression Language interpreter. Alternative
+interpreters may be configured through the <code>ServletContext</code>. See the
+<code>ELInterpreterFactory</code> javadoc for details of how to configure an
+alternative EL interpreter.
+</p>
+</section>
+
</body>
</document>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]