You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/05/22 17:35:52 UTC
svn commit: r1125992 -
/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java
Author: simonetripodi
Date: Sun May 22 15:35:52 2011
New Revision: 1125992
URL: http://svn.apache.org/viewvc?rev=1125992&view=rev
Log:
inefficient string concatenation replaced by StringBuilder
Modified:
incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java
Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java
URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java?rev=1125992&r1=1125991&r2=1125992&view=diff
==============================================================================
--- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java (original)
+++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/NumericExpression.java Sun May 22 15:35:52 2011
@@ -97,7 +97,7 @@ public abstract class NumericExpression
public String coerceToNumeric( String source, OgnlContext context, Node child )
{
- String ret = source;
+ StringBuilder ret = new StringBuilder( source );
Object value = context.getCurrentObject();
if ( ASTConst.class.isInstance( child ) && value != null )
@@ -108,23 +108,29 @@ public abstract class NumericExpression
if ( context.getCurrentType() != null && !context.getCurrentType().isPrimitive()
&& context.getCurrentObject() != null && Number.class.isInstance( context.getCurrentObject() ) )
{
- ret = "((" + ExpressionCompiler.getCastString( context.getCurrentObject().getClass() ) + ")" + ret + ")";
- ret += "." + OgnlRuntime.getNumericValueGetter( context.getCurrentObject().getClass() );
+ ret.append( "((")
+ .append( ExpressionCompiler.getCastString( context.getCurrentObject().getClass() ))
+ .append( ")")
+ .append( ret)
+ .append( ").")
+ .append( OgnlRuntime.getNumericValueGetter( context.getCurrentObject().getClass() ) );
}
else if ( context.getCurrentType() != null && context.getCurrentType().isPrimitive()
&& ( ASTConst.class.isInstance( child ) || NumericExpression.class.isInstance( child ) ) )
{
- ret += OgnlRuntime.getNumericLiteral( (Class<? extends Number>) context.getCurrentType() );
+ ret.append( OgnlRuntime.getNumericLiteral( (Class<? extends Number>) context.getCurrentType() ) );
}
else if ( context.getCurrentType() != null && String.class.isAssignableFrom( context.getCurrentType() ) )
{
- ret = "Double.parseDouble(" + ret + ")";
+ ret.append( "Double.parseDouble(").append( ")" );
context.setCurrentType( Double.TYPE );
}
if ( NumericExpression.class.isInstance( child ) )
- ret = "(" + ret + ")";
+ {
+ ret.append( "(" ).append( ret ).append( ")" );
+ }
- return ret;
+ return ret.toString();
}
}