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);
+ }
}
}