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.