You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by di...@apache.org on 2004/07/07 03:49:55 UTC

cvs commit: xml-security/src/org/apache/xml/security/utils IdResolver.java

dims        2004/07/06 18:49:55

  Modified:    src/org/apache/xml/security/utils IdResolver.java
  Log:
  Fix for Bug 29595 - Memory retention problem in XMLSecurity 1.1.0 java library
  
  Revision  Changes    Path
  1.17      +8 -3      xml-security/src/org/apache/xml/security/utils/IdResolver.java
  
  Index: IdResolver.java
  ===================================================================
  RCS file: /home/cvs/xml-security/src/org/apache/xml/security/utils/IdResolver.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- IdResolver.java	12 May 2004 12:00:46 -0000	1.16
  +++ IdResolver.java	7 Jul 2004 01:49:55 -0000	1.17
  @@ -26,6 +26,7 @@
   import org.w3c.dom.Element;
   
   import java.util.WeakHashMap;
  +import java.lang.ref.WeakReference;
   
   
   /**
  @@ -73,7 +74,7 @@
             elementMap = new WeakHashMap();
             docMap.put(doc, elementMap);
         }
  -      elementMap.put(idValue, element);
  +      elementMap.put(idValue, new WeakReference(element));
      }
   
      /**
  @@ -208,7 +209,11 @@
         log.debug("getElementByIdType() Search for ID " + id);
          WeakHashMap elementMap = (WeakHashMap) docMap.get(doc);
          if (elementMap != null) {
  -           return (Element)elementMap.get(id);
  +           WeakReference weakReference = (WeakReference) elementMap.get(id);
  +           if (weakReference != null)
  +           {
  +                return (Element) weakReference.get();   
  +           }
          }
          return null;
      }