You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mc...@apache.org on 2011/10/24 01:10:27 UTC
svn commit: r1188000 [1/3] - in /commons/proper/ognl/trunk: ./
src/main/java/org/apache/commons/ognl/
src/main/java/org/apache/commons/ognl/enhance/
src/main/java/org/apache/commons/ognl/internal/
src/main/java/org/apache/commons/ognl/internal/entry/ s...
Author: mcucchiara
Date: Sun Oct 23 23:10:24 2011
New Revision: 1188000
URL: http://svn.apache.org/viewvc?rev=1188000&view=rev
Log:
OGNL-20 - Performance - Replace synchronized blocks with ReentrantReadWriteLock
Added:
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Cache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/Cache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheException.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/CacheException.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/CacheFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheHandler.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ClassCacheHandler.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapClassCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapClassCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCacheFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapCacheFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapClassCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapClassCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCacheFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCacheFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockClassCache.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockClassCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/
- copied from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntry.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntry.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/ClassCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/ClassCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntry.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntry.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/FiedlCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/FiedlCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeCacheEntry.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeCacheEntry.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessEntryValue.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessEntryValue.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntry.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntry.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodPermCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodPermCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntry.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntry.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntryFactory.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PropertyDescriptorCacheEntryFactory.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PropertyDescriptorCacheEntryFactory.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/
- copied from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConstructorCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/ConstructorCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/DeclaredMethodCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/DeclaredMethodCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/FieldCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/FieldCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/GenericMethodParameterTypeCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/GenericMethodParameterTypeCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodAccessCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/MethodAccessCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodPermCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/MethodPermCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PermissionCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/PermissionCacheTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PropertyDescriptorCacheTest.java
- copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/PropertyDescriptorCacheTest.java
Modified:
commons/proper/ognl/trunk/ (props changed)
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlRuntime.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/TypeConverter.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java
commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/TestOgnlRuntime.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ArrayElementsTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ContextVariableTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/IndexAccessTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/InterfaceInheritanceTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/LambdaExpressionTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/MethodWithConversionTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NestedMethodTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NullHandlerTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OgnlTestCase.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OperatorTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/Performance.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PrivateAccessorTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PropertyTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/QuotingTest.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/enhance/TestExpressionCompiler.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean1.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean2.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean3.java
commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Root.java
Propchange: commons/proper/ognl/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sun Oct 23 23:10:24 2011
@@ -0,0 +1 @@
+/commons/proper/ognl/branches/new-cache-approach:1181007-1187982
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java Sun Oct 23 23:10:24 2011
@@ -52,7 +52,7 @@ class ASTAdd
{
Object result = _children[0].getValue( context, source );
- for ( int i = 1; i < _children.length; ++i )
+ for ( int i = 1; i < _children.length; ++i )
{
result = OgnlOps.add( result, _children[i].getValue( context, source ) );
}
@@ -67,34 +67,34 @@ class ASTAdd
boolean isWider( NodeType type, NodeType lastType )
{
- if ( lastType == null )
+ if ( lastType == null )
{
return true;
}
// System.out.println("checking isWider(" + type.getGetterClass() + " , " + lastType.getGetterClass() + ")");
- if ( String.class.isAssignableFrom( lastType.getGetterClass() ) )
+ if ( String.class.isAssignableFrom( lastType.getGetterClass() ) )
{
return false;
}
- if ( String.class.isAssignableFrom( type.getGetterClass() ) )
+ if ( String.class.isAssignableFrom( type.getGetterClass() ) )
{
return true;
}
- if ( _parent != null && String.class.isAssignableFrom( type.getGetterClass() ) )
+ if ( _parent != null && String.class.isAssignableFrom( type.getGetterClass() ) )
{
return true;
}
- if ( String.class.isAssignableFrom( lastType.getGetterClass() ) && Object.class == type.getGetterClass() )
+ if ( String.class.isAssignableFrom( lastType.getGetterClass() ) && Object.class == type.getGetterClass() )
{
return false;
}
- if ( _parent != null && String.class.isAssignableFrom( lastType.getGetterClass() ) )
+ if ( _parent != null && String.class.isAssignableFrom( lastType.getGetterClass() ) )
{
return false;
}
@@ -182,15 +182,15 @@ class ASTAdd
for ( int i = 0; i < _children.length; ++i )
{
- if ( i > 0 )
+ if ( i > 0 )
{
result += " " + getExpressionOperator( i ) + " ";
}
-
+
String expr = _children[i].toGetSourceString( context, target );
if ( ( expr != null && "null".equals( expr ) )
- || ( !ASTConst.class.isInstance( _children[i] )
+ || ( !ASTConst.class.isInstance( _children[i] )
&& ( expr == null || expr.trim().length() <= 0 ) ) )
{
expr = "null";
@@ -234,7 +234,7 @@ class ASTAdd
ExpressionCompiler.getRootExpression( _children[i], context.getRoot(), context );
if ( !ASTProperty.class.isInstance( _children[i].jjtGetChild( 0 ) ) && rootExpr.endsWith( ")" )
- && expr.startsWith( ")" ) )
+ && expr.startsWith( ")" ) )
{
expr = expr.substring( 1, expr.length() );
}
@@ -243,7 +243,7 @@ class ASTAdd
context.setCurrentAccessor( context.getRoot().getClass() );
String cast = (String) context.remove( ExpressionCompiler.PRE_CAST );
- if ( cast == null )
+ if ( cast == null )
{
cast = "";
}
@@ -297,7 +297,7 @@ class ASTAdd
{
if ( ASTVarRef.class.isInstance( _children[i] )
|| ASTProperty.class.isInstance( _children[i] )
- || ASTChain.class.isInstance( _children[i] ) )
+ || ASTChain.class.isInstance( _children[i] ) )
{
result += ".";
}
@@ -307,7 +307,7 @@ class ASTAdd
}
}
- if ( lastType != null )
+ if ( lastType != null )
{
context.setCurrentAccessor( lastType.getGetterClass() );
}
@@ -316,7 +316,7 @@ class ASTAdd
if ( _parent == null || ASTSequence.class.isAssignableFrom( _parent.getClass() ) )
{
- if ( _getterClass != null && String.class.isAssignableFrom( _getterClass ) )
+ if ( _getterClass != null && String.class.isAssignableFrom( _getterClass ) )
{
_getterClass = Object.class;
}
@@ -346,7 +346,6 @@ class ASTAdd
}
public <R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
- throws OgnlException
{
return visitor.visit( this, data );
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java Sun Oct 23 23:10:24 2011
@@ -72,7 +72,7 @@ public class ASTAnd
{
result = _children[i].getValue( context, source );
- if ( i != last && !OgnlOps.booleanValue( result ) )
+ if ( i != last && !OgnlOps.booleanValue( result ) )
{
break;
}
@@ -93,7 +93,7 @@ public class ASTAnd
{
Object v = _children[i].getValue( context, target );
- if ( !OgnlOps.booleanValue( v ) )
+ if ( !OgnlOps.booleanValue( v ) )
{
return;
}
@@ -123,12 +123,12 @@ public class ASTAnd
*/
public String toGetSourceString( OgnlContext context, Object target )
{
- if ( _children.length != 2 )
+ if ( _children.length != 2 )
{
throw new UnsupportedCompilationException(
"Can only compile boolean expressions with two children." );
}
-
+
String result = "";
try
@@ -141,17 +141,17 @@ public class ASTAnd
"And expression can't be compiled until all conditions are true." );
}
- if ( !OgnlRuntime.isBoolean( first ) && !context.getCurrentType().isPrimitive() )
+ if ( !OgnlRuntime.isBoolean( first ) && !context.getCurrentType().isPrimitive() )
{
first = OgnlRuntime.getCompiler( context ).createLocalReference( context, first, context.getCurrentType() );
}
-
+
String second = OgnlRuntime.getChildSource( context, target, _children[1] );
- if ( !OgnlRuntime.isBoolean( second ) && !context.getCurrentType().isPrimitive() )
+ if ( !OgnlRuntime.isBoolean( second ) && !context.getCurrentType().isPrimitive() )
{
second = OgnlRuntime.getCompiler( context ).createLocalReference( context, second, context.getCurrentType() );
}
-
+
result += "(org.apache.commons.ognl.OgnlOps.booleanValue(" + first + ")";
result += " ? ";
@@ -184,13 +184,13 @@ public class ASTAnd
*/
public String toSetSourceString( OgnlContext context, Object target )
{
- if ( _children.length != 2 )
+ if ( _children.length != 2 )
{
throw new UnsupportedCompilationException( "Can only compile boolean expressions with two children." );
}
-
+
String pre = (String) context.get( "_currentChain" );
- if ( pre == null )
+ if ( pre == null )
{
pre = "";
}
@@ -216,15 +216,15 @@ public class ASTAnd
ExpressionCompiler.getRootExpression( _children[1], context.getRoot(), context ) + pre
+ _children[1].toSetSourceString( context, target );
- if ( !OgnlRuntime.isBoolean( first ) )
+ if ( !OgnlRuntime.isBoolean( first ) )
{
result += "if(org.apache.commons.ognl.OgnlOps.booleanValue(" + first + ")){";
- }
- else
+ }
+ else
{
result += "if(" + first + "){";
}
-
+
result += second;
result += "; } ";
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java Sun Oct 23 23:10:24 2011
@@ -69,11 +69,11 @@ class ASTAssign
context.setCurrentType( Object.class );
String core = seq.getCoreExpression();
- if ( core.endsWith( ";" ) )
+ if ( core.endsWith( ";" ) )
{
core = core.substring( 0, core.lastIndexOf( ";" ) );
}
-
+
second =
OgnlRuntime.getCompiler( context ).createLocalReference( context,
"org.apache.commons.ognl.OgnlOps.returnValue(($w)"
@@ -122,12 +122,12 @@ class ASTAssign
String value = _children[1].toSetSourceString( context, target );
- if ( value == null )
+ if ( value == null )
{
throw new UnsupportedCompilationException(
"Value for assignment is null, can't enhance statement to bytecode." );
}
-
+
if ( ASTSequence.class.isAssignableFrom( _children[1].getClass() ) )
{
ASTSequence seq = (ASTSequence) _children[1];
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java Sun Oct 23 23:10:24 2011
@@ -46,7 +46,7 @@ class ASTBitAnd
throws OgnlException
{
Object result = _children[0].getValue( context, source );
- for ( int i = 1; i < _children.length; ++i )
+ for ( int i = 1; i < _children.length; ++i )
{
result = OgnlOps.binaryAnd( result, _children[i].getValue( context, source ) );
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java Sun Oct 23 23:10:24 2011
@@ -20,7 +20,7 @@ package org.apache.commons.ognl;
*/
/**
- * $Id$
+ * $Id$
* @author Luke Blanshard (blanshlu@netscape.net)
* @author Drew Davidson (drew@ognl.org)
*/
@@ -46,7 +46,7 @@ class ASTBitOr
throws OgnlException
{
Object result = _children[0].getValue( context, source );
- for ( int i = 1; i < _children.length; ++i )
+ for ( int i = 1; i < _children.length; ++i )
{
result = OgnlOps.binaryOr( result, _children[i].getValue( context, source ) );
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java Sun Oct 23 23:10:24 2011
@@ -209,8 +209,7 @@ public class ArrayPropertyAccessor
indexStr = "org.apache.commons.ognl.OgnlOps#getIntValue(" + indexStr + toString + ")";
}
- Class<? extends Object> type =
- target.getClass().isArray() ? target.getClass().getComponentType() : target.getClass();
+ Class<? extends Object> type = target.getClass().isArray() ? target.getClass().getComponentType() : target.getClass();
context.setCurrentAccessor( target.getClass() );
context.setCurrentType( target.getClass().getComponentType() );
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java Sun Oct 23 23:10:24 2011
@@ -33,6 +33,7 @@ public class DefaultTypeConverter
{
public <T> T convertValue( Map<String, Object> context, Object value, Class<T> toType )
+ throws OgnlException
{
@SuppressWarnings( "unchecked" ) // type checking performed in OgnlOps.convertValue( value, toType )
T ret = (T) OgnlOps.convertValue( value, toType );
@@ -44,6 +45,7 @@ public class DefaultTypeConverter
*/
public <T> T convertValue( Map<String, Object> context, Object target, Member member, String propertyName, Object value,
Class<T> toType )
+ throws OgnlException
{
return convertValue( context, value, toType );
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java Sun Oct 23 23:10:24 2011
@@ -19,35 +19,22 @@ package org.apache.commons.ognl;
* under the License.
*/
-import java.util.ArrayList;
import java.util.List;
+/**
+ * @deprecated evaluation-pooling now relies on the jvm garbage collection
+ */
public final class EvaluationPool
{
- private final List<Evaluation> evaluations = new ArrayList<Evaluation>();
-
- private int size = 0;
-
- private int created = 0;
-
- private int recovered = 0;
-
- private int recycled = 0;
-
- public EvaluationPool()
+ public EvaluationPool( )
{
this( 0 );
}
public EvaluationPool( int initialSize )
{
- super();
- for ( int i = 0; i < initialSize; i++ )
- {
- evaluations.add( new Evaluation( null, null ) );
- }
- created = initialSize;
- size = initialSize;
+ super( );
+ // do not init object pooling
}
/**
@@ -60,98 +47,87 @@ public final class EvaluationPool
}
/**
- * Returns an Evaluation that contains the node, source and whether it is a set operation. If there are no
- * Evaluation objects in the pool one is created and returned.
+ * Returns an Evaluation that contains the node, source and whether it
+ * is a set operation.
*/
- public synchronized Evaluation create( SimpleNode node, Object source, boolean setOperation )
+ public Evaluation create( SimpleNode node, Object source, boolean setOperation )
{
- Evaluation result;
-
- if ( size > 0 )
- {
- result = evaluations.remove( size - 1 );
- result.init( node, source, setOperation );
- size--;
- recovered++;
- }
- else
- {
- result = new Evaluation( node, source, setOperation );
- created++;
- }
- return result;
+ // synchronization is removed as we do not rely anymore on the in-house object pooling
+ return new Evaluation( node, source, setOperation );
}
/**
* Recycles an Evaluation
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public synchronized void recycle( Evaluation value )
+ public void recycle( Evaluation value )
{
- if ( value != null )
- {
- value.reset();
- evaluations.add( value );
- size++;
- recycled++;
- }
+ // no need of recycling, we rely on the garbage collection efficiency
}
/**
- * Recycles an of Evaluation and all of it's siblings and children.
+ * Recycles an of Evaluation and all of it's siblings
+ * and children.
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
public void recycleAll( Evaluation value )
{
- if ( value != null )
- {
- recycleAll( value.getNext() );
- recycleAll( value.getFirstChild() );
- recycle( value );
- }
+ // no need of recycling, we rely on the garbage collection efficiency
}
/**
* Recycles a List of Evaluation objects
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public void recycleAll( List<Evaluation> value )
+ public void recycleAll( List value )
{
- if ( value != null )
- {
- for ( int i = 0, icount = value.size(); i < icount; i++ )
- {
- recycle( value.get( i ) );
- }
- }
+ // no need of recycling, we rely on the garbage collection efficiency
}
/**
* Returns the number of items in the pool
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public int getSize()
+ public int getSize( )
{
- return size;
+ return 0;
}
/**
- * Returns the number of items this pool has created since it's construction.
+ * Returns the number of items this pool has created since
+ * it's construction.
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public int getCreatedCount()
+ public int getCreatedCount( )
{
- return created;
+ return 0;
}
/**
- * Returns the number of items this pool has recovered from the pool since its construction.
+ * Returns the number of items this pool has recovered from
+ * the pool since its construction.
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public int getRecoveredCount()
+ public int getRecoveredCount( )
{
- return recovered;
+ return 0;
}
/**
- * Returns the number of items this pool has recycled since it's construction.
+ * Returns the number of items this pool has recycled since
+ * it's construction.
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
*/
- public int getRecycledCount()
+ public int getRecycledCount( )
{
- return recycled;
+ return 0;
}
}
+
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java Sun Oct 23 23:10:24 2011
@@ -113,13 +113,13 @@ public abstract class ExpressionNode
{
pre = "";
}
-
+
String cast = (String) context.remove( ExpressionCompiler.PRE_CAST );
if ( cast == null )
{
cast = "";
}
-
+
value =
cast + ExpressionCompiler.getRootExpression( _children[i], context.getRoot(), context ) + pre
+ value;
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java Sun Oct 23 23:10:24 2011
@@ -41,7 +41,7 @@ public interface MethodAccessor
* @exception MethodFailedException if there is an error calling the method
*/
Object callStaticMethod( Map<String, Object> context, Class<?> targetClass, String methodName, Object[] args )
- throws MethodFailedException;
+ throws OgnlException;
/**
* Calls the method named with the arguments given.
@@ -54,5 +54,5 @@ public interface MethodAccessor
* @exception MethodFailedException if there is an error calling the method
*/
Object callMethod( Map<String, Object> context, Object target, String methodName, Object[] args )
- throws MethodFailedException;
+ throws OgnlException;
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java Sun Oct 23 23:10:24 2011
@@ -22,50 +22,50 @@ package org.apache.commons.ognl;
public interface NodeVisitor<R, P>
{
- public R visit(ASTSequence node, P data) throws OgnlException;
- public R visit(ASTAssign node, P data) throws OgnlException;
- public R visit(ASTTest node, P data) throws OgnlException;
- public R visit(ASTOr node, P data) throws OgnlException;
- public R visit(ASTAnd node, P data) throws OgnlException;
- public R visit(ASTBitOr node, P data) throws OgnlException;
- public R visit(ASTXor node, P data) throws OgnlException;
- public R visit(ASTBitAnd node, P data) throws OgnlException;
- public R visit(ASTEq node, P data) throws OgnlException;
- public R visit(ASTNotEq node, P data) throws OgnlException;
- public R visit(ASTLess node, P data) throws OgnlException;
- public R visit(ASTGreater node, P data) throws OgnlException;
- public R visit(ASTLessEq node, P data) throws OgnlException;
- public R visit(ASTGreaterEq node, P data) throws OgnlException;
- public R visit(ASTIn node, P data) throws OgnlException;
- public R visit(ASTNotIn node, P data) throws OgnlException;
- public R visit(ASTShiftLeft node, P data) throws OgnlException;
- public R visit(ASTShiftRight node, P data) throws OgnlException;
- public R visit(ASTUnsignedShiftRight node, P data) throws OgnlException;
- public R visit(ASTAdd node, P data) throws OgnlException;
- public R visit(ASTSubtract node, P data) throws OgnlException;
- public R visit(ASTMultiply node, P data) throws OgnlException;
- public R visit(ASTDivide node, P data) throws OgnlException;
- public R visit(ASTRemainder node, P data) throws OgnlException;
- public R visit(ASTNegate node, P data) throws OgnlException;
- public R visit(ASTBitNegate node, P data) throws OgnlException;
- public R visit(ASTNot node, P data) throws OgnlException;
- public R visit(ASTInstanceof node, P data) throws OgnlException;
- public R visit(ASTChain node, P data) throws OgnlException;
- public R visit(ASTEval node, P data) throws OgnlException;
- public R visit(ASTConst node, P data) throws OgnlException;
- public R visit(ASTThisVarRef node, P data) throws OgnlException;
- public R visit(ASTRootVarRef node, P data) throws OgnlException;
- public R visit(ASTVarRef node, P data) throws OgnlException;
- public R visit(ASTList node, P data) throws OgnlException;
- public R visit(ASTMap node, P data) throws OgnlException;
- public R visit(ASTKeyValue node, P data) throws OgnlException;
- public R visit(ASTStaticField node, P data) throws OgnlException;
- public R visit(ASTCtor node, P data) throws OgnlException;
- public R visit(ASTProperty node, P data) throws OgnlException;
- public R visit(ASTStaticMethod node, P data) throws OgnlException;
- public R visit(ASTMethod node, P data) throws OgnlException;
- public R visit(ASTProject node, P data) throws OgnlException;
- public R visit(ASTSelect node, P data) throws OgnlException;
- public R visit(ASTSelectFirst node, P data) throws OgnlException;
- public R visit(ASTSelectLast node, P data) throws OgnlException;
+ public R visit(ASTSequence node, P data);
+ public R visit(ASTAssign node, P data);
+ public R visit(ASTTest node, P data);
+ public R visit(ASTOr node, P data);
+ public R visit(ASTAnd node, P data);
+ public R visit(ASTBitOr node, P data);
+ public R visit(ASTXor node, P data);
+ public R visit(ASTBitAnd node, P data);
+ public R visit(ASTEq node, P data);
+ public R visit(ASTNotEq node, P data);
+ public R visit(ASTLess node, P data);
+ public R visit(ASTGreater node, P data);
+ public R visit(ASTLessEq node, P data);
+ public R visit(ASTGreaterEq node, P data);
+ public R visit(ASTIn node, P data);
+ public R visit(ASTNotIn node, P data);
+ public R visit(ASTShiftLeft node, P data);
+ public R visit(ASTShiftRight node, P data);
+ public R visit(ASTUnsignedShiftRight node, P data);
+ public R visit(ASTAdd node, P data);
+ public R visit(ASTSubtract node, P data);
+ public R visit(ASTMultiply node, P data);
+ public R visit(ASTDivide node, P data);
+ public R visit(ASTRemainder node, P data);
+ public R visit(ASTNegate node, P data);
+ public R visit(ASTBitNegate node, P data);
+ public R visit(ASTNot node, P data);
+ public R visit(ASTInstanceof node, P data);
+ public R visit(ASTChain node, P data);
+ public R visit(ASTEval node, P data);
+ public R visit(ASTConst node, P data);
+ public R visit(ASTThisVarRef node, P data);
+ public R visit(ASTRootVarRef node, P data);
+ public R visit(ASTVarRef node, P data);
+ public R visit(ASTList node, P data);
+ public R visit(ASTMap node, P data);
+ public R visit(ASTKeyValue node, P data);
+ public R visit(ASTStaticField node, P data);
+ public R visit(ASTCtor node, P data);
+ public R visit(ASTProperty node, P data);
+ public R visit(ASTStaticMethod node, P data);
+ public R visit(ASTMethod node, P data);
+ public R visit(ASTProject node, P data);
+ public R visit(ASTSelect node, P data);
+ public R visit(ASTSelectFirst node, P data);
+ public R visit(ASTSelectLast node, P data);
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java Sun Oct 23 23:10:24 2011
@@ -19,147 +19,26 @@ package org.apache.commons.ognl;
* under the License.
*/
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
+/**
+ * This class was previously intended to produce performance improvement.<br>
+ * This hand-made object pooling is now a bottleneck under high load.<br>
+ * We now rely on the new jvm garbage collection improvements to handle object allocation efficiently.
+ *
+ * @deprecated object-pooling now relies on the jvm garbage collection
+ */
public final class ObjectArrayPool
{
- private final IntHashMap<Integer, SizePool> pools = new IntHashMap<Integer, SizePool>( 23 );
-
- public static class SizePool
+ public ObjectArrayPool( )
{
- private final List<Object[]> arrays = new ArrayList<Object[]>();
-
- private int arraySize;
-
- private int size;
-
- private int created = 0;
-
- private int recovered = 0;
-
- private int recycled = 0;
-
- public SizePool( int arraySize )
- {
- this( arraySize, 0 );
- }
-
- public SizePool( int arraySize, int initialSize )
- {
- super();
- this.arraySize = arraySize;
- for ( int i = 0; i < initialSize; i++ )
- {
- arrays.add( new Object[arraySize] );
- }
- created = size = initialSize;
- }
-
- public int getArraySize()
- {
- return arraySize;
- }
-
- public Object[] create()
- {
- Object[] result;
-
- if ( size > 0 )
- {
- result = arrays.remove( size - 1 );
- size--;
- recovered++;
- }
- else
- {
- result = new Object[arraySize];
- created++;
- }
- return result;
- }
-
- public synchronized void recycle( Object[] value )
- {
- if ( value != null )
- {
- if ( value.length != arraySize )
- {
- throw new IllegalArgumentException( "recycled array size " + value.length
- + " inappropriate for pool array size " + arraySize );
- }
- Arrays.fill( value, null );
- arrays.add( value );
- size++;
- recycled++;
- }
- else
- {
- throw new IllegalArgumentException( "cannot recycle null object" );
- }
- }
-
- /**
- * Returns the number of items in the pool
- */
- public int getSize()
- {
- return size;
- }
-
- /**
- * Returns the number of items this pool has created since it's construction.
- */
- public int getCreatedCount()
- {
- return created;
- }
-
- /**
- * Returns the number of items this pool has recovered from the pool since its construction.
- */
- public int getRecoveredCount()
- {
- return recovered;
- }
-
- /**
- * Returns the number of items this pool has recycled since it's construction.
- */
- public int getRecycledCount()
- {
- return recycled;
- }
- }
-
- public ObjectArrayPool()
- {
- super();
- }
-
- public IntHashMap<Integer, SizePool> getSizePools()
- {
- return pools;
- }
-
- public synchronized SizePool getSizePool( int arraySize )
- {
- SizePool result = pools.get( arraySize );
-
- if ( result == null )
- {
- pools.put( arraySize, result = new SizePool( arraySize ) );
- }
- return result;
+ super( );
}
- public synchronized Object[] create( int arraySize )
+ public Object[] create( int arraySize )
{
- return getSizePool( arraySize ).create();
+ return new Object[arraySize];
}
- public synchronized Object[] create( Object singleton )
+ public Object[] create( Object singleton )
{
Object[] result = create( 1 );
@@ -167,7 +46,7 @@ public final class ObjectArrayPool
return result;
}
- public synchronized Object[] create( Object object1, Object object2 )
+ public Object[] create( Object object1, Object object2 )
{
Object[] result = create( 2 );
@@ -176,7 +55,7 @@ public final class ObjectArrayPool
return result;
}
- public synchronized Object[] create( Object object1, Object object2, Object object3 )
+ public Object[] create( Object object1, Object object2, Object object3 )
{
Object[] result = create( 3 );
@@ -186,7 +65,7 @@ public final class ObjectArrayPool
return result;
}
- public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4 )
+ public Object[] create( Object object1, Object object2, Object object3, Object object4 )
{
Object[] result = create( 4 );
@@ -197,7 +76,7 @@ public final class ObjectArrayPool
return result;
}
- public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4, Object object5 )
+ public Object[] create( Object object1, Object object2, Object object3, Object object4, Object object5 )
{
Object[] result = create( 5 );
@@ -209,11 +88,11 @@ public final class ObjectArrayPool
return result;
}
- public synchronized void recycle( Object[] value )
+ /**
+ * @deprecated object-pooling now relies on the jvm garbage collection
+ */
+ public void recycle( Object[] value )
{
- if ( value != null )
- {
- getSizePool( value.length ).recycle( value );
- }
+ // no need of recycling, we rely on the garbage collection efficiency
}
}
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java Sun Oct 23 23:10:24 2011
@@ -38,7 +38,7 @@ public class ObjectMethodAccessor
* {@inheritDoc}
*/
public Object callStaticMethod( Map<String, Object> context, Class<?> targetClass, String methodName, Object[] args )
- throws MethodFailedException
+ throws OgnlException
{
List<Method> methods = OgnlRuntime.getMethods( targetClass, methodName, true );
@@ -50,7 +50,7 @@ public class ObjectMethodAccessor
* {@inheritDoc}
*/
public Object callMethod( Map<String, Object> context, Object target, String methodName, Object[] args )
- throws MethodFailedException
+ throws OgnlException
{
Class<?> targetClass = ( target == null ) ? null : target.getClass();
List<Method> methods = OgnlRuntime.getMethods( targetClass, methodName, false );
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java Sun Oct 23 23:10:24 2011
@@ -152,10 +152,9 @@ public class ObjectPropertyAccessor
public Object getProperty( Map<String, Object> context, Object target, Object oname )
throws OgnlException
{
- Object result = null;
String name = oname.toString();
- result = getPossibleProperty( context, target, name );
+ Object result = getPossibleProperty( context, target, name );
if ( result == OgnlRuntime.NotFound )
{
@@ -262,7 +261,7 @@ public class ObjectPropertyAccessor
}
context.setCurrentType( m.getReturnType() );
- context.setCurrentAccessor( OgnlRuntime.getCompiler( context ).getSuperOrInterfaceClass( m, m.getDeclaringClass() ) );
+ context.setCurrentAccessor( OgnlRuntime.getCompiler().getSuperOrInterfaceClass( m, m.getDeclaringClass() ) );
return "." + m.getName() + "()";
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java Sun Oct 23 23:10:24 2011
@@ -51,7 +51,7 @@ import java.util.Map;
* <p>
* This will parse the expression given and evaluate it against the root object given, returning the result. If there is
* an error in the expression, such as the property is not found, the exception is encapsulated into an
- * {@link ognl.OgnlException OgnlException}.
+ * {@link org.apache.commons.ognl.OgnlException OgnlException}.
* </p>
* <p>
* Other more sophisticated uses of Ognl can pre-parse expressions. This provides two advantages: in the case of
@@ -126,13 +126,13 @@ public abstract class Ognl
}
/**
- * Parses and compiles the given expression using the {@link ognl.enhance.OgnlExpressionCompiler} returned from
- * {@link ognl.OgnlRuntime#getCompiler()}.
+ * Parses and compiles the given expression using the {@link org.apache.commons.ognl.enhance.OgnlExpressionCompiler} returned from
+ * {@link org.apache.commons.ognl.OgnlRuntime#getCompiler()}.
*
* @param context The context to use.
* @param root The root object for the given expression.
* @param expression The expression to compile.
- * @return The node with a compiled accessor set on {@link ognl.Node#getAccessor()} if compilation was successfull.
+ * @return The node with a compiled accessor set on {@link org.apache.commons.ognl.Node#getAccessor()} if compilation was successfull.
* In instances where compilation wasn't possible because of a partially null expression the
* {@link ExpressionAccessor} instance may be null and the compilation of this expression still possible at
* some as yet indertermined point in the future.
@@ -471,6 +471,7 @@ public abstract class Ognl
* @return The value.
*/
public static <T> T getValue( ExpressionAccessor expression, OgnlContext context, Object root, Class<T> resultType )
+ throws OgnlException
{
return getTypeConverter( context ).convertValue( context, root, null, null, expression.get( context, root ),
resultType );
Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java
URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java?rev=1188000&r1=1187999&r2=1188000&view=diff
==============================================================================
--- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java (original)
+++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java Sun Oct 23 23:10:24 2011
@@ -431,71 +431,85 @@ public abstract class OgnlOps
}
public static Object toArray( char value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Character( value ), toType );
}
public static Object toArray( byte value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Byte( value ), toType );
}
public static Object toArray( int value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Integer( value ), toType );
}
public static Object toArray( long value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Long( value ), toType );
}
public static Object toArray( float value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Float( value ), toType );
}
public static Object toArray( double value, Class<?> toType )
+ throws OgnlException
{
return toArray( new Double( value ), toType );
}
public static Object toArray( boolean value, Class<?> toType )
+ throws OgnlException
{
return toArray( Boolean.valueOf( value ), toType );
}
public static <T> Object convertValue( char value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Character( value ), toType );
}
public static <T> Object convertValue( byte value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Byte( value ), toType );
}
public static <T> Object convertValue( int value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Integer( value ), toType );
}
public static <T> Object convertValue( long value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Long( value ), toType );
}
public static <T> Object convertValue( float value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Float( value ), toType );
}
public static <T> Object convertValue( double value, Class<T> toType )
+ throws OgnlException
{
return convertValue( new Double( value ), toType );
}
public static <T> Object convertValue( boolean value, Class<T> toType )
+ throws OgnlException
{
return convertValue( Boolean.valueOf( value ), toType );
}
@@ -503,36 +517,43 @@ public abstract class OgnlOps
// //////////////////////////////////////////////////////////////
public static <T> Object convertValue( char value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Character( value ), toType, preventNull );
}
public static <T> Object convertValue( byte value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Byte( value ), toType, preventNull );
}
public static <T> Object convertValue( int value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Integer( value ), toType, preventNull );
}
public static <T> Object convertValue( long value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Long( value ), toType, preventNull );
}
public static <T> Object convertValue( float value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Float( value ), toType, preventNull );
}
public static <T> Object convertValue( double value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( new Double( value ), toType, preventNull );
}
public static <T> Object convertValue( boolean value, Class<T> toType, boolean preventNull )
+ throws OgnlException
{
return convertValue( Boolean.valueOf( value ), toType, preventNull );
}
@@ -540,36 +561,43 @@ public abstract class OgnlOps
// ///////////////////////////////////////////////////////////////
public static Object toArray( char value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Character( value ), toType, preventNull );
}
public static Object toArray( byte value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Byte( value ), toType, preventNull );
}
public static Object toArray( int value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Integer( value ), toType, preventNull );
}
public static Object toArray( long value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Long( value ), toType, preventNull );
}
public static Object toArray( float value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Float( value ), toType, preventNull );
}
public static Object toArray( double value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( new Double( value ), toType, preventNull );
}
public static Object toArray( boolean value, Class<?> toType, boolean preventNull )
+ throws OgnlException
{
return toArray( Boolean.valueOf( value ), toType, preventNull );
}
@@ -583,21 +611,24 @@ public abstract class OgnlOps
* @return converted value of the type given, or value if the value cannot be converted to the given type.
*/
public static Object convertValue( Object value, Class<?> toType )
+ throws OgnlException
{
return convertValue( value, toType, false );
}
public static Object toArray( Object value, Class<?> toType )
+ throws OgnlException
{
return toArray( value, toType, false );
}
public static Object toArray( Object value, Class<?> toType, boolean preventNulls )
+ throws OgnlException
{
if ( value == null )
return null;
- Object result = null;
+ Object result;
if ( value.getClass().isArray() && toType.isAssignableFrom( value.getClass().getComponentType() ) )
{
@@ -633,6 +664,7 @@ public abstract class OgnlOps
}
public static <T> Object convertValue( Object value, Class<T> toType, boolean preventNulls )
+ throws OgnlException
{
Object result = null;
Re: svn commit: r1188000 [1/3] - in /commons/proper/ognl/trunk: ./
src/main/java/org/apache/commons/ognl/ src/main/java/org/apache/commons/ognl/enhance/
src/main/java/org/apache/commons/ognl/internal/ src/main/java/org/apache/commons/ognl/internal/entry/
s...
Posted by Adrian Crum <ad...@sandglass-software.com>.
This commit appears to contain a lot of formatting changes that have
nothing to do with synchronization. Also, interface method declarations
do not require the public keyword.
-Adrian
On 10/24/2011 12:10 AM, mcucchiara@apache.org wrote:
> Author: mcucchiara
> Date: Sun Oct 23 23:10:24 2011
> New Revision: 1188000
>
> URL: http://svn.apache.org/viewvc?rev=1188000&view=rev
> Log:
> OGNL-20 - Performance - Replace synchronized blocks with ReentrantReadWriteLock
>
> Added:
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Cache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/Cache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheException.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/CacheException.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/CacheFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/CacheFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheHandler.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ClassCacheHandler.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapClassCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ConcurrentHashMapClassCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapCacheFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapCacheFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/HashMapClassCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/HashMapClassCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCacheFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockCacheFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockClassCache.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/ReentrantReadWriteLockClassCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/
> - copied from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntry.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntry.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/CacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/ClassCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/ClassCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntry.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntry.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/DeclaredMethodCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/FiedlCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/FiedlCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeCacheEntry.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeCacheEntry.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/GenericMethodParameterTypeFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessEntryValue.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodAccessEntryValue.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntry.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntry.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/MethodPermCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/MethodPermCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntry.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntry.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PermissionCacheEntryFactory.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/entry/PropertyDescriptorCacheEntryFactory.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/main/java/org/apache/commons/ognl/internal/entry/PropertyDescriptorCacheEntryFactory.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/
> - copied from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/ConcurrentHashMapCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/ConstructorCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/ConstructorCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/DeclaredMethodCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/DeclaredMethodCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/FieldCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/FieldCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/GenericMethodParameterTypeCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/GenericMethodParameterTypeCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodAccessCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/MethodAccessCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/MethodPermCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/MethodPermCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PermissionCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/PermissionCacheTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/internal/PropertyDescriptorCacheTest.java
> - copied unchanged from r1187982, commons/proper/ognl/branches/new-cache-approach/src/test/java/org/apache/commons/ognl/internal/PropertyDescriptorCacheTest.java
> Modified:
> commons/proper/ognl/trunk/ (props changed)
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlRuntime.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/TypeConverter.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/enhance/ExpressionCompiler.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java
> commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/TestOgnlRuntime.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ArrayElementsTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/ContextVariableTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/IndexAccessTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/InterfaceInheritanceTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/LambdaExpressionTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/MethodWithConversionTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NestedMethodTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/NullHandlerTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OgnlTestCase.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/OperatorTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/Performance.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PrivateAccessorTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/PropertyTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/QuotingTest.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/enhance/TestExpressionCompiler.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean1.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean2.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Bean3.java
> commons/proper/ognl/trunk/src/test/java/org/apache/commons/ognl/test/objects/Root.java
>
> Propchange: commons/proper/ognl/trunk/
> ------------------------------------------------------------------------------
> --- svn:mergeinfo (added)
> +++ svn:mergeinfo Sun Oct 23 23:10:24 2011
> @@ -0,0 +1 @@
> +/commons/proper/ognl/branches/new-cache-approach:1181007-1187982
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAdd.java Sun Oct 23 23:10:24 2011
> @@ -52,7 +52,7 @@ class ASTAdd
> {
> Object result = _children[0].getValue( context, source );
>
> - for ( int i = 1; i< _children.length; ++i )
> + for ( int i = 1; i< _children.length; ++i )
> {
> result = OgnlOps.add( result, _children[i].getValue( context, source ) );
> }
> @@ -67,34 +67,34 @@ class ASTAdd
>
> boolean isWider( NodeType type, NodeType lastType )
> {
> - if ( lastType == null )
> + if ( lastType == null )
> {
> return true;
> }
>
> // System.out.println("checking isWider(" + type.getGetterClass() + " , " + lastType.getGetterClass() + ")");
>
> - if ( String.class.isAssignableFrom( lastType.getGetterClass() ) )
> + if ( String.class.isAssignableFrom( lastType.getGetterClass() ) )
> {
> return false;
> }
>
> - if ( String.class.isAssignableFrom( type.getGetterClass() ) )
> + if ( String.class.isAssignableFrom( type.getGetterClass() ) )
> {
> return true;
> }
>
> - if ( _parent != null&& String.class.isAssignableFrom( type.getGetterClass() ) )
> + if ( _parent != null&& String.class.isAssignableFrom( type.getGetterClass() ) )
> {
> return true;
> }
>
> - if ( String.class.isAssignableFrom( lastType.getGetterClass() )&& Object.class == type.getGetterClass() )
> + if ( String.class.isAssignableFrom( lastType.getGetterClass() )&& Object.class == type.getGetterClass() )
> {
> return false;
> }
>
> - if ( _parent != null&& String.class.isAssignableFrom( lastType.getGetterClass() ) )
> + if ( _parent != null&& String.class.isAssignableFrom( lastType.getGetterClass() ) )
> {
> return false;
> }
> @@ -182,15 +182,15 @@ class ASTAdd
>
> for ( int i = 0; i< _children.length; ++i )
> {
> - if ( i> 0 )
> + if ( i> 0 )
> {
> result += " " + getExpressionOperator( i ) + " ";
> }
> -
> +
> String expr = _children[i].toGetSourceString( context, target );
>
> if ( ( expr != null&& "null".equals( expr ) )
> - || ( !ASTConst.class.isInstance( _children[i] )
> + || ( !ASTConst.class.isInstance( _children[i] )
> && ( expr == null || expr.trim().length()<= 0 ) ) )
> {
> expr = "null";
> @@ -234,7 +234,7 @@ class ASTAdd
> ExpressionCompiler.getRootExpression( _children[i], context.getRoot(), context );
>
> if ( !ASTProperty.class.isInstance( _children[i].jjtGetChild( 0 ) )&& rootExpr.endsWith( ")" )
> -&& expr.startsWith( ")" ) )
> +&& expr.startsWith( ")" ) )
> {
> expr = expr.substring( 1, expr.length() );
> }
> @@ -243,7 +243,7 @@ class ASTAdd
> context.setCurrentAccessor( context.getRoot().getClass() );
>
> String cast = (String) context.remove( ExpressionCompiler.PRE_CAST );
> - if ( cast == null )
> + if ( cast == null )
> {
> cast = "";
> }
> @@ -297,7 +297,7 @@ class ASTAdd
> {
> if ( ASTVarRef.class.isInstance( _children[i] )
> || ASTProperty.class.isInstance( _children[i] )
> - || ASTChain.class.isInstance( _children[i] ) )
> + || ASTChain.class.isInstance( _children[i] ) )
> {
> result += ".";
> }
> @@ -307,7 +307,7 @@ class ASTAdd
> }
> }
>
> - if ( lastType != null )
> + if ( lastType != null )
> {
> context.setCurrentAccessor( lastType.getGetterClass() );
> }
> @@ -316,7 +316,7 @@ class ASTAdd
>
> if ( _parent == null || ASTSequence.class.isAssignableFrom( _parent.getClass() ) )
> {
> - if ( _getterClass != null&& String.class.isAssignableFrom( _getterClass ) )
> + if ( _getterClass != null&& String.class.isAssignableFrom( _getterClass ) )
> {
> _getterClass = Object.class;
> }
> @@ -346,7 +346,6 @@ class ASTAdd
> }
>
> public<R, P> R accept( NodeVisitor<? extends R, ? super P> visitor, P data )
> - throws OgnlException
> {
> return visitor.visit( this, data );
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAnd.java Sun Oct 23 23:10:24 2011
> @@ -72,7 +72,7 @@ public class ASTAnd
> {
> result = _children[i].getValue( context, source );
>
> - if ( i != last&& !OgnlOps.booleanValue( result ) )
> + if ( i != last&& !OgnlOps.booleanValue( result ) )
> {
> break;
> }
> @@ -93,7 +93,7 @@ public class ASTAnd
> {
> Object v = _children[i].getValue( context, target );
>
> - if ( !OgnlOps.booleanValue( v ) )
> + if ( !OgnlOps.booleanValue( v ) )
> {
> return;
> }
> @@ -123,12 +123,12 @@ public class ASTAnd
> */
> public String toGetSourceString( OgnlContext context, Object target )
> {
> - if ( _children.length != 2 )
> + if ( _children.length != 2 )
> {
> throw new UnsupportedCompilationException(
> "Can only compile boolean expressions with two children." );
> }
> -
> +
> String result = "";
>
> try
> @@ -141,17 +141,17 @@ public class ASTAnd
> "And expression can't be compiled until all conditions are true." );
> }
>
> - if ( !OgnlRuntime.isBoolean( first )&& !context.getCurrentType().isPrimitive() )
> + if ( !OgnlRuntime.isBoolean( first )&& !context.getCurrentType().isPrimitive() )
> {
> first = OgnlRuntime.getCompiler( context ).createLocalReference( context, first, context.getCurrentType() );
> }
> -
> +
> String second = OgnlRuntime.getChildSource( context, target, _children[1] );
> - if ( !OgnlRuntime.isBoolean( second )&& !context.getCurrentType().isPrimitive() )
> + if ( !OgnlRuntime.isBoolean( second )&& !context.getCurrentType().isPrimitive() )
> {
> second = OgnlRuntime.getCompiler( context ).createLocalReference( context, second, context.getCurrentType() );
> }
> -
> +
> result += "(org.apache.commons.ognl.OgnlOps.booleanValue(" + first + ")";
>
> result += " ? ";
> @@ -184,13 +184,13 @@ public class ASTAnd
> */
> public String toSetSourceString( OgnlContext context, Object target )
> {
> - if ( _children.length != 2 )
> + if ( _children.length != 2 )
> {
> throw new UnsupportedCompilationException( "Can only compile boolean expressions with two children." );
> }
> -
> +
> String pre = (String) context.get( "_currentChain" );
> - if ( pre == null )
> + if ( pre == null )
> {
> pre = "";
> }
> @@ -216,15 +216,15 @@ public class ASTAnd
> ExpressionCompiler.getRootExpression( _children[1], context.getRoot(), context ) + pre
> + _children[1].toSetSourceString( context, target );
>
> - if ( !OgnlRuntime.isBoolean( first ) )
> + if ( !OgnlRuntime.isBoolean( first ) )
> {
> result += "if(org.apache.commons.ognl.OgnlOps.booleanValue(" + first + ")){";
> - }
> - else
> + }
> + else
> {
> result += "if(" + first + "){";
> }
> -
> +
> result += second;
> result += "; } ";
>
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTAssign.java Sun Oct 23 23:10:24 2011
> @@ -69,11 +69,11 @@ class ASTAssign
> context.setCurrentType( Object.class );
>
> String core = seq.getCoreExpression();
> - if ( core.endsWith( ";" ) )
> + if ( core.endsWith( ";" ) )
> {
> core = core.substring( 0, core.lastIndexOf( ";" ) );
> }
> -
> +
> second =
> OgnlRuntime.getCompiler( context ).createLocalReference( context,
> "org.apache.commons.ognl.OgnlOps.returnValue(($w)"
> @@ -122,12 +122,12 @@ class ASTAssign
>
> String value = _children[1].toSetSourceString( context, target );
>
> - if ( value == null )
> + if ( value == null )
> {
> throw new UnsupportedCompilationException(
> "Value for assignment is null, can't enhance statement to bytecode." );
> }
> -
> +
> if ( ASTSequence.class.isAssignableFrom( _children[1].getClass() ) )
> {
> ASTSequence seq = (ASTSequence) _children[1];
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitAnd.java Sun Oct 23 23:10:24 2011
> @@ -46,7 +46,7 @@ class ASTBitAnd
> throws OgnlException
> {
> Object result = _children[0].getValue( context, source );
> - for ( int i = 1; i< _children.length; ++i )
> + for ( int i = 1; i< _children.length; ++i )
> {
> result = OgnlOps.binaryAnd( result, _children[i].getValue( context, source ) );
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ASTBitOr.java Sun Oct 23 23:10:24 2011
> @@ -20,7 +20,7 @@ package org.apache.commons.ognl;
> */
>
> /**
> - * $Id$
> + * $Id$
> * @author Luke Blanshard (blanshlu@netscape.net)
> * @author Drew Davidson (drew@ognl.org)
> */
> @@ -46,7 +46,7 @@ class ASTBitOr
> throws OgnlException
> {
> Object result = _children[0].getValue( context, source );
> - for ( int i = 1; i< _children.length; ++i )
> + for ( int i = 1; i< _children.length; ++i )
> {
> result = OgnlOps.binaryOr( result, _children[i].getValue( context, source ) );
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ArrayPropertyAccessor.java Sun Oct 23 23:10:24 2011
> @@ -209,8 +209,7 @@ public class ArrayPropertyAccessor
> indexStr = "org.apache.commons.ognl.OgnlOps#getIntValue(" + indexStr + toString + ")";
> }
>
> - Class<? extends Object> type =
> - target.getClass().isArray() ? target.getClass().getComponentType() : target.getClass();
> + Class<? extends Object> type = target.getClass().isArray() ? target.getClass().getComponentType() : target.getClass();
>
> context.setCurrentAccessor( target.getClass() );
> context.setCurrentType( target.getClass().getComponentType() );
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/DefaultTypeConverter.java Sun Oct 23 23:10:24 2011
> @@ -33,6 +33,7 @@ public class DefaultTypeConverter
> {
>
> public<T> T convertValue( Map<String, Object> context, Object value, Class<T> toType )
> + throws OgnlException
> {
> @SuppressWarnings( "unchecked" ) // type checking performed in OgnlOps.convertValue( value, toType )
> T ret = (T) OgnlOps.convertValue( value, toType );
> @@ -44,6 +45,7 @@ public class DefaultTypeConverter
> */
> public<T> T convertValue( Map<String, Object> context, Object target, Member member, String propertyName, Object value,
> Class<T> toType )
> + throws OgnlException
> {
> return convertValue( context, value, toType );
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/EvaluationPool.java Sun Oct 23 23:10:24 2011
> @@ -19,35 +19,22 @@ package org.apache.commons.ognl;
> * under the License.
> */
>
> -import java.util.ArrayList;
> import java.util.List;
>
> +/**
> + * @deprecated evaluation-pooling now relies on the jvm garbage collection
> + */
> public final class EvaluationPool
> {
> - private final List<Evaluation> evaluations = new ArrayList<Evaluation>();
> -
> - private int size = 0;
> -
> - private int created = 0;
> -
> - private int recovered = 0;
> -
> - private int recycled = 0;
> -
> - public EvaluationPool()
> + public EvaluationPool( )
> {
> this( 0 );
> }
>
> public EvaluationPool( int initialSize )
> {
> - super();
> - for ( int i = 0; i< initialSize; i++ )
> - {
> - evaluations.add( new Evaluation( null, null ) );
> - }
> - created = initialSize;
> - size = initialSize;
> + super( );
> + // do not init object pooling
> }
>
> /**
> @@ -60,98 +47,87 @@ public final class EvaluationPool
> }
>
> /**
> - * Returns an Evaluation that contains the node, source and whether it is a set operation. If there are no
> - * Evaluation objects in the pool one is created and returned.
> + * Returns an Evaluation that contains the node, source and whether it
> + * is a set operation.
> */
> - public synchronized Evaluation create( SimpleNode node, Object source, boolean setOperation )
> + public Evaluation create( SimpleNode node, Object source, boolean setOperation )
> {
> - Evaluation result;
> -
> - if ( size> 0 )
> - {
> - result = evaluations.remove( size - 1 );
> - result.init( node, source, setOperation );
> - size--;
> - recovered++;
> - }
> - else
> - {
> - result = new Evaluation( node, source, setOperation );
> - created++;
> - }
> - return result;
> + // synchronization is removed as we do not rely anymore on the in-house object pooling
> + return new Evaluation( node, source, setOperation );
> }
>
> /**
> * Recycles an Evaluation
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public synchronized void recycle( Evaluation value )
> + public void recycle( Evaluation value )
> {
> - if ( value != null )
> - {
> - value.reset();
> - evaluations.add( value );
> - size++;
> - recycled++;
> - }
> + // no need of recycling, we rely on the garbage collection efficiency
> }
>
> /**
> - * Recycles an of Evaluation and all of it's siblings and children.
> + * Recycles an of Evaluation and all of it's siblings
> + * and children.
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> public void recycleAll( Evaluation value )
> {
> - if ( value != null )
> - {
> - recycleAll( value.getNext() );
> - recycleAll( value.getFirstChild() );
> - recycle( value );
> - }
> + // no need of recycling, we rely on the garbage collection efficiency
> }
>
> /**
> * Recycles a List of Evaluation objects
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public void recycleAll( List<Evaluation> value )
> + public void recycleAll( List value )
> {
> - if ( value != null )
> - {
> - for ( int i = 0, icount = value.size(); i< icount; i++ )
> - {
> - recycle( value.get( i ) );
> - }
> - }
> + // no need of recycling, we rely on the garbage collection efficiency
> }
>
> /**
> * Returns the number of items in the pool
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public int getSize()
> + public int getSize( )
> {
> - return size;
> + return 0;
> }
>
> /**
> - * Returns the number of items this pool has created since it's construction.
> + * Returns the number of items this pool has created since
> + * it's construction.
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public int getCreatedCount()
> + public int getCreatedCount( )
> {
> - return created;
> + return 0;
> }
>
> /**
> - * Returns the number of items this pool has recovered from the pool since its construction.
> + * Returns the number of items this pool has recovered from
> + * the pool since its construction.
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public int getRecoveredCount()
> + public int getRecoveredCount( )
> {
> - return recovered;
> + return 0;
> }
>
> /**
> - * Returns the number of items this pool has recycled since it's construction.
> + * Returns the number of items this pool has recycled since
> + * it's construction.
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> */
> - public int getRecycledCount()
> + public int getRecycledCount( )
> {
> - return recycled;
> + return 0;
> }
> }
> +
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ExpressionNode.java Sun Oct 23 23:10:24 2011
> @@ -113,13 +113,13 @@ public abstract class ExpressionNode
> {
> pre = "";
> }
> -
> +
> String cast = (String) context.remove( ExpressionCompiler.PRE_CAST );
> if ( cast == null )
> {
> cast = "";
> }
> -
> +
> value =
> cast + ExpressionCompiler.getRootExpression( _children[i], context.getRoot(), context ) + pre
> + value;
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/MethodAccessor.java Sun Oct 23 23:10:24 2011
> @@ -41,7 +41,7 @@ public interface MethodAccessor
> * @exception MethodFailedException if there is an error calling the method
> */
> Object callStaticMethod( Map<String, Object> context, Class<?> targetClass, String methodName, Object[] args )
> - throws MethodFailedException;
> + throws OgnlException;
>
> /**
> * Calls the method named with the arguments given.
> @@ -54,5 +54,5 @@ public interface MethodAccessor
> * @exception MethodFailedException if there is an error calling the method
> */
> Object callMethod( Map<String, Object> context, Object target, String methodName, Object[] args )
> - throws MethodFailedException;
> + throws OgnlException;
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/NodeVisitor.java Sun Oct 23 23:10:24 2011
> @@ -22,50 +22,50 @@ package org.apache.commons.ognl;
>
> public interface NodeVisitor<R, P>
> {
> - public R visit(ASTSequence node, P data) throws OgnlException;
> - public R visit(ASTAssign node, P data) throws OgnlException;
> - public R visit(ASTTest node, P data) throws OgnlException;
> - public R visit(ASTOr node, P data) throws OgnlException;
> - public R visit(ASTAnd node, P data) throws OgnlException;
> - public R visit(ASTBitOr node, P data) throws OgnlException;
> - public R visit(ASTXor node, P data) throws OgnlException;
> - public R visit(ASTBitAnd node, P data) throws OgnlException;
> - public R visit(ASTEq node, P data) throws OgnlException;
> - public R visit(ASTNotEq node, P data) throws OgnlException;
> - public R visit(ASTLess node, P data) throws OgnlException;
> - public R visit(ASTGreater node, P data) throws OgnlException;
> - public R visit(ASTLessEq node, P data) throws OgnlException;
> - public R visit(ASTGreaterEq node, P data) throws OgnlException;
> - public R visit(ASTIn node, P data) throws OgnlException;
> - public R visit(ASTNotIn node, P data) throws OgnlException;
> - public R visit(ASTShiftLeft node, P data) throws OgnlException;
> - public R visit(ASTShiftRight node, P data) throws OgnlException;
> - public R visit(ASTUnsignedShiftRight node, P data) throws OgnlException;
> - public R visit(ASTAdd node, P data) throws OgnlException;
> - public R visit(ASTSubtract node, P data) throws OgnlException;
> - public R visit(ASTMultiply node, P data) throws OgnlException;
> - public R visit(ASTDivide node, P data) throws OgnlException;
> - public R visit(ASTRemainder node, P data) throws OgnlException;
> - public R visit(ASTNegate node, P data) throws OgnlException;
> - public R visit(ASTBitNegate node, P data) throws OgnlException;
> - public R visit(ASTNot node, P data) throws OgnlException;
> - public R visit(ASTInstanceof node, P data) throws OgnlException;
> - public R visit(ASTChain node, P data) throws OgnlException;
> - public R visit(ASTEval node, P data) throws OgnlException;
> - public R visit(ASTConst node, P data) throws OgnlException;
> - public R visit(ASTThisVarRef node, P data) throws OgnlException;
> - public R visit(ASTRootVarRef node, P data) throws OgnlException;
> - public R visit(ASTVarRef node, P data) throws OgnlException;
> - public R visit(ASTList node, P data) throws OgnlException;
> - public R visit(ASTMap node, P data) throws OgnlException;
> - public R visit(ASTKeyValue node, P data) throws OgnlException;
> - public R visit(ASTStaticField node, P data) throws OgnlException;
> - public R visit(ASTCtor node, P data) throws OgnlException;
> - public R visit(ASTProperty node, P data) throws OgnlException;
> - public R visit(ASTStaticMethod node, P data) throws OgnlException;
> - public R visit(ASTMethod node, P data) throws OgnlException;
> - public R visit(ASTProject node, P data) throws OgnlException;
> - public R visit(ASTSelect node, P data) throws OgnlException;
> - public R visit(ASTSelectFirst node, P data) throws OgnlException;
> - public R visit(ASTSelectLast node, P data) throws OgnlException;
> + public R visit(ASTSequence node, P data);
> + public R visit(ASTAssign node, P data);
> + public R visit(ASTTest node, P data);
> + public R visit(ASTOr node, P data);
> + public R visit(ASTAnd node, P data);
> + public R visit(ASTBitOr node, P data);
> + public R visit(ASTXor node, P data);
> + public R visit(ASTBitAnd node, P data);
> + public R visit(ASTEq node, P data);
> + public R visit(ASTNotEq node, P data);
> + public R visit(ASTLess node, P data);
> + public R visit(ASTGreater node, P data);
> + public R visit(ASTLessEq node, P data);
> + public R visit(ASTGreaterEq node, P data);
> + public R visit(ASTIn node, P data);
> + public R visit(ASTNotIn node, P data);
> + public R visit(ASTShiftLeft node, P data);
> + public R visit(ASTShiftRight node, P data);
> + public R visit(ASTUnsignedShiftRight node, P data);
> + public R visit(ASTAdd node, P data);
> + public R visit(ASTSubtract node, P data);
> + public R visit(ASTMultiply node, P data);
> + public R visit(ASTDivide node, P data);
> + public R visit(ASTRemainder node, P data);
> + public R visit(ASTNegate node, P data);
> + public R visit(ASTBitNegate node, P data);
> + public R visit(ASTNot node, P data);
> + public R visit(ASTInstanceof node, P data);
> + public R visit(ASTChain node, P data);
> + public R visit(ASTEval node, P data);
> + public R visit(ASTConst node, P data);
> + public R visit(ASTThisVarRef node, P data);
> + public R visit(ASTRootVarRef node, P data);
> + public R visit(ASTVarRef node, P data);
> + public R visit(ASTList node, P data);
> + public R visit(ASTMap node, P data);
> + public R visit(ASTKeyValue node, P data);
> + public R visit(ASTStaticField node, P data);
> + public R visit(ASTCtor node, P data);
> + public R visit(ASTProperty node, P data);
> + public R visit(ASTStaticMethod node, P data);
> + public R visit(ASTMethod node, P data);
> + public R visit(ASTProject node, P data);
> + public R visit(ASTSelect node, P data);
> + public R visit(ASTSelectFirst node, P data);
> + public R visit(ASTSelectLast node, P data);
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java Sun Oct 23 23:10:24 2011
> @@ -19,147 +19,26 @@ package org.apache.commons.ognl;
> * under the License.
> */
>
> -import java.util.ArrayList;
> -import java.util.Arrays;
> -import java.util.List;
> -
> +/**
> + * This class was previously intended to produce performance improvement.<br>
> + * This hand-made object pooling is now a bottleneck under high load.<br>
> + * We now rely on the new jvm garbage collection improvements to handle object allocation efficiently.
> + *
> + * @deprecated object-pooling now relies on the jvm garbage collection
> + */
> public final class ObjectArrayPool
> {
> - private final IntHashMap<Integer, SizePool> pools = new IntHashMap<Integer, SizePool>( 23 );
> -
> - public static class SizePool
> + public ObjectArrayPool( )
> {
> - private final List<Object[]> arrays = new ArrayList<Object[]>();
> -
> - private int arraySize;
> -
> - private int size;
> -
> - private int created = 0;
> -
> - private int recovered = 0;
> -
> - private int recycled = 0;
> -
> - public SizePool( int arraySize )
> - {
> - this( arraySize, 0 );
> - }
> -
> - public SizePool( int arraySize, int initialSize )
> - {
> - super();
> - this.arraySize = arraySize;
> - for ( int i = 0; i< initialSize; i++ )
> - {
> - arrays.add( new Object[arraySize] );
> - }
> - created = size = initialSize;
> - }
> -
> - public int getArraySize()
> - {
> - return arraySize;
> - }
> -
> - public Object[] create()
> - {
> - Object[] result;
> -
> - if ( size> 0 )
> - {
> - result = arrays.remove( size - 1 );
> - size--;
> - recovered++;
> - }
> - else
> - {
> - result = new Object[arraySize];
> - created++;
> - }
> - return result;
> - }
> -
> - public synchronized void recycle( Object[] value )
> - {
> - if ( value != null )
> - {
> - if ( value.length != arraySize )
> - {
> - throw new IllegalArgumentException( "recycled array size " + value.length
> - + " inappropriate for pool array size " + arraySize );
> - }
> - Arrays.fill( value, null );
> - arrays.add( value );
> - size++;
> - recycled++;
> - }
> - else
> - {
> - throw new IllegalArgumentException( "cannot recycle null object" );
> - }
> - }
> -
> - /**
> - * Returns the number of items in the pool
> - */
> - public int getSize()
> - {
> - return size;
> - }
> -
> - /**
> - * Returns the number of items this pool has created since it's construction.
> - */
> - public int getCreatedCount()
> - {
> - return created;
> - }
> -
> - /**
> - * Returns the number of items this pool has recovered from the pool since its construction.
> - */
> - public int getRecoveredCount()
> - {
> - return recovered;
> - }
> -
> - /**
> - * Returns the number of items this pool has recycled since it's construction.
> - */
> - public int getRecycledCount()
> - {
> - return recycled;
> - }
> - }
> -
> - public ObjectArrayPool()
> - {
> - super();
> - }
> -
> - public IntHashMap<Integer, SizePool> getSizePools()
> - {
> - return pools;
> - }
> -
> - public synchronized SizePool getSizePool( int arraySize )
> - {
> - SizePool result = pools.get( arraySize );
> -
> - if ( result == null )
> - {
> - pools.put( arraySize, result = new SizePool( arraySize ) );
> - }
> - return result;
> + super( );
> }
>
> - public synchronized Object[] create( int arraySize )
> + public Object[] create( int arraySize )
> {
> - return getSizePool( arraySize ).create();
> + return new Object[arraySize];
> }
>
> - public synchronized Object[] create( Object singleton )
> + public Object[] create( Object singleton )
> {
> Object[] result = create( 1 );
>
> @@ -167,7 +46,7 @@ public final class ObjectArrayPool
> return result;
> }
>
> - public synchronized Object[] create( Object object1, Object object2 )
> + public Object[] create( Object object1, Object object2 )
> {
> Object[] result = create( 2 );
>
> @@ -176,7 +55,7 @@ public final class ObjectArrayPool
> return result;
> }
>
> - public synchronized Object[] create( Object object1, Object object2, Object object3 )
> + public Object[] create( Object object1, Object object2, Object object3 )
> {
> Object[] result = create( 3 );
>
> @@ -186,7 +65,7 @@ public final class ObjectArrayPool
> return result;
> }
>
> - public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4 )
> + public Object[] create( Object object1, Object object2, Object object3, Object object4 )
> {
> Object[] result = create( 4 );
>
> @@ -197,7 +76,7 @@ public final class ObjectArrayPool
> return result;
> }
>
> - public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4, Object object5 )
> + public Object[] create( Object object1, Object object2, Object object3, Object object4, Object object5 )
> {
> Object[] result = create( 5 );
>
> @@ -209,11 +88,11 @@ public final class ObjectArrayPool
> return result;
> }
>
> - public synchronized void recycle( Object[] value )
> + /**
> + * @deprecated object-pooling now relies on the jvm garbage collection
> + */
> + public void recycle( Object[] value )
> {
> - if ( value != null )
> - {
> - getSizePool( value.length ).recycle( value );
> - }
> + // no need of recycling, we rely on the garbage collection efficiency
> }
> }
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java Sun Oct 23 23:10:24 2011
> @@ -38,7 +38,7 @@ public class ObjectMethodAccessor
> * {@inheritDoc}
> */
> public Object callStaticMethod( Map<String, Object> context, Class<?> targetClass, String methodName, Object[] args )
> - throws MethodFailedException
> + throws OgnlException
> {
> List<Method> methods = OgnlRuntime.getMethods( targetClass, methodName, true );
>
> @@ -50,7 +50,7 @@ public class ObjectMethodAccessor
> * {@inheritDoc}
> */
> public Object callMethod( Map<String, Object> context, Object target, String methodName, Object[] args )
> - throws MethodFailedException
> + throws OgnlException
> {
> Class<?> targetClass = ( target == null ) ? null : target.getClass();
> List<Method> methods = OgnlRuntime.getMethods( targetClass, methodName, false );
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java Sun Oct 23 23:10:24 2011
> @@ -152,10 +152,9 @@ public class ObjectPropertyAccessor
> public Object getProperty( Map<String, Object> context, Object target, Object oname )
> throws OgnlException
> {
> - Object result = null;
> String name = oname.toString();
>
> - result = getPossibleProperty( context, target, name );
> + Object result = getPossibleProperty( context, target, name );
>
> if ( result == OgnlRuntime.NotFound )
> {
> @@ -262,7 +261,7 @@ public class ObjectPropertyAccessor
> }
>
> context.setCurrentType( m.getReturnType() );
> - context.setCurrentAccessor( OgnlRuntime.getCompiler( context ).getSuperOrInterfaceClass( m, m.getDeclaringClass() ) );
> + context.setCurrentAccessor( OgnlRuntime.getCompiler().getSuperOrInterfaceClass( m, m.getDeclaringClass() ) );
>
> return "." + m.getName() + "()";
>
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/Ognl.java Sun Oct 23 23:10:24 2011
> @@ -51,7 +51,7 @@ import java.util.Map;
> *<p>
> * This will parse the expression given and evaluate it against the root object given, returning the result. If there is
> * an error in the expression, such as the property is not found, the exception is encapsulated into an
> - * {@link ognl.OgnlException OgnlException}.
> + * {@link org.apache.commons.ognl.OgnlException OgnlException}.
> *</p>
> *<p>
> * Other more sophisticated uses of Ognl can pre-parse expressions. This provides two advantages: in the case of
> @@ -126,13 +126,13 @@ public abstract class Ognl
> }
>
> /**
> - * Parses and compiles the given expression using the {@link ognl.enhance.OgnlExpressionCompiler} returned from
> - * {@link ognl.OgnlRuntime#getCompiler()}.
> + * Parses and compiles the given expression using the {@link org.apache.commons.ognl.enhance.OgnlExpressionCompiler} returned from
> + * {@link org.apache.commons.ognl.OgnlRuntime#getCompiler()}.
> *
> * @param context The context to use.
> * @param root The root object for the given expression.
> * @param expression The expression to compile.
> - * @return The node with a compiled accessor set on {@link ognl.Node#getAccessor()} if compilation was successfull.
> + * @return The node with a compiled accessor set on {@link org.apache.commons.ognl.Node#getAccessor()} if compilation was successfull.
> * In instances where compilation wasn't possible because of a partially null expression the
> * {@link ExpressionAccessor} instance may be null and the compilation of this expression still possible at
> * some as yet indertermined point in the future.
> @@ -471,6 +471,7 @@ public abstract class Ognl
> * @return The value.
> */
> public static<T> T getValue( ExpressionAccessor expression, OgnlContext context, Object root, Class<T> resultType )
> + throws OgnlException
> {
> return getTypeConverter( context ).convertValue( context, root, null, null, expression.get( context, root ),
> resultType );
>
> Modified: commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java
> URL: http://svn.apache.org/viewvc/commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java?rev=1188000&r1=1187999&r2=1188000&view=diff
> ==============================================================================
> --- commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java (original)
> +++ commons/proper/ognl/trunk/src/main/java/org/apache/commons/ognl/OgnlOps.java Sun Oct 23 23:10:24 2011
> @@ -431,71 +431,85 @@ public abstract class OgnlOps
> }
>
> public static Object toArray( char value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Character( value ), toType );
> }
>
> public static Object toArray( byte value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Byte( value ), toType );
> }
>
> public static Object toArray( int value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Integer( value ), toType );
> }
>
> public static Object toArray( long value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Long( value ), toType );
> }
>
> public static Object toArray( float value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Float( value ), toType );
> }
>
> public static Object toArray( double value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( new Double( value ), toType );
> }
>
> public static Object toArray( boolean value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( Boolean.valueOf( value ), toType );
> }
>
> public static<T> Object convertValue( char value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Character( value ), toType );
> }
>
> public static<T> Object convertValue( byte value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Byte( value ), toType );
> }
>
> public static<T> Object convertValue( int value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Integer( value ), toType );
> }
>
> public static<T> Object convertValue( long value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Long( value ), toType );
> }
>
> public static<T> Object convertValue( float value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Float( value ), toType );
> }
>
> public static<T> Object convertValue( double value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( new Double( value ), toType );
> }
>
> public static<T> Object convertValue( boolean value, Class<T> toType )
> + throws OgnlException
> {
> return convertValue( Boolean.valueOf( value ), toType );
> }
> @@ -503,36 +517,43 @@ public abstract class OgnlOps
> // //////////////////////////////////////////////////////////////
>
> public static<T> Object convertValue( char value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Character( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( byte value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Byte( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( int value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Integer( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( long value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Long( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( float value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Float( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( double value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( new Double( value ), toType, preventNull );
> }
>
> public static<T> Object convertValue( boolean value, Class<T> toType, boolean preventNull )
> + throws OgnlException
> {
> return convertValue( Boolean.valueOf( value ), toType, preventNull );
> }
> @@ -540,36 +561,43 @@ public abstract class OgnlOps
> // ///////////////////////////////////////////////////////////////
>
> public static Object toArray( char value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Character( value ), toType, preventNull );
> }
>
> public static Object toArray( byte value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Byte( value ), toType, preventNull );
> }
>
> public static Object toArray( int value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Integer( value ), toType, preventNull );
> }
>
> public static Object toArray( long value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Long( value ), toType, preventNull );
> }
>
> public static Object toArray( float value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Float( value ), toType, preventNull );
> }
>
> public static Object toArray( double value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( new Double( value ), toType, preventNull );
> }
>
> public static Object toArray( boolean value, Class<?> toType, boolean preventNull )
> + throws OgnlException
> {
> return toArray( Boolean.valueOf( value ), toType, preventNull );
> }
> @@ -583,21 +611,24 @@ public abstract class OgnlOps
> * @return converted value of the type given, or value if the value cannot be converted to the given type.
> */
> public static Object convertValue( Object value, Class<?> toType )
> + throws OgnlException
> {
> return convertValue( value, toType, false );
> }
>
> public static Object toArray( Object value, Class<?> toType )
> + throws OgnlException
> {
> return toArray( value, toType, false );
> }
>
> public static Object toArray( Object value, Class<?> toType, boolean preventNulls )
> + throws OgnlException
> {
> if ( value == null )
> return null;
>
> - Object result = null;
> + Object result;
>
> if ( value.getClass().isArray()&& toType.isAssignableFrom( value.getClass().getComponentType() ) )
> {
> @@ -633,6 +664,7 @@ public abstract class OgnlOps
> }
>
> public static<T> Object convertValue( Object value, Class<T> toType, boolean preventNulls )
> + throws OgnlException
> {
> Object result = null;
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org