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