public Object getProperty()

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