# HG changeset patch # User mullan # Date 1225401848 14400 # Node ID 86f91216664a17e024e9a9b9a3bba8b6285893b6 # Parent 0f8eb7ad4ef527f694daab36d89e9cd5a332fd77 6764553: com.sun.org.apache.xml.internal.security.utils.IdResolver is not thread safe Reviewed-by: valeriep diff -r 0f8eb7ad4ef5 -r 86f91216664a jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java --- a/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java Tue Oct 28 18:21:36 2008 +0100 +++ b/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/IdResolver.java Thu Oct 30 17:24:08 2008 -0400 @@ -70,10 +70,13 @@ */ public static void registerElementById(Element element, String idValue) { Document doc = element.getOwnerDocument(); - WeakHashMap elementMap = (WeakHashMap) docMap.get(doc); - if(elementMap == null) { - elementMap = new WeakHashMap(); - docMap.put(doc, elementMap); + WeakHashMap elementMap; + synchronized (docMap) { + elementMap = (WeakHashMap) docMap.get(doc); + if (elementMap == null) { + elementMap = new WeakHashMap(); + docMap.put(doc, elementMap); + } } elementMap.put(idValue, new WeakReference(element)); } @@ -153,7 +156,10 @@ private static Element getElementByIdType(Document doc, String id) { if (log.isLoggable(java.util.logging.Level.FINE)) log.log(java.util.logging.Level.FINE, "getElementByIdType() Search for ID " + id); - WeakHashMap elementMap = (WeakHashMap) docMap.get(doc); + WeakHashMap elementMap; + synchronized (docMap) { + elementMap = (WeakHashMap) docMap.get(doc); + } if (elementMap != null) { WeakReference weakReference = (WeakReference) elementMap.get(id); if (weakReference != null) {