svn commit: r712562 - /xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
Author: vgritsenko
Date: Sun Nov  9 13:49:50 2008
New Revision: 712562

URL: http://svn.apache.org/viewvc?rev=712562&view=rev
Log:
synchronize streamFromXML() method

Modified:
    xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java

Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java?rev=712562&r1=712561&r2=712562&view=diff
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java Sun Nov  9 13:49:50 2008
@@ -44,14 +44,14 @@
     static final String NSURI = "nsuri";
     static final String ID = "id";
 
-    private transient boolean dirty;
-    private transient long lastModified = System.currentTimeMillis();
-
     private short maxSymbol = -1;
     private final Map symbols = new HashMap(); // String to SymbolInfo
     private final Map names = new HashMap();   // Short to SymbolInfo
     private boolean readOnly;
 
+    private transient boolean dirty;
+    private transient long lastModified = System.currentTimeMillis();
+
 
     public static final class SymbolInfo implements Serializable {
         private final String namespaceURI;
@@ -319,35 +319,37 @@
     }
 
     public final void streamFromXML(Element element) throws DOMException {
-        symbols.clear();
-        names.clear();
-        maxSymbol = -1;
-
-        NodeList list = element.getElementsByTagName(SYMBOL);
-        int size = list.getLength();
-        for (int i = 0; i < size; i++) {
-            Element elem = (Element) list.item(i);
-
-            String qname = elem.getAttribute(NAME);
-            String namespaceURI = elem.getAttribute(NSURI);
-            if (namespaceURI != null && namespaceURI.length() == 0) {
-                namespaceURI = null;
-            }
+        synchronized (symbols) {
+            maxSymbol = -1;
+            symbols.clear();
+            names.clear();
+
+            NodeList list = element.getElementsByTagName(SYMBOL);
+            int size = list.getLength();
+            for (int i = 0; i < size; i++) {
+                Element elem = (Element) list.item(i);
+
+                String qname = elem.getAttribute(NAME);
+                String namespaceURI = elem.getAttribute(NSURI);
+                if (namespaceURI != null && namespaceURI.length() == 0) {
+                    namespaceURI = null;
+                }
 
-            short id = Short.parseShort(elem.getAttribute(ID));
-            if (id > maxSymbol) {
-                maxSymbol = id;
-            }
+                short id = Short.parseShort(elem.getAttribute(ID));
+                if (id > maxSymbol) {
+                    maxSymbol = id;
+                }
 
-            SymbolInfo info = new SymbolInfo(qname, namespaceURI, id);
-            if (namespaceURI != null) {
-                String lookupName = getLookupName(qname, namespaceURI);
-                symbols.put(lookupName, info);
-            } else {
-                symbols.put(qname, info);
-            }
+                SymbolInfo info = new SymbolInfo(qname, namespaceURI, id);
+                if (namespaceURI != null) {
+                    String lookupName = getLookupName(qname, namespaceURI);
+                    symbols.put(lookupName, info);
+                } else {
+                    symbols.put(qname, info);
+                }
 
-            names.put(new Short(id), info);
+                names.put(new Short(id), info);
+            }
         }
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.