Velocity Uberspector behaves differently for get(String) and put(String, 
Object) methods
----------------------------------------------------------------------------------------

         Key: VELOCITY-449
         URL: http://issues.apache.org/jira/browse/VELOCITY-449
     Project: Velocity
        Type: Bug

    Versions: 1.5    
    Reporter: Henning Schmiedehausen
     Fix For: 1.5


Consider an Object 

public class Test {
  private Object foo;

  public Object get(String dummy) { return foo; }
  public void put(String dummy, Object foo) { this.foo = foo };
}

Put this object into a Velocity Context as $test, add a HashMap as $map.

Use the following template:

$map.put("key", "val1")
$test.put("key", "val1")

$map.get("key")   --> Returns val1
$test.get("key")  --> Returns val1

$map.key --> Returns val1
$test.key --> Returns val1

#set ($map.key = "val2")
#set ($test.key = "val2")

$map.key --> Returns val2
$test.key --> Returns val1   !!

The reason for this is, that the UberspectorImpl, in getPropertySet tests in 
line 247 whether the passed object is assignable to a Map. This test is no in 
the getPropertyGet
and seems to have no reason because the following method lookup for "put" will 
succeed anyway.

I'd suggest the removal of this test. 



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to