in src/main/java/org/apache/commons/ognl/OgnlContext.java [588:647]
public Object put( String key, Object value )
{
Object result = null;
// FIXME: complexity is O(n)
if ( RESERVED_KEYS.contains( key ) )
{
if ( CONTEXT_CONTEXT_KEY.equals( key ) )
{
throw new IllegalArgumentException( "can't change " + CONTEXT_CONTEXT_KEY + " in context" );
}
if ( THIS_CONTEXT_KEY.equals( key ) )
{
result = getCurrentObject();
setCurrentObject( value );
}
else if ( ROOT_CONTEXT_KEY.equals( key ) )
{
result = getRoot();
setRoot( value );
}
else if ( TRACE_EVALUATIONS_CONTEXT_KEY.equals( key ) )
{
result = getTraceEvaluations() ? Boolean.TRUE : Boolean.FALSE;
setTraceEvaluations( OgnlOps.booleanValue( value ) );
}
else if ( LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
{
result = getLastEvaluation();
lastEvaluation = (Evaluation) value;
}
else if ( KEEP_LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
{
result = getKeepLastEvaluation() ? Boolean.TRUE : Boolean.FALSE;
setKeepLastEvaluation( OgnlOps.booleanValue( value ) );
}
else if ( CLASS_RESOLVER_CONTEXT_KEY.equals( key ) )
{
result = getClassResolver();
setClassResolver( (ClassResolver) value );
}
else if ( TYPE_CONVERTER_CONTEXT_KEY.equals( key ) )
{
result = getTypeConverter();
setTypeConverter( (TypeConverter) value );
}
else if ( MEMBER_ACCESS_CONTEXT_KEY.equals( key ) )
{
result = getMemberAccess();
setMemberAccess( (MemberAccess) value );
}
}
else
{
result = values.put( key, value );
}
return result;
}