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