Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-5387

ApplicationMap.remove does not remove the entry from the ServletContext

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 6.2.0, 6.3.0
    • 6.4.0
    • Core
    • None

    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

          Activity

            People

              Unassigned Unassigned
              jonp Jon Pulice
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h