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


Reply via email to