geirm 01/04/18 13:54:34
Modified: src/java/org/apache/velocity/runtime/parser/node
ASTReference.java
Log:
More inefficiency banished to the netherworld...
The number of children is constant, and so is the 'firstToken' stuff
Revision Changes Path
1.26 +15 -12
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java
Index: ASTReference.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- ASTReference.java 2001/04/18 20:43:15 1.25
+++ ASTReference.java 2001/04/18 20:54:32 1.26
@@ -80,7 +80,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Christoph Reck</a>
* @author <a href="mailto:[EMAIL PROTECTED]>Kent Johnson</a>
- * @version $Id: ASTReference.java,v 1.25 2001/04/18 20:43:15 geirm Exp $
+ * @version $Id: ASTReference.java,v 1.26 2001/04/18 20:54:32 geirm Exp $
*/
public class ASTReference extends SimpleNode
{
@@ -95,7 +95,10 @@
private boolean escaped = false;
private boolean computableReference = true;
private String prefix = "";
+ private String firstToken = "";
+ private int numChildren = 0;
+
public ASTReference(int id)
{
super(id);
@@ -128,6 +131,8 @@
rootString = getRoot();
+ numChildren = jjtGetNumChildren();
+ firstToken = NodeUtils.specialText( getFirstToken() );
return data;
}
@@ -163,12 +168,10 @@
* when we find a null value and return the null
* so the error gets logged.
*/
-
- int children = jjtGetNumChildren();
try
{
- for (int i = 0; i < children; i++)
+ for (int i = 0; i < numChildren; i++)
{
result = jjtGetChild(i).execute(result,context);
@@ -218,14 +221,14 @@
{
if ( value == null )
{
- writer.write( NodeUtils.specialText(getFirstToken()));
+ writer.write( firstToken );
writer.write( prefix );
writer.write( "\\" );
writer.write( nullString );
}
else
{
- writer.write( NodeUtils.specialText(getFirstToken()) );
+ writer.write( firstToken );
writer.write( prefix );
writer.write( nullString );
}
@@ -243,7 +246,7 @@
* write prefix twice, because it's shmoo, so the \ don't escape each
other...
*/
- writer.write( NodeUtils.specialText(getFirstToken()) );
+ writer.write( firstToken );
writer.write( prefix );
writer.write( prefix );
writer.write( nullString );
@@ -257,7 +260,7 @@
}
else
{
- writer.write( NodeUtils.specialText(getFirstToken()) );
+ writer.write( firstToken );
writer.write( prefix );
writer.write( value.toString() );
}
@@ -278,7 +281,9 @@
Object value = execute(null, context);
if (value == null)
+ {
return false;
+ }
else if (value instanceof Boolean)
{
if (((Boolean) value).booleanValue())
@@ -326,10 +331,8 @@
/*
* How many child nodes do we have?
*/
-
- int children = jjtGetNumChildren();
- for (int i = 0; i < children - 1; i++)
+ for (int i = 0; i < numChildren - 1; i++)
{
result = jjtGetChild(i).execute(result, context);
@@ -346,7 +349,7 @@
* 2) ref,put("foo", value ) to parallel the get() map introspection
*/
- String identifier = jjtGetChild(children - 1).getFirstToken().image;
+ String identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
try
{