geirm 01/04/18 14:00:44
Modified: src/java/org/apache/velocity/runtime/parser/node
ASTReference.java
Log:
even more optimization fun. Pulling together as many immutables as possible
I think this is right...
Revision Changes Path
1.27 +26 -14
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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- ASTReference.java 2001/04/18 20:54:32 1.26
+++ ASTReference.java 2001/04/18 21:00:44 1.27
@@ -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.26 2001/04/18 20:54:32 geirm Exp $
+ * @version $Id: ASTReference.java,v 1.27 2001/04/18 21:00:44 geirm Exp $
*/
public class ASTReference extends SimpleNode
{
@@ -95,7 +95,8 @@
private boolean escaped = false;
private boolean computableReference = true;
private String prefix = "";
- private String firstToken = "";
+ private String firstTokenPrefix = "";
+ private String identifier = "";
private int numChildren = 0;
@@ -115,7 +116,8 @@
return visitor.visit(this, data);
}
- public Object init( InternalContextAdapter context, Object data) throws
Exception
+ public Object init( InternalContextAdapter context, Object data)
+ throws Exception
{
/*
* init our children
@@ -132,7 +134,23 @@
rootString = getRoot();
numChildren = jjtGetNumChildren();
- firstToken = NodeUtils.specialText( getFirstToken() );
+
+ /*
+ * we can glom these together.. both are template immutables...
+ */
+
+ String firstToken = NodeUtils.specialText( getFirstToken() );
+ firstTokenPrefix = firstToken + prefix;
+
+ /*
+ * and if appropriate...
+ */
+
+ if (numChildren > 0 )
+ {
+ identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
+ }
+
return data;
}
@@ -221,15 +239,13 @@
{
if ( value == null )
{
- writer.write( firstToken );
- writer.write( prefix );
+ writer.write( firstTokenPrefix );
writer.write( "\\" );
writer.write( nullString );
}
else
{
- writer.write( firstToken );
- writer.write( prefix );
+ writer.write( firstTokenPrefix );
writer.write( nullString );
}
@@ -246,9 +262,8 @@
* write prefix twice, because it's shmoo, so the \ don't escape each
other...
*/
- writer.write( firstToken );
+ writer.write( firstTokenPrefix );
writer.write( prefix );
- writer.write( prefix );
writer.write( nullString );
if (referenceType != QUIET_REFERENCE
@@ -260,8 +275,7 @@
}
else
{
- writer.write( firstToken );
- writer.write( prefix );
+ writer.write( firstTokenPrefix );
writer.write( value.toString() );
}
@@ -348,8 +362,6 @@
* 1) ref.setFoo( value )
* 2) ref,put("foo", value ) to parallel the get() map introspection
*/
-
- String identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
try
{