in src/main/java/org/apache/commons/ognl/ListPropertyAccessor.java [33:92]
public Object getProperty( Map<String, Object> context, Object target, Object name )
throws OgnlException
{
List<?> list = (List<?>) target;
if ( name instanceof String )
{
Object result;
if ( "size".equals( name ) )
{
result = list.size();
}
else
{
if ( "iterator".equals( name ) )
{
result = list.iterator();
}
else
{
if ( "isEmpty".equals( name ) || "empty".equals( name ) )
{
result = list.isEmpty() ? Boolean.TRUE : Boolean.FALSE;
}
else
{
result = super.getProperty( context, target, name );
}
}
}
return result;
}
if ( name instanceof Number )
{
return list.get( ( (Number) name ).intValue() );
}
if ( name instanceof DynamicSubscript )
{
int len = list.size();
switch ( ( (DynamicSubscript) name ).getFlag() )
{
case DynamicSubscript.FIRST:
return len > 0 ? list.get( 0 ) : null;
case DynamicSubscript.MID:
return len > 0 ? list.get( len / 2 ) : null;
case DynamicSubscript.LAST:
return len > 0 ? list.get( len - 1 ) : null;
case DynamicSubscript.ALL:
return new ArrayList<Object>( list );
default:
break;
}
}
throw new NoSuchPropertyException( target, name );
}