Avoid String concatenation in loops. Replace with StringBuilder.append().
diff --git a/src/main/java/org/apache/commons/ognl/ASTAdd.java b/src/main/java/org/apache/commons/ognl/ASTAdd.java
index 89885e9..950c9de 100644
--- a/src/main/java/org/apache/commons/ognl/ASTAdd.java
+++ b/src/main/java/org/apache/commons/ognl/ASTAdd.java
@@ -143,7 +143,7 @@
{
try
{
- String result = "";
+ StringBuilder result = new StringBuilder();
NodeType lastType = null;
// go through once to determine the ultimate type
@@ -183,7 +183,7 @@
{
if ( i > 0 )
{
- result += " " + getExpressionOperator( i ) + " ";
+ result.append(" ").append(getExpressionOperator(i)).append(" ");
}
String expr = children[i].toGetSourceString( context, target );
@@ -282,7 +282,7 @@
}
}
- result += expr;
+ result.append(expr);
// hanlde addition for numeric types when applicable or just string concatenation
@@ -298,10 +298,10 @@
|| ASTProperty.class.isInstance( children[i] )
|| ASTChain.class.isInstance( children[i] ) )
{
- result += ".";
+ result.append(".");
}
- result += OgnlRuntime.getNumericValueGetter( context.getCurrentType() );
+ result.append(OgnlRuntime.getNumericValueGetter(context.getCurrentType()));
context.setCurrentType( OgnlRuntime.getPrimitiveWrapperClass( context.getCurrentType() ) );
}
}
@@ -335,7 +335,7 @@
throw OgnlOps.castToRuntime( t );
}
- return result;
+ return result.toString();
}
catch ( Throwable t )
diff --git a/src/main/java/org/apache/commons/ognl/ASTCtor.java b/src/main/java/org/apache/commons/ognl/ASTCtor.java
index b3d33cc..37603d3 100644
--- a/src/main/java/org/apache/commons/ognl/ASTCtor.java
+++ b/src/main/java/org/apache/commons/ognl/ASTCtor.java
@@ -142,7 +142,7 @@
public String toGetSourceString( OgnlContext context, Object target )
{
- String result = "new " + className;
+ StringBuilder result = new StringBuilder("new " + className);
Class clazz = null;
Object ctorValue = null;
@@ -179,30 +179,28 @@
if ( children[0] instanceof ASTConst )
{
- result = result + "[" + children[0].toGetSourceString( context, target ) + "]";
+ result.append("[").append(children[0].toGetSourceString(context, target)).append("]");
}
else if ( ASTProperty.class.isInstance( children[0] ) )
{
- result =
- result + "[" + ExpressionCompiler.getRootExpression( children[0], target, context )
- + children[0].toGetSourceString( context, target ) + "]";
+ result.append("[").append(ExpressionCompiler.getRootExpression(children[0], target, context)).append(children[0].toGetSourceString(context, target)).append("]");
}
else if ( ASTChain.class.isInstance( children[0] ) )
{
- result = result + "[" + children[0].toGetSourceString( context, target ) + "]";
+ result.append("[").append(children[0].toGetSourceString(context, target)).append("]");
}
else
{
- result = result + "[] " + children[0].toGetSourceString( context, target );
+ result.append("[] ").append(children[0].toGetSourceString(context, target));
}
}
else
{
- result = result + "(";
+ result.append("(");
if ( ( children != null ) && ( children.length > 0 ) )
{
@@ -284,7 +282,7 @@
{
if ( i > 0 )
{
- result = result + ", ";
+ result.append(", ");
}
String value = expressions[i];
@@ -329,11 +327,11 @@
}
}
- result += value;
+ result.append(value);
}
}
- result = result + ")";
+ result.append(")");
}
context.setCurrentType( ctorValue != null ? ctorValue.getClass() : clazz );
@@ -348,7 +346,7 @@
context.remove( "_ctorClass" );
- return result;
+ return result.toString();
}
public String toSetSourceString( OgnlContext context, Object target )
diff --git a/src/main/java/org/apache/commons/ognl/ASTList.java b/src/main/java/org/apache/commons/ognl/ASTList.java
index 9709c5d..f481c6c 100644
--- a/src/main/java/org/apache/commons/ognl/ASTList.java
+++ b/src/main/java/org/apache/commons/ognl/ASTList.java
@@ -66,14 +66,8 @@
public String toGetSourceString( OgnlContext context, Object target )
{
- String result = "";
- boolean array = false;
-
- if ( parent != null && ASTCtor.class.isInstance( parent ) && ( (ASTCtor) parent ).isArray() )
- {
-
- array = true;
- }
+ StringBuilder result = new StringBuilder();
+ boolean array = ASTCtor.class.isInstance(parent) && ((ASTCtor) parent).isArray();
context.setCurrentType( List.class );
context.setCurrentAccessor( List.class );
@@ -84,10 +78,10 @@
{
return "java.util.Arrays.asList( new Object[0])";
}
- result += "java.util.Arrays.asList( new Object[] ";
+ result.append("java.util.Arrays.asList( new Object[] ");
}
- result += "{ ";
+ result.append("{ ");
try
{
@@ -96,7 +90,7 @@
{
if ( i > 0 )
{
- result = result + ", ";
+ result.append(", ");
}
Class prevType = context.getCurrentType();
@@ -194,7 +188,7 @@
{
value = "null";
}
- result += value;
+ result.append(value);
}
}
@@ -206,13 +200,13 @@
context.setCurrentType( List.class );
context.setCurrentAccessor( List.class );
- result += "}";
+ result.append("}");
if ( !array )
{
- result += ")";
+ result.append(")");
}
- return result;
+ return result.toString();
}
public String toSetSourceString( OgnlContext context, Object target )
diff --git a/src/main/java/org/apache/commons/ognl/ASTMethod.java b/src/main/java/org/apache/commons/ognl/ASTMethod.java
index 4b369aa..80d33b3 100644
--- a/src/main/java/org/apache/commons/ognl/ASTMethod.java
+++ b/src/main/java/org/apache/commons/ognl/ASTMethod.java
@@ -274,7 +274,7 @@
}
String post = "";
- String result = "." + method.getName() + "(";
+ StringBuilder result = new StringBuilder("." + method.getName() + "(");
if ( method.getReturnType() != void.class && method.getReturnType().isPrimitive() && ( parent == null
|| !ASTTest.class.isInstance( parent ) ) )
@@ -310,7 +310,7 @@
{
if ( i > 0 )
{
- result += ", ";
+ result.append(", ");
}
Class prevType = context.getCurrentType();
@@ -373,7 +373,7 @@
ASTMethodUtil.getParmString( context, parms[i], parmString, child, valueClass, ".class)" );
}
- result += parmString;
+ result.append(parmString);
}
if ( prevCast != null )
diff --git a/src/main/java/org/apache/commons/ognl/ASTStaticMethod.java b/src/main/java/org/apache/commons/ognl/ASTStaticMethod.java
index c41a8bb..586bc33 100644
--- a/src/main/java/org/apache/commons/ognl/ASTStaticMethod.java
+++ b/src/main/java/org/apache/commons/ognl/ASTStaticMethod.java
@@ -84,7 +84,7 @@
public String toGetSourceString( OgnlContext context, Object target )
{
- String result = className + "#" + methodName + "(";
+ StringBuilder result = new StringBuilder(className + "#" + methodName + "(");
try
{
@@ -113,7 +113,7 @@
{
if ( i > 0 )
{
- result = result + ", ";
+ result.append(", ");
}
Class prevType = context.getCurrentType();
@@ -162,11 +162,11 @@
}
}
- result += parmString;
+ result.append(parmString);
}
}
- result += ")";
+ result.append(")");
try
{
@@ -192,7 +192,7 @@
throw OgnlOps.castToRuntime( t );
}
- return result;
+ return result.toString();
}
public String toSetSourceString( OgnlContext context, Object target )
diff --git a/src/main/java/org/apache/commons/ognl/Evaluation.java b/src/main/java/org/apache/commons/ognl/Evaluation.java
index 7b1b121..e348dac 100644
--- a/src/main/java/org/apache/commons/ognl/Evaluation.java
+++ b/src/main/java/org/apache/commons/ognl/Evaluation.java
@@ -277,33 +277,32 @@
*/
public String toString( boolean compact, boolean showChildren, String depth )
{
- String stringResult;
+ StringBuilder stringResult;
if ( compact )
{
- stringResult = depth + "<" + node.getClass().getName() + " " + System.identityHashCode( this ) + ">";
+ stringResult = new StringBuilder(depth + "<" + node.getClass().getName() + " " + System.identityHashCode(this) + ">");
}
else
{
String ss = ( source != null ) ? source.getClass().getName() : "null", rs =
( result != null ) ? result.getClass().getName() : "null";
- stringResult =
- depth + "<" + node.getClass().getName() + ": [" + ( setOperation ? "set" : "get" ) + "] source = " + ss
- + ", result = " + result + " [" + rs + "]>";
+ stringResult = new StringBuilder(depth + "<" + node.getClass().getName() + ": [" + (setOperation ? "set" : "get") + "] source = " + ss
+ + ", result = " + result + " [" + rs + "]>");
}
if ( showChildren )
{
Evaluation child = firstChild;
- stringResult += "\n";
+ stringResult.append("\n");
while ( child != null )
{
- stringResult += child.toString( compact, depth + " " );
+ stringResult.append(child.toString(compact, depth + " "));
child = child.next;
}
}
- return stringResult;
+ return stringResult.toString();
}
/**