I just thought of something. We might add in a special case for String input. It would return String.charAt( index ) as an object.
-----Original Message----- From: James Carman [mailto:[EMAIL PROTECTED] Sent: Monday, September 19, 2005 6:57 AM To: 'Jakarta Commons Developers List' Subject: [collections] New Transformer Class(es)... How about a couple of new transformer classes (or maybe one smart one) which transforms either an array or java.util.List into the object within it at a particular index? We could either create two classes ArrayIndexTransformer and ListIndexTransformer or we could create one smart one called IndexTransformer which figures out which type of object it's dealing with (probably the best option, since we have to determine the type of array anyway using if/else statements). Of course, an index value (an integer) would need to be passed into the constructor. Again, we have used this on our current project and it turns out to be quite handy. It would look something like this (don't know about the null case; we could just return null): public class IndexTransformer implements Transformer, Serializable { private final int index; public IndexTransformer( int index ) { this.index = index; } public Object transform( Object input ) { if( input == null ) { throw new IllegalArgumentException( "Cannot transform a null object." ); } if( input instanceof List ) { return ( ( List )input ).get( index ); } else if( input instanceof Object[] ) { return ( ( Object[] )input )[index]; } else if( input instanceof int[] ) { return new Integer( ( ( int[] )input )[index] ); } else if( input instanceof long[] ) { return new Long( ( ( long[] )input )[index] ); } else if( input instanceof short[] ) { return new Short( ( ( short[] )input )[index] ); } else if( input instanceof byte[] ) { return new Byte( ( ( byte[] )input )[index] ); } else if( input instanceof char[] ) { return new Character( ( ( char[] )input )[index] ); } else if( input instanceof float[] ) { return new Float( ( ( float[] )input )[index] ); } else if( input instanceof double[] ) { return new Double( ( ( double[] )input )[index] ); } else if( input instanceof boolean[] ) { return new Boolean( ( ( boolean[] )input )[index] ); } throw new IllegalArgumentException( "Unable to transform object of type " + input.getClass().getName() + "." ); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]