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();
     }
 }