Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectArrayPool.java Sat May 14 13:18:29 2011 @@ -21,30 +21,38 @@ package org.apache.commons.ognl; import java.util.*; -public final class ObjectArrayPool extends Object +public final class ObjectArrayPool + extends Object { - private IntHashMap pools = new IntHashMap(23); + private IntHashMap pools = new IntHashMap( 23 ); - public static class SizePool extends Object + public static class SizePool + extends Object { - private List arrays = new ArrayList(); - private int arraySize; - private int size; - private int created = 0; - private int recovered = 0; - private int recycled = 0; + private List arrays = new ArrayList(); - public SizePool(int arraySize) + 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); + this( arraySize, 0 ); } - public SizePool(int arraySize, int initialSize) + public SizePool( int arraySize, int initialSize ) { super(); this.arraySize = arraySize; - for (int i = 0; i < initialSize; i++) { - arrays.add(new Object[arraySize]); + for ( int i = 0; i < initialSize; i++ ) + { + arrays.add( new Object[arraySize] ); } created = size = initialSize; } @@ -56,36 +64,44 @@ public final class ObjectArrayPool exten public Object[] create() { - Object[] result; + Object[] result; - if (size > 0) { - result = (Object[])arrays.remove(size - 1); + if ( size > 0 ) + { + result = (Object[]) arrays.remove( size - 1 ); size--; recovered++; - } else { + } + else + { result = new Object[arraySize]; created++; } return result; } - public synchronized void recycle(Object[] value) + 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); + 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); + Arrays.fill( value, null ); + arrays.add( value ); size++; recycled++; - } else { - throw new IllegalArgumentException("cannot recycle null object"); + } + else + { + throw new IllegalArgumentException( "cannot recycle null object" ); } } /** - Returns the number of items in the pool + * Returns the number of items in the pool */ public int getSize() { @@ -93,8 +109,7 @@ public final class ObjectArrayPool exten } /** - 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. */ public int getCreatedCount() { @@ -102,8 +117,7 @@ public final class ObjectArrayPool exten } /** - 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. */ public int getRecoveredCount() { @@ -111,8 +125,7 @@ public final class ObjectArrayPool exten } /** - 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. */ public int getRecycledCount() { @@ -130,41 +143,42 @@ public final class ObjectArrayPool exten return pools; } - public synchronized SizePool getSizePool(int arraySize) + public synchronized SizePool getSizePool( int arraySize ) { - SizePool result = (SizePool)pools.get(arraySize); + SizePool result = (SizePool) pools.get( arraySize ); - if (result == null) { - pools.put(arraySize, result = new SizePool(arraySize)); + if ( result == null ) + { + pools.put( arraySize, result = new SizePool( arraySize ) ); } return result; } - public synchronized Object[] create(int arraySize) + public synchronized Object[] create( int arraySize ) { - return getSizePool(arraySize).create(); + return getSizePool( arraySize ).create(); } - public synchronized Object[] create(Object singleton) + public synchronized Object[] create( Object singleton ) { - Object[] result = create(1); + Object[] result = create( 1 ); result[0] = singleton; return result; } - public synchronized Object[] create(Object object1, Object object2) + public synchronized Object[] create( Object object1, Object object2 ) { - Object[] result = create(2); + Object[] result = create( 2 ); result[0] = object1; result[1] = object2; return result; } - public synchronized Object[] create(Object object1, Object object2, Object object3) + public synchronized Object[] create( Object object1, Object object2, Object object3 ) { - Object[] result = create(3); + Object[] result = create( 3 ); result[0] = object1; result[1] = object2; @@ -172,9 +186,9 @@ public final class ObjectArrayPool exten return result; } - public synchronized Object[] create(Object object1, Object object2, Object object3, Object object4) + public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4 ) { - Object[] result = create(4); + Object[] result = create( 4 ); result[0] = object1; result[1] = object2; @@ -183,9 +197,9 @@ public final class ObjectArrayPool exten return result; } - public synchronized Object[] create(Object object1, Object object2, Object object3, Object object4, Object object5) + public synchronized Object[] create( Object object1, Object object2, Object object3, Object object4, Object object5 ) { - Object[] result = create(5); + Object[] result = create( 5 ); result[0] = object1; result[1] = object2; @@ -195,10 +209,11 @@ public final class ObjectArrayPool exten return result; } - public synchronized void recycle(Object[] value) + public synchronized void recycle( Object[] value ) { - if (value != null) { - getSizePool(value.length).recycle(value); + if ( value != null ) + { + getSizePool( value.length ).recycle( value ); } } }
Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectElementsAccessor.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectElementsAccessor.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectElementsAccessor.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectElementsAccessor.java Sat May 14 13:18:29 2011 @@ -22,33 +22,38 @@ package org.apache.commons.ognl; import java.util.*; /** - * Implementation of ElementsAccessor that returns a single-element iterator, containing - * the original target object. + * Implementation of ElementsAccessor that returns a single-element iterator, containing the original target object. + * * @author Luke Blanshard ([email protected]) * @author Drew Davidson ([email protected]) */ -public class ObjectElementsAccessor implements ElementsAccessor +public class ObjectElementsAccessor + implements ElementsAccessor { public Enumeration getElements( Object target ) { - final Object object = target; + final Object object = target; - return new Enumeration() { - private boolean seen = false; + return new Enumeration() + { + private boolean seen = false; - public boolean hasMoreElements() { - return !seen; - } + public boolean hasMoreElements() + { + return !seen; + } - public Object nextElement() { - Object result = null; + public Object nextElement() + { + Object result = null; - if (!seen) { - result = object; - seen = true; - } - return result; - } - }; + if ( !seen ) + { + result = object; + seen = true; + } + return result; + } + }; } } Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectIndexedPropertyDescriptor.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectIndexedPropertyDescriptor.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectIndexedPropertyDescriptor.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectIndexedPropertyDescriptor.java Sat May 14 13:18:29 2011 @@ -23,73 +23,80 @@ import java.beans.*; import java.lang.reflect.*; /** - * <p>PropertyDescriptor subclass that describes an indexed set of read/write - * methods to get a property. Unlike IndexedPropertyDescriptor this allows - * the "key" to be an arbitrary object rather than just an int. Consequently - * it does not have a "readMethod" or "writeMethod" because it only expects - * a pattern like:</p> - *<pre> + * <p> + * PropertyDescriptor subclass that describes an indexed set of read/write methods to get a property. Unlike + * IndexedPropertyDescriptor this allows the "key" to be an arbitrary object rather than just an int. Consequently it + * does not have a "readMethod" or "writeMethod" because it only expects a pattern like: + * </p> + * + * <pre> * public void set<i>Property</i>(<i>KeyType</i>, <i>ValueType</i>); * public <i>ValueType</i> get<i>Property</i>(<i>KeyType</i>); - *</pre> - * <p>and does not require the methods that access it as an array. OGNL can - * get away with this without losing functionality because if the object - * does expose the properties they are most probably in a Map and that case - * is handled by the normal OGNL property accessors. - *</p> - *<p>For example, if an object were to have methods that accessed and "attributes" - * property it would be natural to index them by String rather than by integer - * and expose the attributes as a map with a different property name: - *<pre> - * public void setAttribute(String name, Object value); - * public Object getAttribute(String name); - * public Map getAttributes(); - *</pre> - *<p>Note that the index get/set is called get/set <code>Attribute</code> - * whereas the collection getter is called <code>Attributes</code>. This - * case is handled unambiguously by the OGNL property accessors because the - * set/get<code>Attribute</code> methods are detected by this object and the - * "attributes" case is handled by the <code>MapPropertyAccessor</code>. - * Therefore OGNL expressions calling this code would be handled in the - * following way: - *</p> - *<table> - * <tr><th>OGNL Expression</th> - * <th>Handling</th> - * </tr> - * <tr> - * <td><code>attribute["name"]</code></td> - * <td>Handled by an index getter, like <code>getAttribute(String)</code>.</td> - * </tr> - * <tr> - * <td><code>attribute["name"] = value</code></td> - * <td>Handled by an index setter, like <code>setAttribute(String, Object)</code>.</td> - * </tr> - * <tr> - * <td><code>attributes["name"]</code></td> - * <td>Handled by <code>MapPropertyAccessor</code> via a <code>Map.get()</code>. This - * will <b>not</b> go through the index get accessor. - * </td> - * </tr> - * <tr> - * <td><code>attributes["name"] = value</code></td> - * <td>Handled by <code>MapPropertyAccessor</code> via a <code>Map.put()</code>. This - * will <b>not</b> go through the index set accessor. - * </td> - * </tr> + * </pre> + * <p> + * and does not require the methods that access it as an array. OGNL can get away with this without losing functionality + * because if the object does expose the properties they are most probably in a Map and that case is handled by the + * normal OGNL property accessors. + * </p> + * <p> + * For example, if an object were to have methods that accessed and "attributes" property it would be natural to index + * them by String rather than by integer and expose the attributes as a map with a different property name: + * + * <pre> + * public void setAttribute( String name, Object value ); + * + * public Object getAttribute( String name ); + * + * public Map getAttributes(); + * </pre> + * <p> + * Note that the index get/set is called get/set <code>Attribute</code> whereas the collection getter is called + * <code>Attributes</code>. This case is handled unambiguously by the OGNL property accessors because the set/get + * <code>Attribute</code> methods are detected by this object and the "attributes" case is handled by the + * <code>MapPropertyAccessor</code>. Therefore OGNL expressions calling this code would be handled in the following way: + * </p> + * <table> + * <tr> + * <th>OGNL Expression</th> + * <th>Handling</th> + * </tr> + * <tr> + * <td><code>attribute["name"]</code></td> + * <td>Handled by an index getter, like <code>getAttribute(String)</code>.</td> + * </tr> + * <tr> + * <td><code>attribute["name"] = value</code></td> + * <td>Handled by an index setter, like <code>setAttribute(String, Object)</code>.</td> + * </tr> + * <tr> + * <td><code>attributes["name"]</code></td> + * <td>Handled by <code>MapPropertyAccessor</code> via a <code>Map.get()</code>. This will <b>not</b> go through the + * index get accessor.</td> + * </tr> + * <tr> + * <td><code>attributes["name"] = value</code></td> + * <td>Handled by <code>MapPropertyAccessor</code> via a <code>Map.put()</code>. This will <b>not</b> go through the + * index set accessor.</td> + * </tr> * </table> + * * @author Luke Blanshard ([email protected]) * @author Drew Davidson ([email protected]) */ -public class ObjectIndexedPropertyDescriptor extends PropertyDescriptor +public class ObjectIndexedPropertyDescriptor + extends PropertyDescriptor { - private Method indexedReadMethod; - private Method indexedWriteMethod; - private Class propertyType; + private Method indexedReadMethod; - public ObjectIndexedPropertyDescriptor(String propertyName, Class propertyType, Method indexedReadMethod, Method indexedWriteMethod) throws IntrospectionException + private Method indexedWriteMethod; + + private Class propertyType; + + public ObjectIndexedPropertyDescriptor( String propertyName, Class propertyType, Method indexedReadMethod, + Method indexedWriteMethod ) + throws IntrospectionException { - super(propertyName, null, null); + super( propertyName, null, null ); this.propertyType = propertyType; this.indexedReadMethod = indexedReadMethod; this.indexedWriteMethod = indexedWriteMethod; Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectMethodAccessor.java Sat May 14 13:18:29 2011 @@ -23,38 +23,39 @@ import java.util.List; import java.util.Map; /** - * Implementation of PropertyAccessor that uses reflection on the target object's class to find a - * field or a pair of set/get methods with the given property name. - * + * Implementation of PropertyAccessor that uses reflection on the target object's class to find a field or a pair of + * set/get methods with the given property name. + * * @author Luke Blanshard ([email protected]) * @author Drew Davidson ([email protected]) */ -public class ObjectMethodAccessor implements MethodAccessor +public class ObjectMethodAccessor + implements MethodAccessor { /* MethodAccessor interface */ - public Object callStaticMethod(Map context, Class targetClass, String methodName, Object[] args) - throws MethodFailedException + public Object callStaticMethod( Map context, Class targetClass, String methodName, Object[] args ) + throws MethodFailedException { - List methods = OgnlRuntime.getMethods(targetClass, methodName, true); + List methods = OgnlRuntime.getMethods( targetClass, methodName, true ); - return OgnlRuntime.callAppropriateMethod((OgnlContext) context, targetClass, - null, methodName, null, methods, args); + return OgnlRuntime.callAppropriateMethod( (OgnlContext) context, targetClass, null, methodName, null, methods, + args ); } - public Object callMethod(Map context, Object target, String methodName, Object[] args) - throws MethodFailedException + public Object callMethod( Map context, Object target, String methodName, Object[] args ) + throws MethodFailedException { - Class targetClass = (target == null) ? null : target.getClass(); - List methods = OgnlRuntime.getMethods(targetClass, methodName, false); + Class targetClass = ( target == null ) ? null : target.getClass(); + List methods = OgnlRuntime.getMethods( targetClass, methodName, false ); - if ((methods == null) || (methods.size() == 0)) + if ( ( methods == null ) || ( methods.size() == 0 ) ) { - methods = OgnlRuntime.getMethods(targetClass, methodName, true); + methods = OgnlRuntime.getMethods( targetClass, methodName, true ); } - return OgnlRuntime.callAppropriateMethod((OgnlContext) context, target, - target, methodName, null, methods, args); + return OgnlRuntime.callAppropriateMethod( (OgnlContext) context, target, target, methodName, null, methods, + args ); } } Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectNullHandler.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectNullHandler.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectNullHandler.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectNullHandler.java Sat May 14 13:18:29 2011 @@ -22,20 +22,22 @@ package org.apache.commons.ognl; import java.util.*; /** - * Implementation of NullHandler that returns null in all cases, - * so that NullPointerException will be thrown by the caller. + * Implementation of NullHandler that returns null in all cases, so that NullPointerException will be thrown by the + * caller. + * * @author Luke Blanshard ([email protected]) * @author Drew Davidson ([email protected]) */ -public class ObjectNullHandler implements NullHandler +public class ObjectNullHandler + implements NullHandler { /* NullHandler interface */ - public Object nullMethodResult(Map context, Object target, String methodName, Object[] args) + public Object nullMethodResult( Map context, Object target, String methodName, Object[] args ) { return null; } - public Object nullPropertyValue(Map context, Object target, Object property) + public Object nullPropertyValue( Map context, Object target, Object property ) { return null; } Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java?rev=1103095&r1=1103094&r2=1103095&view=diff ============================================================================== --- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java (original) +++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/ObjectPropertyAccessor.java Sat May 14 13:18:29 2011 @@ -28,34 +28,43 @@ import java.lang.reflect.Method; import java.util.Map; /** - * Implementation of PropertyAccessor that uses reflection on the target object's class to find a - * field or a pair of set/get methods with the given property name. - * + * Implementation of PropertyAccessor that uses reflection on the target object's class to find a field or a pair of + * set/get methods with the given property name. + * * @author Luke Blanshard ([email protected]) * @author Drew Davidson ([email protected]) */ -public class ObjectPropertyAccessor implements PropertyAccessor { +public class ObjectPropertyAccessor + implements PropertyAccessor +{ /** * Returns OgnlRuntime.NotFound if the property does not exist. */ - public Object getPossibleProperty(Map context, Object target, String name) - throws OgnlException + public Object getPossibleProperty( Map context, Object target, String name ) + throws OgnlException { Object result; OgnlContext ognlContext = (OgnlContext) context; - try { - if ((result = OgnlRuntime.getMethodValue(ognlContext, target, name, true)) == OgnlRuntime.NotFound) + try + { + if ( ( result = OgnlRuntime.getMethodValue( ognlContext, target, name, true ) ) == OgnlRuntime.NotFound ) { - result = OgnlRuntime.getFieldValue(ognlContext, target, name, true); + result = OgnlRuntime.getFieldValue( ognlContext, target, name, true ); } - } catch (IntrospectionException ex) { - throw new OgnlException(name, ex); - } catch (OgnlException ex) { + } + catch ( IntrospectionException ex ) + { + throw new OgnlException( name, ex ); + } + catch ( OgnlException ex ) + { throw ex; - } catch (Exception ex) { - throw new OgnlException(name, ex); + } + catch ( Exception ex ) + { + throw new OgnlException( name, ex ); } return result; @@ -64,114 +73,134 @@ public class ObjectPropertyAccessor impl /** * Returns OgnlRuntime.NotFound if the property does not exist. */ - public Object setPossibleProperty(Map context, Object target, String name, Object value) - throws OgnlException + public Object setPossibleProperty( Map context, Object target, String name, Object value ) + throws OgnlException { Object result = null; OgnlContext ognlContext = (OgnlContext) context; - try { - if (!OgnlRuntime.setMethodValue(ognlContext, target, name, value, true)) + try + { + if ( !OgnlRuntime.setMethodValue( ognlContext, target, name, value, true ) ) { - result = OgnlRuntime.setFieldValue(ognlContext, target, name, value) ? null : OgnlRuntime.NotFound; + result = OgnlRuntime.setFieldValue( ognlContext, target, name, value ) ? null : OgnlRuntime.NotFound; } - if (result == OgnlRuntime.NotFound) + if ( result == OgnlRuntime.NotFound ) { - Method m = OgnlRuntime.getWriteMethod(target.getClass(), name); - if (m != null) + Method m = OgnlRuntime.getWriteMethod( target.getClass(), name ); + if ( m != null ) { - result = m.invoke(target, new Object[] { value}); + result = m.invoke( target, new Object[] { value } ); } } - } catch (IntrospectionException ex) { - throw new OgnlException(name, ex); - } catch (OgnlException ex) { + } + catch ( IntrospectionException ex ) + { + throw new OgnlException( name, ex ); + } + catch ( OgnlException ex ) + { throw ex; - } catch (Exception ex) { - throw new OgnlException(name, ex); + } + catch ( Exception ex ) + { + throw new OgnlException( name, ex ); } return result; } - public boolean hasGetProperty(OgnlContext context, Object target, Object oname) - throws OgnlException + public boolean hasGetProperty( OgnlContext context, Object target, Object oname ) + throws OgnlException { - try { - return OgnlRuntime.hasGetProperty(context, target, oname); - } catch (IntrospectionException ex) { - throw new OgnlException("checking if " + target + " has gettable property " + oname, ex); + try + { + return OgnlRuntime.hasGetProperty( context, target, oname ); + } + catch ( IntrospectionException ex ) + { + throw new OgnlException( "checking if " + target + " has gettable property " + oname, ex ); } } - public boolean hasGetProperty(Map context, Object target, Object oname) - throws OgnlException + public boolean hasGetProperty( Map context, Object target, Object oname ) + throws OgnlException { - return hasGetProperty((OgnlContext) context, target, oname); + return hasGetProperty( (OgnlContext) context, target, oname ); } - public boolean hasSetProperty(OgnlContext context, Object target, Object oname) - throws OgnlException + public boolean hasSetProperty( OgnlContext context, Object target, Object oname ) + throws OgnlException { - try { - return OgnlRuntime.hasSetProperty(context, target, oname); - } catch (IntrospectionException ex) { - throw new OgnlException("checking if " + target + " has settable property " + oname, ex); + try + { + return OgnlRuntime.hasSetProperty( context, target, oname ); + } + catch ( IntrospectionException ex ) + { + throw new OgnlException( "checking if " + target + " has settable property " + oname, ex ); } } - public boolean hasSetProperty(Map context, Object target, Object oname) - throws OgnlException + public boolean hasSetProperty( Map context, Object target, Object oname ) + throws OgnlException { - return hasSetProperty((OgnlContext) context, target, oname); + return hasSetProperty( (OgnlContext) context, target, oname ); } - public Object getProperty(Map context, Object target, Object oname) - throws OgnlException + public Object getProperty( Map context, Object target, Object oname ) + throws OgnlException { Object result = null; String name = oname.toString(); - result = getPossibleProperty(context, target, name); + result = getPossibleProperty( context, target, name ); - if (result == OgnlRuntime.NotFound) + if ( result == OgnlRuntime.NotFound ) { - throw new NoSuchPropertyException(target, name); + throw new NoSuchPropertyException( target, name ); } return result; } - public void setProperty(Map context, Object target, Object oname, Object value) - throws OgnlException + public void setProperty( Map context, Object target, Object oname, Object value ) + throws OgnlException { String name = oname.toString(); - Object result = setPossibleProperty(context, target, name, value); + Object result = setPossibleProperty( context, target, name, value ); - if (result == OgnlRuntime.NotFound) + if ( result == OgnlRuntime.NotFound ) { - throw new NoSuchPropertyException(target, name); + throw new NoSuchPropertyException( target, name ); } } - public Class getPropertyClass(OgnlContext context, Object target, Object index) + public Class getPropertyClass( OgnlContext context, Object target, Object index ) { - try { - Method m = OgnlRuntime.getReadMethod(target.getClass(), index.toString()); + try + { + Method m = OgnlRuntime.getReadMethod( target.getClass(), index.toString() ); - if (m == null) { + if ( m == null ) + { - if (String.class.isAssignableFrom(index.getClass()) && !target.getClass().isArray()) { - String key = ((String) index).replaceAll("\"", ""); - try { - Field f = target.getClass().getField(key); - if (f != null) { + if ( String.class.isAssignableFrom( index.getClass() ) && !target.getClass().isArray() ) + { + String key = ( (String) index ).replaceAll( "\"", "" ); + try + { + Field f = target.getClass().getField( key ); + if ( f != null ) + { return f.getType(); } - } catch (NoSuchFieldException e) { + } + catch ( NoSuchFieldException e ) + { return null; } } @@ -181,118 +210,138 @@ public class ObjectPropertyAccessor impl return m.getReturnType(); - } catch (Throwable t) + } + catch ( Throwable t ) { - throw OgnlOps.castToRuntime(t); + throw OgnlOps.castToRuntime( t ); } } - public String getSourceAccessor(OgnlContext context, Object target, Object index) + public String getSourceAccessor( OgnlContext context, Object target, Object index ) { - try { + try + { - String methodName = index.toString().replaceAll("\"", ""); - Method m = OgnlRuntime.getReadMethod(target.getClass(), methodName); + String methodName = index.toString().replaceAll( "\"", "" ); + Method m = OgnlRuntime.getReadMethod( target.getClass(), methodName ); // try last ditch effort of checking if they were trying to do reflection via a return method value - if (m == null && context.getCurrentObject() != null) - m = OgnlRuntime.getReadMethod(target.getClass(), context.getCurrentObject().toString().replaceAll("\"", "")); + if ( m == null && context.getCurrentObject() != null ) + m = + OgnlRuntime.getReadMethod( target.getClass(), + context.getCurrentObject().toString().replaceAll( "\"", "" ) ); - //System.out.println("tried to get read method from target: " + target.getClass() + " with methodName:" + methodName + " result: " + m); + // System.out.println("tried to get read method from target: " + target.getClass() + " with methodName:" + + // methodName + " result: " + m); // try to get field if no method could be found - if (m == null) + if ( m == null ) { try { - if (String.class.isAssignableFrom(index.getClass()) && !target.getClass().isArray()) + if ( String.class.isAssignableFrom( index.getClass() ) && !target.getClass().isArray() ) { - Field f = target.getClass().getField(methodName); + Field f = target.getClass().getField( methodName ); - if (f != null) + if ( f != null ) { - context.setCurrentType(f.getType()); - context.setCurrentAccessor(f.getDeclaringClass()); + context.setCurrentType( f.getType() ); + context.setCurrentAccessor( f.getDeclaringClass() ); return "." + f.getName(); } } } - catch (NoSuchFieldException e) { + catch ( NoSuchFieldException e ) + { // ignore } return ""; } - context.setCurrentType(m.getReturnType()); - context.setCurrentAccessor(OgnlRuntime.getCompiler().getSuperOrInterfaceClass(m, m.getDeclaringClass())); + context.setCurrentType( m.getReturnType() ); + context.setCurrentAccessor( OgnlRuntime.getCompiler().getSuperOrInterfaceClass( m, m.getDeclaringClass() ) ); return "." + m.getName() + "()"; - } catch (Throwable t) + } + catch ( Throwable t ) { - throw OgnlOps.castToRuntime(t); + throw OgnlOps.castToRuntime( t ); } } - public String getSourceSetter(OgnlContext context, Object target, Object index) + public String getSourceSetter( OgnlContext context, Object target, Object index ) { - try { + try + { - String methodName = index.toString().replaceAll("\"", ""); - Method m = OgnlRuntime.getWriteMethod(target.getClass(), methodName); + String methodName = index.toString().replaceAll( "\"", "" ); + Method m = OgnlRuntime.getWriteMethod( target.getClass(), methodName ); - if (m == null && context.getCurrentObject() != null - && context.getCurrentObject().toString() != null) + if ( m == null && context.getCurrentObject() != null && context.getCurrentObject().toString() != null ) { - m = OgnlRuntime.getWriteMethod(target.getClass(), context.getCurrentObject().toString().replaceAll("\"", "")); + m = + OgnlRuntime.getWriteMethod( target.getClass(), + context.getCurrentObject().toString().replaceAll( "\"", "" ) ); } - if (m == null || m.getParameterTypes() == null || m.getParameterTypes().length <= 0) - throw new UnsupportedCompilationException("Unable to determine setting expression on " + context.getCurrentObject() - + " with index of " + index); + if ( m == null || m.getParameterTypes() == null || m.getParameterTypes().length <= 0 ) + throw new UnsupportedCompilationException( "Unable to determine setting expression on " + + context.getCurrentObject() + " with index of " + index ); Class parm = m.getParameterTypes()[0]; String conversion; - if (m.getParameterTypes().length > 1) - throw new UnsupportedCompilationException("Object property accessors can only support single parameter setters."); + if ( m.getParameterTypes().length > 1 ) + throw new UnsupportedCompilationException( + "Object property accessors can only support single parameter setters." ); - - if (parm.isPrimitive()) + if ( parm.isPrimitive() ) { - Class wrapClass = OgnlRuntime.getPrimitiveWrapperClass(parm); - conversion = OgnlRuntime.getCompiler().createLocalReference(context, - "((" + wrapClass.getName() + ")org.apache.commons.ognl.OgnlOps#convertValue($3," + wrapClass.getName() - + ".class, true))." + OgnlRuntime.getNumericValueGetter(wrapClass), - parm); + Class wrapClass = OgnlRuntime.getPrimitiveWrapperClass( parm ); + conversion = + OgnlRuntime.getCompiler().createLocalReference( context, + "((" + + wrapClass.getName() + + ")org.apache.commons.ognl.OgnlOps#convertValue($3," + + wrapClass.getName() + ".class, true))." + + OgnlRuntime.getNumericValueGetter( wrapClass ), + parm ); - } else if (parm.isArray()) + } + else if ( parm.isArray() ) { - conversion = OgnlRuntime.getCompiler().createLocalReference(context, - "(" + ExpressionCompiler.getCastString(parm) + ")org.apache.commons.ognl.OgnlOps#toArray($3," - + parm.getComponentType().getName() + ".class)", - parm); + conversion = + OgnlRuntime.getCompiler().createLocalReference( context, + "(" + + ExpressionCompiler.getCastString( parm ) + + ")org.apache.commons.ognl.OgnlOps#toArray($3," + + parm.getComponentType().getName() + ".class)", + parm ); - } else + } + else { - conversion = OgnlRuntime.getCompiler().createLocalReference(context, - "(" + parm.getName()+ ")org.apache.commons.ognl.OgnlOps#convertValue($3," - + parm.getName() - + ".class)", - parm); + conversion = + OgnlRuntime.getCompiler().createLocalReference( context, + "(" + + parm.getName() + + ")org.apache.commons.ognl.OgnlOps#convertValue($3," + + parm.getName() + ".class)", parm ); } - context.setCurrentType(m.getReturnType()); - context.setCurrentAccessor(OgnlRuntime.getCompiler().getSuperOrInterfaceClass(m, m.getDeclaringClass())); + context.setCurrentType( m.getReturnType() ); + context.setCurrentAccessor( OgnlRuntime.getCompiler().getSuperOrInterfaceClass( m, m.getDeclaringClass() ) ); return "." + m.getName() + "(" + conversion + ")"; - } catch (Throwable t) + } + catch ( Throwable t ) { - throw OgnlOps.castToRuntime(t); + throw OgnlOps.castToRuntime( t ); } } }
