Author: vgritsenko
Date: Thu Aug 9 17:25:00 2007
New Revision: 564441
URL: http://svn.apache.org/viewvc?view=rev&rev=564441
Log:
cleaning up symbol table code.
renaming incorrectly named getNormalizedLocalName method.
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java
xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java
xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java
xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java?view=diff&rev=564441&r1=564440&r2=564441
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java Thu Aug 9 17:25:00 2007
@@ -942,7 +942,7 @@
*
* @return The System Collection
*/
- public SystemCollection getSystemCollection() throws DBException {
+ public SystemCollection getSystemCollection() {
return getDatabase().getSystemCollection();
}
@@ -1540,7 +1540,7 @@
}
} catch (Exception e) {
if (log.isWarnEnabled()) {
- log.warn(localDebugHeader + "Error building symbol table from system collection", e);
+ log.warn(localDebugHeader + "Error loading symbol table from system collection", e);
}
}
}
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java?view=diff&rev=564441&r1=564440&r2=564441
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/SystemCollection.java Thu Aug 9 17:25:00 2007
@@ -123,12 +123,9 @@
* @throws DBException if unable to save symbols
*/
public void saveSymbols(Collection collection, SymbolTable symbols) throws DBException {
- String name = getSymbolTableName(collection);
-
- Collection symCol = getCollection(SYMBOLS);
-
if (symbols != null) {
- symCol.setObject(name, symbols);
+ String name = getSymbolTableName(collection);
+ getCollection(SYMBOLS).setObject(name, symbols);
symbols.setDirty(false);
}
}
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java?view=diff&rev=564441&r1=564440&r2=564441
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java Thu Aug 9 17:25:00 2007
@@ -176,7 +176,7 @@
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
// Modify the stack info to normalize the symbolID
if (namespaceURI != null && namespaceURI.length() > 0) {
- String elemNSID = SymbolTable.getNormalizedLocalName(localName, namespaceURI);
+ String elemNSID = SymbolTable.getNormalizedQName(localName, namespaceURI);
info.symbolID = symbols.getSymbol(elemNSID, namespaceURI, true);
}
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?view=diff&rev=564441&r1=564440&r2=564441
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java Thu Aug 9 17:25:00 2007
@@ -50,67 +50,85 @@
private short maxSymbol = -1;
- public SymbolTable() {
+ public static final class SymbolInfo implements Serializable {
+ private final String namespaceURI;
+ private final String qname;
+ private final short symbol;
+
+ private SymbolInfo(String qname, String namespaceURI, short symbol) {
+ this.namespaceURI = namespaceURI;
+ this.qname = qname;
+ this.symbol = symbol;
+ }
+
+ private SymbolInfo(String qname, short symbol) {
+ this.namespaceURI = null;
+ this.qname = qname;
+ this.symbol = symbol;
+ }
+
+ public String getNamespaceURI() {
+ return namespaceURI;
+ }
+
+ public String getQName() {
+ return qname;
+ }
+
+ public short getSymbolID() {
+ return symbol;
+ }
}
- public SymbolTable(Element elem) {
- streamFromXML(elem);
+ //
+ // Static Methods
+ //
+
+ public static String getNormalizedQName(String localName, String namespaceURI) {
+ return "ns" + namespaceURI.hashCode() + ':' + localName;
}
- public static String getLookupName(String qname, String namespaceURI) {
- StringBuffer sb = new StringBuffer(128);
- sb.append('[');
- sb.append(namespaceURI);
- sb.append(']');
- sb.append(qname);
- return sb.toString();
+ private static String getLookupName(String qname, String namespaceURI) {
+ return '[' + namespaceURI + ']' + qname;
}
public static short getNormalizedSymbol(SymbolTable symbols, String lookup, NamespaceMap nsMap, boolean create) {
+ // Parse [<namespaceURI>]<nsPrefix>:<localName> with optional nsPrefix
if (lookup.startsWith("[")) {
int idx = lookup.indexOf(']');
String nsURI = lookup.substring(1, idx);
int cidx = lookup.indexOf(idx + 1, ':');
String name = cidx != -1 ? lookup.substring(cidx + 1) : lookup.substring(idx + 1);
- return symbols.getSymbol(getNormalizedLocalName(name, nsURI), nsURI, create);
- } else {
- int idx = lookup.indexOf(':');
- if (idx != -1) {
- String pfx = lookup.substring(0, idx);
- String nsURI = (String) nsMap.get(pfx);
- if (nsURI != null) {
- String name = lookup.substring(idx + 1);
- return symbols.getSymbol(getNormalizedLocalName(name, nsURI), nsURI, create);
- } else {
- return symbols.getSymbol(lookup);
- }
- } else {
- return symbols.getSymbol(lookup, create);
+
+ return symbols.getSymbol(getNormalizedQName(name, nsURI), nsURI, create);
+ }
+
+ // Parse <nsPrefix>:<localName> with passed in nsMap
+ int idx = lookup.indexOf(':');
+ if (idx != -1) {
+ String pfx = lookup.substring(0, idx);
+ String nsURI = (String) nsMap.get(pfx);
+ if (nsURI != null) {
+ String name = lookup.substring(idx + 1);
+ return symbols.getSymbol(getNormalizedQName(name, nsURI), nsURI, create);
}
+
+ // Attempt to lookup <nsPrefix>:<localName> when nsMap has no namespace URI for the prefix
+ return symbols.getSymbol(lookup, create);
}
+
+ return symbols.getSymbol(lookup, create);
}
- public static String getNormalizedLocalName(String localName, String namespaceURI) {
- StringBuffer sb = new StringBuffer(32);
- sb.append("ns");
- sb.append(namespaceURI.hashCode());
- sb.append(':');
- sb.append(localName);
- return sb.toString();
+ //
+ // Instance Methods
+ //
+
+ public SymbolTable() {
}
- public static String getNormalizedQName(String qName, String namespaceURI) {
- StringBuffer sb = new StringBuffer(32);
- sb.append("ns");
- sb.append(namespaceURI.hashCode());
- sb.append(':');
- int idx = qName.indexOf(':');
- if (idx != -1) {
- sb.append(qName.substring(idx + 1));
- } else {
- sb.append(qName);
- }
- return sb.toString();
+ public SymbolTable(Element elem) {
+ streamFromXML(elem);
}
public final boolean isDirty() {
@@ -122,15 +140,25 @@
this.lastModified = System.currentTimeMillis();
}
+ public final SymbolInfo getSymbolInfo(short symbol) {
+ return (SymbolInfo) names.get(new Short(symbol));
+ }
+
public final SymbolInfo getSymbolInfo(String qname, String namespaceURI) {
String lookupName = getLookupName(qname, namespaceURI);
return (SymbolInfo) symbols.get(lookupName);
}
+
+ public final short getSymbol(String qname) {
+ return getSymbol(qname, false);
+ }
- public final short getSymbol(String qname, String namespaceURI, boolean create) {
- String lookupName = getLookupName(qname, namespaceURI);
+ public final short getSymbol(String qname, String namespaceURI) {
+ return getSymbol(qname, namespaceURI, false);
+ }
- SymbolInfo info = (SymbolInfo) symbols.get(lookupName);
+ public final short getSymbol(String qname, boolean create) {
+ SymbolInfo info = (SymbolInfo) symbols.get(qname);
if (info != null) {
return info.symbol;
}
@@ -138,8 +166,8 @@
if (create) {
synchronized (symbols) {
short id = ++maxSymbol;
- info = new SymbolInfo(qname, namespaceURI, id);
- symbols.put(lookupName, info);
+ info = new SymbolInfo(qname, id);
+ symbols.put(qname, info);
names.put(new Short(id), info);
setDirty(true);
return id;
@@ -149,8 +177,10 @@
return -1;
}
- public final short getSymbol(String qname, boolean create) {
- SymbolInfo info = (SymbolInfo) symbols.get(qname);
+ public final short getSymbol(String qname, String namespaceURI, boolean create) {
+ String lookupName = getLookupName(qname, namespaceURI);
+
+ SymbolInfo info = (SymbolInfo) symbols.get(lookupName);
if (info != null) {
return info.symbol;
}
@@ -158,8 +188,8 @@
if (create) {
synchronized (symbols) {
short id = ++maxSymbol;
- info = new SymbolInfo(qname, id);
- symbols.put(qname, info);
+ info = new SymbolInfo(qname, namespaceURI, id);
+ symbols.put(lookupName, info);
names.put(new Short(id), info);
setDirty(true);
return id;
@@ -169,18 +199,6 @@
return -1;
}
- public final short getSymbol(String qname, String namespaceURI) {
- return getSymbol(qname, namespaceURI, false);
- }
-
- public final short getSymbol(String qname) {
- return getSymbol(qname, false);
- }
-
- public final SymbolInfo getSymbolInfo(short symbol) {
- return (SymbolInfo) names.get(new Short(symbol));
- }
-
public final String getNamespaceURI(short symbol) {
SymbolInfo info = getSymbolInfo(symbol);
return info != null ? info.namespaceURI : null;
@@ -244,35 +262,6 @@
}
names.put(id, info);
- }
- }
-
- public static final class SymbolInfo implements Serializable {
- private String namespaceURI;
- private String qname;
- private short symbol;
-
- public SymbolInfo(String qname, String namespaceURI, short symbol) {
- this.qname = qname;
- this.namespaceURI = namespaceURI;
- this.symbol = symbol;
- }
-
- public SymbolInfo(String qname, short symbol) {
- this.qname = qname;
- this.symbol = symbol;
- }
-
- public String getNamespaceURI() {
- return namespaceURI;
- }
-
- public String getQName() {
- return qname;
- }
-
- public short getSymbolID() {
- return symbol;
}
}
}
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.