Description
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)
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"); //This works fine } protected Object testRemoveFromApplicationMap() { return applicationMap.remove(APPLICATION_MAP_TEST_KEY); //Does not work } ... }
The issue appears to be the change to the remove method signature in WW-5196 so that it no longer implements the Map interface (which specifies an argument of Object, not String)
Attachments
Issue Links
- is broken by
-
WW-5196 Make RequestMap and ApplicationMap to use generics, also correct SessionMap to always be of type <String, Object>
- Closed
- links to