public Object remove()

in src/main/java/org/apache/commons/ognl/OgnlContext.java [649:698]


    public Object remove( Object key )
    {
        Object result = null;

        // FIXME: complexity is O(n)
        if ( RESERVED_KEYS.contains( key ) )
        {
            if ( CONTEXT_CONTEXT_KEY.equals( key ) || TRACE_EVALUATIONS_CONTEXT_KEY.equals( key )
                || KEEP_LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
            {
                throw new IllegalArgumentException( "can't remove " + key + " from context" );
            }

            if ( THIS_CONTEXT_KEY.equals( key ) )
            {
                result = getCurrentObject();
                setCurrentObject( null );
            }
            else if ( ROOT_CONTEXT_KEY.equals( key ) )
            {
                result = getRoot();
                setRoot( null );
            }
            else if ( LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
            {
                result = lastEvaluation;
                setLastEvaluation( null );
            }
            else if ( CLASS_RESOLVER_CONTEXT_KEY.equals( key ) )
            {
                result = getClassResolver();
                setClassResolver( null );
            }
            else if ( TYPE_CONVERTER_CONTEXT_KEY.equals( key ) )
            {
                result = getTypeConverter();
                setTypeConverter( null );
            }
            else if ( MEMBER_ACCESS_CONTEXT_KEY.equals( key ) )
            {
                result = getMemberAccess();
                setMemberAccess( null );
            }
        }
        else
        {
            result = values.remove( key );
        }
        return result;
    }