public Object getProperty()

in src/main/java/org/apache/commons/ognl/MapPropertyAccessor.java [34:85]


    public Object getProperty( Map<String, Object> context, Object target, Object name )
        throws OgnlException
    {
        Object result;
        @SuppressWarnings( "unchecked" ) // checked by the invoker
            Map<Object, Object> map = (Map<Object, Object>) target;
        Node currentNode = ( (OgnlContext) context ).getCurrentNode().jjtGetParent();
        boolean indexedAccess = false;

        if ( currentNode == null )
        {
            throw new OgnlException( "node is null for '" + name + "'" );
        }
        if ( !( currentNode instanceof ASTProperty ) )
        {
            currentNode = currentNode.jjtGetParent();
        }
        if ( currentNode instanceof ASTProperty )
        {
            indexedAccess = ( (ASTProperty) currentNode ).isIndexedAccess();
        }

        if ( ( name instanceof String ) && !indexedAccess )
        {
            if ( "size".equals( name ) )
            {
                result = map.size();
            }
            else if ( "keys".equals( name ) || "keySet".equals( name ) )
            {
                result = map.keySet();
            }
            else if ( "values".equals( name ) )
            {
                result = map.values();
            }
            else if ( "isEmpty".equals( name ) )
            {
                result = map.isEmpty() ? Boolean.TRUE : Boolean.FALSE;
            }
            else
            {
                result = map.get( name );
            }
        }
        else
        {
            result = map.get( name );
        }

        return result;
    }