You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pi...@locus.apache.org on 2000/11/30 22:48:29 UTC
cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler BeanGenerator.java DelegatingListener.java ForwardGenerator.java IncludeGenerator.java JspParseEventListener.java JspUtil.java ParseEventListener.java ParserXJspSaxHandler.java PluginGenerator.java SetPropertyGenerator.java TagBeginGenerator.java BaseJspListener.java DumbParseEventListener.java
pierred 00/11/30 13:48:26
Modified: jasper/src/share/org/apache/jasper/compiler
BeanGenerator.java DelegatingListener.java
ForwardGenerator.java IncludeGenerator.java
JspParseEventListener.java JspUtil.java
ParseEventListener.java ParserXJspSaxHandler.java
PluginGenerator.java SetPropertyGenerator.java
TagBeginGenerator.java
Removed: jasper/src/share/org/apache/jasper/compiler
BaseJspListener.java DumbParseEventListener.java
Log:
Let generators that process request-time expressions know for
which syntax they were created. This is necessary since the way
an rtexpr is specified is different depending on the syntax
(<%...%> for JSP, and %=...% for XML)]. This affects the
following generators:
SetPropertyGenerator
BeanGenerator
Includegenerator
ForwardGenerator
PluginGenerator (via <jsp:param>)
TagBeginGenerator
JspUtil:
- isExpression() and getExpr() now take isXml argument to tell
in which syntax the runtime expression must be processed.
Generators mentioned above:
- Added isXml argument to the constructor.
- Now calls the JspUtil isExpression() and getExpr() methods with the
isXml argument.
JspParseEventListener
DelegatingListener
ParseEventListener
- new handler routines for the above generators that takes an extra
boolean argument, isXml, which is passed to the generator's constructor.
(already existing handler routine simply calls this new one with a
'false' value for isXml).
- now implements ParseEventListener instead of extending BaseJspListener
(see below).
ParserXJspSaxHandler
- calls the JspParseEventListener handler routines for the above jsp
actions with the isXml boolean argument.
removed:
BaseJspListener.java
DumbParseEventListener.java
- These classes added no real value and are always a pain to update
whenever the ParseEventListener interface is updated.
Revision Changes Path
1.3 +8 -6 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/BeanGenerator.java
Index: BeanGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/BeanGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BeanGenerator.java 2000/10/11 19:35:10 1.2
+++ BeanGenerator.java 2000/11/30 21:47:47 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/BeanGenerator.java,v 1.2 2000/10/11 19:35:10 shemnon Exp $
- * $Revision: 1.2 $
- * $Date: 2000/10/11 19:35:10 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/BeanGenerator.java,v 1.3 2000/11/30 21:47:47 pierred Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/11/30 21:47:47 $
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
@@ -82,13 +82,15 @@
boolean genSession;
boolean beanRT = false;
Mark start;
+ boolean isXml;
public BeanGenerator (Mark start, Attributes attrs, BeanRepository beanInfo,
- boolean genSession) {
+ boolean genSession, boolean isXml) {
this.attrs = attrs;
this.beanInfo = beanInfo;
this.genSession = genSession;
this.start = start;
+ this.isXml = isXml;
}
public void generate (ServletWriter writer, Class phase)
@@ -171,8 +173,8 @@
if (type == null) type = clsname;
// See if beanName is a request-time expression.
- if (beanName != null && JspUtil.isExpression (beanName)) {
- beanName = JspUtil.getExpr (beanName);
+ if (beanName != null && JspUtil.isExpression (beanName, isXml)) {
+ beanName = JspUtil.getExpr (beanName, isXml);
beanRT = true;
}
1.5 +39 -10 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java
Index: DelegatingListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DelegatingListener.java 2000/10/11 19:35:11 1.4
+++ DelegatingListener.java 2000/11/30 21:47:48 1.5
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v 1.4 2000/10/11 19:35:11 shemnon Exp $
- * $Revision: 1.4 $
- * $Date: 2000/10/11 19:35:11 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/DelegatingListener.java,v 1.5 2000/11/30 21:47:48 pierred Exp $
+ * $Revision: 1.5 $
+ * $Date: 2000/11/30 21:47:48 $
*
* ====================================================================
*
@@ -138,10 +138,15 @@
public void handleBean(Mark start,Mark stop,Attributes attrs) throws JasperException
{
+ handleBean(start, stop, attrs, false);
+ }
+
+ public void handleBean(Mark start,Mark stop,Attributes attrs, boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handleBean(start, stop, attrs);
+ delegate.handleBean(start, stop, attrs, isXml);
}
-
+
public void handleBeanEnd(Mark start,Mark stop,Attributes attrs) throws JasperException
{
doAction(this.tmplStart, this.tmplStop);
@@ -156,14 +161,24 @@
public void handleSetProperty(Mark start,Mark stop,Attributes attrs) throws JasperException
{
+ handleSetProperty(start, stop, attrs, false);
+ }
+
+ public void handleSetProperty(Mark start,Mark stop,Attributes attrs,boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handleSetProperty(start, stop, attrs);
+ delegate.handleSetProperty(start, stop, attrs, isXml);
}
public void handlePlugin(Mark start,Mark stop,Attributes attrs,Hashtable param,String fallback) throws JasperException
{
+ handlePlugin(start, stop, attrs, param, fallback, false);
+ }
+
+ public void handlePlugin(Mark start,Mark stop,Attributes attrs,Hashtable param,String fallback, boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handlePlugin(start, stop, attrs, param, fallback);
+ delegate.handlePlugin(start, stop, attrs, param, fallback, isXml);
}
public void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException {
@@ -172,20 +187,34 @@
public void handleForward(Mark start,Mark stop,Attributes attrs,Hashtable param) throws JasperException
{
+ handleForward(start, stop, attrs, param, false);
+ }
+
+ public void handleForward(Mark start,Mark stop,Attributes attrs,Hashtable param, boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handleForward(start, stop, attrs, param);
+ delegate.handleForward(start, stop, attrs, param, isXml);
}
public void handleInclude(Mark start,Mark stop,Attributes attrs,Hashtable param) throws JasperException
{
+ handleInclude(start, stop, attrs, param, false);
+ }
+
+ public void handleInclude(Mark start,Mark stop,Attributes attrs,Hashtable param, boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handleInclude(start, stop, attrs, param);
+ delegate.handleInclude(start, stop, attrs, param, isXml);
}
public void handleTagBegin(Mark start,Mark stop,Attributes attrs,String prefix,String shortTagName,TagLibraryInfo tli,TagInfo ti) throws JasperException
{
+ handleTagBegin(start, stop, attrs, prefix, shortTagName, tli, ti, false);
+ }
+ public void handleTagBegin(Mark start,Mark stop,Attributes attrs,String prefix,String shortTagName,TagLibraryInfo tli,TagInfo ti, boolean isXml) throws JasperException
+ {
doAction(this.tmplStart, this.tmplStop);
- delegate.handleTagBegin(start, stop, attrs, prefix, shortTagName, tli, ti);
+ delegate.handleTagBegin(start, stop, attrs, prefix, shortTagName, tli, ti, isXml);
}
public void handleTagEnd(Mark start,Mark stop,String prefix,String shortTagName,Attributes attrs,TagLibraryInfo tli,TagInfo ti) throws JasperException
1.4 +13 -10 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ForwardGenerator.java
Index: ForwardGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ForwardGenerator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ForwardGenerator.java 2000/10/24 00:37:57 1.3
+++ ForwardGenerator.java 2000/11/30 21:47:52 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ForwardGenerator.java,v 1.3 2000/10/24 00:37:57 pierred Exp $
- * $Revision: 1.3 $
- * $Date: 2000/10/24 00:37:57 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ForwardGenerator.java,v 1.4 2000/11/30 21:47:52 pierred Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/11/30 21:47:52 $
*
* ====================================================================
*
@@ -82,8 +82,10 @@
String page;
boolean isExpression = false;
Hashtable params;
+ boolean isXml;
- public ForwardGenerator(Mark start, Attributes attrs, Hashtable param)
+ public ForwardGenerator(Mark start, Attributes attrs, Hashtable param,
+ boolean isXml)
throws JasperException {
if (attrs.getLength() != 1)
throw new JasperException(Constants.getString("jsp.error.invalid.forward"));
@@ -94,7 +96,8 @@
Constants.getString("jsp.error.invalid.forward"));
this.params = param;
- isExpression = JspUtil.isExpression (page);
+ this.isXml = isXml;
+ isExpression = JspUtil.isExpression (page, isXml);
}
public void generate(ServletWriter writer, Class phase) {
@@ -115,21 +118,21 @@
initial = false;
} else sep = "&";
- if (value.length == 1 && JspUtil.isExpression(value[0]))
+ if (value.length == 1 && JspUtil.isExpression(value[0], isXml))
writer.println("_jspx_qfStr = _jspx_qfStr + \"" + sep +
- key + "=\" + " + JspUtil.getExpr(value[0]) + ";");
+ key + "=\" + " + JspUtil.getExpr(value[0], isXml) + ";");
else {
if (value.length == 1)
writer.println("_jspx_qfStr = _jspx_qfStr + \"" + sep +
key + "=\" + \"" + value[0] + "\";");
else {
for (int i = 0; i < value.length; i++) {
- if (!JspUtil.isExpression(value[i]))
+ if (!JspUtil.isExpression(value[i], isXml))
writer.println("_jspx_qfStr = _jspx_qfStr + \"" + sep +
key + "=\" + \"" + value[i] + "\";");
else
writer.println("_jspx_qfStr = _jspx_qfStr + \"" + sep +
- key + "=\" +" + JspUtil.getExpr(value[i])+ ";");
+ key + "=\" +" + JspUtil.getExpr(value[i], isXml)+ ";");
if (sep.equals("?")) sep = "&";
}
}
@@ -141,7 +144,7 @@
writer.quoteString(page) + " + _jspx_qfStr);");
else
writer.println("pageContext.forward(" +
- JspUtil.getExpr (page) + " + _jspx_qfStr);");
+ JspUtil.getExpr (page, isXml) + " + _jspx_qfStr);");
writer.println("return;");
writer.popIndent();
1.6 +13 -10 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java
Index: IncludeGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- IncludeGenerator.java 2000/10/24 00:37:58 1.5
+++ IncludeGenerator.java 2000/11/30 21:47:53 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v 1.5 2000/10/24 00:37:58 pierred Exp $
- * $Revision: 1.5 $
- * $Date: 2000/10/24 00:37:58 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/IncludeGenerator.java,v 1.6 2000/11/30 21:47:53 pierred Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/11/30 21:47:53 $
*
* ====================================================================
*
@@ -86,8 +86,10 @@
boolean isExpression = false;
boolean flush;
Hashtable params;
+ boolean isXml;
- public IncludeGenerator(Mark start, Attributes attrs, Hashtable param)
+ public IncludeGenerator(Mark start, Attributes attrs, Hashtable param,
+ boolean isXml)
throws JasperException
{
if (attrs.getLength() > 2) {
@@ -120,7 +122,8 @@
new Object[]{flushString}));
}
this.params = param;
- isExpression = JspUtil.isExpression (page);
+ this.isXml = isXml;
+ isExpression = JspUtil.isExpression (page, isXml);
}
public void generate(ServletWriter writer, Class phase) {
@@ -142,9 +145,9 @@
initial = false;
} else sep = "&";
- if (value.length == 1 && JspUtil.isExpression(value[0])) {
+ if (value.length == 1 && JspUtil.isExpression(value[0], isXml)) {
writer.println("_jspx_qStr = _jspx_qStr + \"" + sep +
- key + "=\" + " + JspUtil.getExpr(value[0]) + ";");
+ key + "=\" + " + JspUtil.getExpr(value[0], isXml) + ";");
} else {
if (value.length == 1) {
writer.println("_jspx_qStr = _jspx_qStr + \"" + sep +
@@ -152,12 +155,12 @@
} else {
writer.println("String [] _tmpS = new String[" + value.length +"];");
for (int i = 0; i < value.length; i++) {
- if (!JspUtil.isExpression(value[i]))
+ if (!JspUtil.isExpression(value[i], isXml))
writer.println("_jspx_qStr = _jspx_qStr + \"" + sep +
key + "=\" + \"" + value[i] + "\";");
else
writer.println("_jspx_qStr = _jspx_qStr + \"" + sep +
- key + "=\" +" + JspUtil.getExpr(value[i])+ ";");
+ key + "=\" +" + JspUtil.getExpr(value[i], isXml)+ ";");
if (sep.equals("?")) sep = "&";
}
@@ -170,7 +173,7 @@
writer.quoteString(page) + " + _jspx_qStr);");
else
writer.println ("pageContext.include(" +
- JspUtil.getExpr(page) + " + _jspx_qStr);");
+ JspUtil.getExpr(page, isXml) + " + _jspx_qStr);");
writer.popIndent();
writer.println("}");
1.13 +94 -37 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java
Index: JspParseEventListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JspParseEventListener.java 2000/11/26 16:17:34 1.12
+++ JspParseEventListener.java 2000/11/30 21:47:54 1.13
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.12 2000/11/26 16:17:34 pierred Exp $
- * $Revision: 1.12 $
- * $Date: 2000/11/26 16:17:34 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.13 2000/11/30 21:47:54 pierred Exp $
+ * $Revision: 1.13 $
+ * $Date: 2000/11/30 21:47:54 $
*
* ====================================================================
*
@@ -92,10 +92,13 @@
* @author Pierre Delisle
* @author Danno Ferrin
*/
-public class JspParseEventListener extends BaseJspListener {
+public class JspParseEventListener implements ParseEventListener {
private static CommentGenerator commentGenerator = new JakartaCommentGenerator();
+ protected JspReader reader;
+ protected ServletWriter writer;
+
JspCompilationContext ctxt;
ParserController parserCtl;
@@ -156,13 +159,21 @@
commentGenerator = generator;
}
+ public void setReader(JspReader reader) {
+ this.reader = reader;
+ }
+
+ public void setTemplateInfo(Mark start, Mark stop) {
+ }
+
/*
* Package private since I want everyone to come in through
* org.apache.jasper.compiler.Main.
*/
JspParseEventListener(JspCompilationContext ctxt,
ParserController parserCtl) {
- super(ctxt.getReader(), ctxt.getWriter());
+ this.reader = ctxt.getReader();
+ this.writer = ctxt.getWriter();
this.ctxt = ctxt;
this.parserCtl = parserCtl;
this.beanInfo = new BeanRepository(ctxt.getClassLoader());
@@ -855,15 +866,22 @@
}
public void handleBean(Mark start, Mark stop, Attributes attrs)
- throws JasperException
+ throws JasperException
{
- Generator gen
- = new GeneratorWrapper(new BeanGenerator(start, attrs, beanInfo,
- genSessionVariable),
- start, stop);
+ handleBean(start, stop, attrs, false);
+ }
- addGenerator(gen);
- xo.append("jsp:useBean", attrs);
+ public void handleBean(Mark start, Mark stop, Attributes attrs,
+ boolean isXml)
+ throws JasperException
+ {
+ Generator gen =
+ new GeneratorWrapper(
+ new BeanGenerator(start, attrs, beanInfo,
+ genSessionVariable, isXml),
+ start, stop);
+ addGenerator(gen);
+ xo.append("jsp:useBean", attrs);
}
public void handleBeanEnd(Mark start, Mark stop, Attributes attrs)
@@ -889,53 +907,80 @@
}
public void handleSetProperty(Mark start, Mark stop, Attributes attrs)
- throws JasperException
+ throws JasperException
{
- Generator gen
- = new GeneratorWrapper(new SetPropertyGenerator(start, stop, attrs,
- beanInfo), start, stop);
+ handleSetProperty(start, stop, attrs, false);
+ }
- addGenerator(gen);
- xo.append("jsp:setProperty", attrs);
+ public void handleSetProperty(Mark start, Mark stop, Attributes attrs,
+ boolean isXml)
+ throws JasperException
+ {
+ Generator gen =
+ new GeneratorWrapper(
+ new SetPropertyGenerator(start, stop, attrs, beanInfo, isXml),
+ start, stop);
+ addGenerator(gen);
+ xo.append("jsp:setProperty", attrs);
}
public void handlePlugin(Mark start, Mark stop, Attributes attrs,
- Hashtable param, String fallback)
+ Hashtable param, String fallback)
throws JasperException
{
- Constants.message("jsp.message.handling_plugin",
- new Object[] { attrs },
- Logger.DEBUG);
+ handlePlugin(start, stop, attrs, param, fallback, false);
+ }
- Generator gen = new GeneratorWrapper (new PluginGenerator (start, attrs,
- param, fallback), start, stop);
+ public void handlePlugin(Mark start, Mark stop, Attributes attrs,
+ Hashtable param, String fallback, boolean isXml)
+ throws JasperException
+ {
+ Generator gen =
+ new GeneratorWrapper(
+ new PluginGenerator(start, attrs, param, fallback, isXml),
+ start, stop);
addGenerator (gen);
//@@@ xo
}
- public void handleForward(Mark start, Mark stop, Attributes attrs, Hashtable param)
+ public void handleForward(Mark start, Mark stop, Attributes attrs,
+ Hashtable param)
throws JasperException
{
- Generator gen
- = new GeneratorWrapper(new ForwardGenerator(start, attrs, param),
- start, stop);
+ handleForward(start, stop, attrs, param, false);
+ }
+ public void handleForward(Mark start, Mark stop, Attributes attrs,
+ Hashtable param, boolean isXml)
+ throws JasperException
+ {
+ Generator gen =
+ new GeneratorWrapper(
+ new ForwardGenerator(start, attrs, param, isXml),
+ start, stop);
addGenerator(gen);
//@@@ xo
}
- public void handleInclude(Mark start, Mark stop, Attributes attrs, Hashtable param)
+ public void handleInclude(Mark start, Mark stop, Attributes attrs,
+ Hashtable param)
throws JasperException
{
- Generator gen
- = new GeneratorWrapper(new IncludeGenerator(start, attrs, param),
- start, stop);
+ handleInclude(start, stop, attrs, param, false);
+ }
+ public void handleInclude(Mark start, Mark stop, Attributes attrs,
+ Hashtable param, boolean isXml)
+ throws JasperException
+ {
+ Generator gen =
+ new GeneratorWrapper(
+ new IncludeGenerator(start, attrs, param, isXml),
+ start, stop);
addGenerator(gen);
//@@@ xo
}
-
public void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException {
GeneratorBase cdg;
@@ -955,15 +1000,27 @@
xo.append(chars);
}
- public void handleTagBegin(Mark start, Mark stop, Attributes attrs, String prefix,
+ public void handleTagBegin(Mark start, Mark stop,
+ Attributes attrs, String prefix,
String shortTagName, TagLibraryInfo tli,
TagInfo ti)
throws JasperException
{
- TagBeginGenerator tbg = new TagBeginGenerator(start, prefix, shortTagName, attrs,
- tli, ti, libraries, getTagHandlerStack(), getTagVarNumbers());
- Generator gen = new GeneratorWrapper(tbg, start, stop);
+ handleTagBegin(start, stop, attrs, prefix, shortTagName, tli, ti,
+ false);
+ }
+ public void handleTagBegin(Mark start, Mark stop,
+ Attributes attrs, String prefix,
+ String shortTagName, TagLibraryInfo tli,
+ TagInfo ti, boolean isXml)
+ throws JasperException
+ {
+ TagBeginGenerator tbg =
+ new TagBeginGenerator(start, prefix, shortTagName, attrs,
+ tli, ti, libraries, getTagHandlerStack(),
+ getTagVarNumbers(), isXml);
+ Generator gen = new GeneratorWrapper(tbg, start, stop);
addGenerator(gen);
xo.append(prefix+":"+shortTagName, attrs);
}
1.7 +48 -16 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java
Index: JspUtil.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- JspUtil.java 2000/11/18 22:36:48 1.6
+++ JspUtil.java 2000/11/30 21:47:55 1.7
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.6 2000/11/18 22:36:48 pierred Exp $
- * $Revision: 1.6 $
- * $Date: 2000/11/18 22:36:48 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.7 2000/11/30 21:47:55 pierred Exp $
+ * $Revision: 1.7 $
+ * $Date: 2000/11/30 21:47:55 $
*
* ====================================================================
*
@@ -93,11 +93,15 @@
* @author Mandar Raje.
* @author Rajiv Mordani.
* @author Danno Ferrin
+ * @author Pierre Delisle
*/
public class JspUtil {
+ // Delimiters for request-time expressions (JSP and XML syntax)
private static final String OPEN_EXPR = "<%=";
private static final String CLOSE_EXPR = "%>";
+ private static final String OPEN_EXPR_XML = "%=";
+ private static final String CLOSE_EXPR_XML = "%";
private static ErrorHandler errorHandler = new MyErrorHandler();
private static EntityResolver entityResolver = new MyEntityResolver();
@@ -116,27 +120,55 @@
return caw.toCharArray();
}
- // Checks if the token is a runtime expression.
- public static boolean isExpression (String token) {
-
- if (token.startsWith(OPEN_EXPR) && token.endsWith(CLOSE_EXPR)) {
+ /**
+ * Checks if the token is a runtime expression.
+ * In standard JSP syntax, a runtime expression starts with '<%' and
+ * ends with '%>'. When the JSP document is in XML syntax, a runtime
+ * expression starts with '%=' and ends with '%'.
+ *
+ * @param token The token to be checked
+ * return whether the token is a runtime expression or not.
+ */
+ public static boolean isExpression(String token, boolean isXml) {
+ String openExpr;
+ String closeExpr;
+ if (isXml) {
+ openExpr = OPEN_EXPR_XML;
+ closeExpr = CLOSE_EXPR_XML;
+ } else {
+ openExpr = OPEN_EXPR;
+ closeExpr = CLOSE_EXPR;
+ }
+ if (token.startsWith(openExpr) && token.endsWith(closeExpr)) {
return true;
+ } else {
+ return false;
}
-
- return false;
}
- // Returns the "expression" part -- takin <%= and %> out.
- public static String getExpr (String expression) {
+ /**
+ * @return the "expression" part of a runtime expression,
+ * taking the delimiters out.
+ */
+ public static String getExpr (String expression, boolean isXml) {
String returnString;
+ String openExpr;
+ String closeExpr;
+ if (isXml) {
+ openExpr = OPEN_EXPR_XML;
+ closeExpr = CLOSE_EXPR_XML;
+ } else {
+ openExpr = OPEN_EXPR;
+ closeExpr = CLOSE_EXPR;
+ }
int length = expression.length();
-
- if (expression.startsWith(OPEN_EXPR) && expression.endsWith(CLOSE_EXPR)) {
- returnString = expression.substring (OPEN_EXPR.length(), length - CLOSE_EXPR.length());
+ if (expression.startsWith(openExpr) &&
+ expression.endsWith(closeExpr)) {
+ returnString = expression.substring(
+ openExpr.length(), length - closeExpr.length());
} else {
returnString = "";
}
-
return returnString;
}
@@ -148,7 +180,7 @@
int length = expression.length();
if (expression.startsWith(OPEN_EXPR)
- && expression.endsWith(CLOSE_EXPR)) {
+ && expression.endsWith(CLOSE_EXPR)) {
returnString = expression.substring (1, length - 1);
} else {
returnString = expression;
1.5 +15 -3 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java
Index: ParseEventListener.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ParseEventListener.java 2000/10/11 19:35:15 1.4
+++ ParseEventListener.java 2000/11/30 21:47:56 1.5
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v 1.4 2000/10/11 19:35:15 shemnon Exp $
- * $Revision: 1.4 $
- * $Date: 2000/10/11 19:35:15 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParseEventListener.java,v 1.5 2000/11/30 21:47:56 pierred Exp $
+ * $Revision: 1.5 $
+ * $Date: 2000/11/30 21:47:56 $
*
* ====================================================================
*
@@ -99,12 +99,17 @@
void handleExpression(Mark start, Mark stop, Attributes attrs, char[] text) throws JasperException;
void handleBean(Mark start, Mark stop, Attributes attrs)
throws JasperException;
+ void handleBean(Mark start, Mark stop, Attributes attrs, boolean isXml)
+ throws JasperException;
void handleBeanEnd (Mark start, Mark stop, Attributes attrs)
throws JasperException;
void handleGetProperty(Mark start, Mark stop, Attributes attrs) throws JasperException;
void handleSetProperty(Mark start, Mark stop, Attributes attrs) throws JasperException;
+ void handleSetProperty(Mark start, Mark stop, Attributes attrs, boolean isXml) throws JasperException;
void handlePlugin(Mark start, Mark stop, Attributes attrs, Hashtable param,
String fallback) throws JasperException;
+ void handlePlugin(Mark start, Mark stop, Attributes attrs, Hashtable param,
+ String fallback, boolean isXml) throws JasperException;
void handleCharData(Mark start, Mark stop, char[] chars) throws JasperException;
@@ -121,6 +126,9 @@
void handleTagBegin(Mark start, Mark stop, Attributes attrs, String prefix, String shortTagName,
TagLibraryInfo tli, TagInfo ti)
throws JasperException;
+ void handleTagBegin(Mark start, Mark stop, Attributes attrs, String prefix, String shortTagName,
+ TagLibraryInfo tli, TagInfo ti, boolean isXml)
+ throws JasperException;
void handleTagEnd(Mark start, Mark stop, String prefix, String shortTagName,
Attributes attrs, TagLibraryInfo tli, TagInfo ti)
@@ -128,7 +136,11 @@
void handleForward(Mark start, Mark stop, Attributes attrs, Hashtable param)
throws JasperException;
+ void handleForward(Mark start, Mark stop, Attributes attrs, Hashtable param, boolean isXml)
+ throws JasperException;
void handleInclude(Mark start, Mark stop, Attributes attrs, Hashtable param)
+ throws JasperException;
+ void handleInclude(Mark start, Mark stop, Attributes attrs, Hashtable param, boolean isXml)
throws JasperException;
void endPageProcessing() throws JasperException;
1.4 +6 -6 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSaxHandler.java
Index: ParserXJspSaxHandler.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/ParserXJspSaxHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ParserXJspSaxHandler.java 2000/10/11 19:35:16 1.3
+++ ParserXJspSaxHandler.java 2000/11/30 21:47:57 1.4
@@ -257,7 +257,7 @@
if (name.equals("jsp:root")) {
jspHandler.handleRootBegin(node.attrs);
} else if (name.equals("jsp:useBean")) {
- jspHandler.handleBean(node.start, node.start, node.attrs);
+ jspHandler.handleBean(node.start, node.start, node.attrs, true);
} else if (name.length()<4 ||
!name.substring(0,4).equals("jsp:")) {
// custom tag or 'uninterpreted' tag
@@ -347,7 +347,7 @@
node = (Node)stack.pop();
}
node.validate(true, true); //@@@
- jspHandler.handleInclude(node.start, stop, node.attrs, params);
+ jspHandler.handleInclude(node.start, stop, node.attrs, params, true);
} else if (name.equals("jsp:forward")) {
Hashtable params = null;
if (!node.rawName.equals("jsp:forward")) {
@@ -357,7 +357,7 @@
node = (Node)stack.pop();
}
node.validate(true, true);
- jspHandler.handleForward(node.start, stop, node.attrs, params);
+ jspHandler.handleForward(node.start, stop, node.attrs, params, true);
} else if (name.equals("jsp:useBean")) {
node.validate(true, true); // @@@
jspHandler.handleBeanEnd(node.start, stop, node.attrs);
@@ -366,7 +366,7 @@
jspHandler.handleGetProperty(node.start, stop, node.attrs);
} else if (name.equals("jsp:setProperty")) {
node.validate(true, true); // @@@
- jspHandler.handleSetProperty(node.start, stop, node.attrs);
+ jspHandler.handleSetProperty(node.start, stop, node.attrs, true);
} else if (name.equals("jsp:plugin")) {
//@@@ test jsp parser to see if fallback can come first?
Hashtable params = null;
@@ -385,7 +385,7 @@
node.validate(true, true);
//p(node);
jspHandler.handlePlugin(node.start, stop, node.attrs, params,
- fallback);
+ fallback, true);
} else {
if (node.isUninterpretedTag()) {
// this is an 'uninterpreted' tag
@@ -421,7 +421,7 @@
node = new NodeTag(node, prefix, shortTagName, tli, ti);
stack.push(node);
jspHandler.handleTagBegin(node.start, node.start, node.attrs,
- prefix, shortTagName, tli, ti);
+ prefix, shortTagName, tli, ti, true);
}
private void processCustomTagEnd(NodeTag node, Mark stop)
1.3 +11 -9 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/PluginGenerator.java
Index: PluginGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/PluginGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PluginGenerator.java 2000/10/11 19:35:16 1.2
+++ PluginGenerator.java 2000/11/30 21:47:57 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/PluginGenerator.java,v 1.2 2000/10/11 19:35:16 shemnon Exp $
- * $Revision: 1.2 $
- * $Date: 2000/10/11 19:35:16 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/PluginGenerator.java,v 1.3 2000/11/30 21:47:57 pierred Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/11/30 21:47:57 $
*
* ====================================================================
*
@@ -86,14 +86,16 @@
String ieClassId;
Mark start;
+ boolean isXml;
public PluginGenerator(Mark start, Attributes attrs, Hashtable param,
- String fallback) {
+ String fallback, boolean isXml) {
this.attrs = attrs;
this.param = param;
this.fallback = fallback;
this.start = start;
+ this.isXml = isXml;
}
public void init(JspCompilationContext ctxt) throws JasperException {
@@ -202,9 +204,9 @@
//Check to see if the param is an expression, if so
//evaluate that and put the value.
String temp = null;
- if (JspUtil.isExpression (value[0])) {
- temp = JspUtil.getExpr (value[0]);
- //value[0] = JspUtil.getExpr(value[0]);
+ if (JspUtil.isExpression (value[0], isXml)) {
+ temp = JspUtil.getExpr (value[0], isXml);
+ //value[0] = JspUtil.getExpr(value[0], isXml);
writer.print ("_jspxString =" + temp + ";");
} else {
writer.print ("_jspxString = \"" + value[0] + "\";");
@@ -259,8 +261,8 @@
writer.indent ();
//value = (String[]) param.get (key);
- if (JspUtil.isExpression (value[0])) {
- value[0] = JspUtil.getExpr(value[0]);
+ if (JspUtil.isExpression(value[0], isXml)) {
+ value[0] = JspUtil.getExpr(value[0], isXml);
writer.print ("_jspxNSString[i][1] =" + value[0] + ";");
} else {
writer.print ("_jspxNSString[i][1] = \"" + value[0] +
1.3 +8 -6 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/SetPropertyGenerator.java
Index: SetPropertyGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/SetPropertyGenerator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SetPropertyGenerator.java 2000/10/11 19:35:17 1.2
+++ SetPropertyGenerator.java 2000/11/30 21:47:58 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/SetPropertyGenerator.java,v 1.2 2000/10/11 19:35:17 shemnon Exp $
- * $Revision: 1.2 $
- * $Date: 2000/10/11 19:35:17 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/SetPropertyGenerator.java,v 1.3 2000/11/30 21:47:58 pierred Exp $
+ * $Revision: 1.3 $
+ * $Date: 2000/11/30 21:47:58 $
*
* ====================================================================
*
@@ -83,12 +83,14 @@
Attributes attrs;
BeanRepository beanInfo;
Mark start;
+ boolean isXml;
public SetPropertyGenerator (Mark start, Mark stop, Attributes attrs,
- BeanRepository beanInfo) {
+ BeanRepository beanInfo, boolean isXml) {
this.attrs = attrs;
this.beanInfo = beanInfo;
this.start = start;
+ this.isXml = isXml;
}
public void generate (ServletWriter writer, Class phase)
@@ -123,7 +125,7 @@
} else {
// value is a constant.
- if (!JspUtil.isExpression (value)) {
+ if (!JspUtil.isExpression (value, isXml)) {
writer.println("JspRuntimeLibrary.introspecthelper(pageContext." +
"findAttribute(\"" + name + "\"), \"" + property +
"\",\"" + JspUtil.escapeQueryString(value) +
@@ -134,7 +136,7 @@
// int, boolean, ... are not Object(s).
writer.println("JspRuntimeLibrary.handleSetProperty(pageContext." +
"findAttribute(\"" + name + "\"), \"" + property +
- "\"," + JspUtil.getExpr(value) + ");");
+ "\"," + JspUtil.getExpr(value, isXml) + ");");
}
}
}
1.7 +7 -4 jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagBeginGenerator.java
Index: TagBeginGenerator.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagBeginGenerator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- TagBeginGenerator.java 2000/11/01 20:25:07 1.6
+++ TagBeginGenerator.java 2000/11/30 21:47:59 1.7
@@ -99,11 +99,13 @@
TagData tagData;
Mark start;
TagLibraries libraries;
+ boolean isXml;
public TagBeginGenerator(Mark start, String prefix, String shortTagName, Attributes attrs,
TagLibraryInfo tli, TagInfo ti, TagLibraries libraries,
- Stack tagHandlerStack, Hashtable tagVarNumbers)
+ Stack tagHandlerStack, Hashtable tagVarNumbers,
+ boolean isXml)
throws JasperException
{
setTagHandlerStack(tagHandlerStack);
@@ -118,6 +120,7 @@
this.thVarName = "_jspx_th_"+baseVarName;
this.start = start;
this.libraries = libraries;
+ this.isXml = isXml;
}
public void init(JspCompilationContext ctxt) throws JasperException {
@@ -167,7 +170,7 @@
if (attr.equals(attributes[i].getName())) {
found = true;
if (attributes[i].canBeRequestTime() &&
- JspUtil.isExpression((String)attribs.get(attr)))
+ JspUtil.isExpression((String)attribs.get(attr), isXml))
attribs.put(attr, TagData.REQUEST_TIME_VALUE);
}
@@ -215,8 +218,8 @@
// assert(c.length > 0)
if (attributes[i].canBeRequestTime() &&
- JspUtil.isExpression(attrValue)) {
- attrValue = JspUtil.getExpr(attrValue);
+ JspUtil.isExpression(attrValue, isXml)) {
+ attrValue = JspUtil.getExpr(attrValue, isXml);
} else {
attrValue = convertString(c[0], attrValue, writer, attrName,
tc.getPropertyEditorClass(attrName));