Jon Pulice created WW-5387:
------------------------------

             Summary: ApplicationMap.remove does not remove from ServletContext
                 Key: WW-5387
                 URL: https://issues.apache.org/jira/browse/WW-5387
             Project: Struts 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 6.3.0, 6.2.0
            Reporter: Jon Pulice


When implementing {{ApplicationAware}} in an action, and calling 
{{remove(key)}} on the injected Map, the removed object reappears on subsequent 
actions, and the object is not removed from the ServletContext (implementing a 
ServletContextAttributeListener will show that only "added" and "replaced" 
events are triggered, but not "removed" events)

 

 
{code:java}
public class TestAction extends ActionSupport implements ApplicationAware {    
public static final String APPLICATION_MAP_TEST_KEY = 
"com.testing.application.key";
    
    private Map<String, Object> applicationMap;    
    
    @Override
    public void withApplication(Map<String, Object> applicationMap) {
        this.applicationMap = applicationMap;
    }

    protected void testPutToApplicationMap() {
        applicationMap.put(APPLICATION_MAP_TEST_KEY, "Test application map 
value");
    }    
    
    protected Object testRemoveFromApplicationMap() {
        return applicationMap.remove(APPLICATION_MAP_TEST_KEY);
    }
} {code}
 

 

The issue appears to be the change to the remove method signature in 
https://issues.apache.org/jira/browse/WW-5196 so that it no longer implements 
the Map interface (which specifies an argument of Object, not String)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to