Author: vgritsenko Date: Wed Aug 15 18:21:52 2007 New Revision: 566464 URL: http://svn.apache.org/viewvc?view=rev&rev=566464 Log: finish symbol table refactoring - remove last static methods
Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/DocumentHandler.java xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexPattern.java xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/SymbolTableTest.java 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=566464&r1=566463&r2=566464 ============================================================================== --- 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 Wed Aug 15 18:21:52 2007 @@ -176,8 +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.getNormalizedQName(localName, namespaceURI); - info.symbolID = symbols.getSymbol(elemNSID, namespaceURI, true); + info.symbolID = symbols.getNormalizedSymbol(localName, namespaceURI, true); } int size = atts.getLength(); @@ -185,10 +184,9 @@ String nsURI = atts.getURI(i); short id; if (nsURI != null && nsURI.length() > 0) { - String attrNSID = SymbolTable.getNormalizedQName(atts.getLocalName(i), nsURI); - id = symbols.getSymbol(attrNSID, nsURI, true); + id = symbols.getNormalizedSymbol(atts.getLocalName(i), nsURI, true); } else { - id = symbols.getSymbol(atts.getQName(i)); + id = symbols.getSymbol(atts.getQName(i), true); } processEntry(new IndexPattern(symbols, info.symbolID, id), atts.getValue(i), info.pos, info.len); Modified: xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexPattern.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexPattern.java?view=diff&rev=566464&r1=566463&r2=566464 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexPattern.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/indexer/IndexPattern.java Wed Aug 15 18:21:52 2007 @@ -60,7 +60,7 @@ if (elemName.equals("*")) { elemID = PATTERN_WILDCARD; } else { - elemID = SymbolTable.getNormalizedSymbol(symbols, elemName, nsMap, true); + elemID = symbols.getNormalizedSymbol(elemName, nsMap, true); } if (st.hasMoreTokens()) { @@ -69,7 +69,7 @@ attrID = PATTERN_WILDCARD; } else { attrID = elemID == PATTERN_WILDCARD ? PATTERN_NAME - : SymbolTable.getNormalizedSymbol(symbols, attrName, nsMap, true); + : symbols.getNormalizedSymbol(attrName, nsMap, 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=566464&r1=566463&r2=566464 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/SymbolTable.java Wed Aug 15 18:21:52 2007 @@ -81,43 +81,6 @@ } // - // Static Methods - // - - public static String getNormalizedQName(String localName, String namespaceURI) { - return "ns" + namespaceURI.hashCode() + ':' + localName; - } - - 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(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); - } - } - - return symbols.getSymbol(lookup, create); - } - - private static String getLookupName(String qname, String namespaceURI) { - return '[' + namespaceURI + ']' + qname; - } - - // // Instance Methods // @@ -214,6 +177,68 @@ } // + // Lookup normalized symbol + // + + public final short getNormalizedSymbol(String localName, String namespaceURI) { + return getNormalizedSymbol(localName, namespaceURI, false); + } + + /** + * Lookup normalized symbol by element (or attribute) local name and namespace URI. + * + * @param localName element (attribute) local name + * @param namespaceURI element (attribute) namespace URI + * @param create when true, creates symbol if it is missing + * @return symbol id or -1 + */ + public final short getNormalizedSymbol(String localName, String namespaceURI, boolean create) { + String normalizedQName = SymbolTable.getNormalizedQName(localName, namespaceURI); + return getSymbol(normalizedQName, namespaceURI, create); + } + + /** + * Lookup normalized symbol by lookup string and (optional) namespace map. Lookup + * string can take one of the following forms: + * <ul> + * <li> [<namespaceURI>]<nsPrefix>:<localName>, where nsPrefix can be empty + * <li> <nsPrefix>:<localName>, any regular qName + * </ul> + * + * Namespace map is used to determine namespaceURI for passed in lookup string and + * normalize namespace prefix. + * + * @param lookup lookup string + * @param nsMap namespace map + * @param create when true, creates symbol if it is missing + * @return symbol id or -1 + */ + public final short getNormalizedSymbol(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 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 getSymbol(getNormalizedQName(name, nsURI), nsURI, create); + } + } + + return getSymbol(lookup, create); + } + + // // XMLSerializable // @@ -269,5 +294,17 @@ names.put(new Short(id), info); } + } + + // + // Implementation methods + // + + private static String getNormalizedQName(String localName, String namespaceURI) { + return "ns" + namespaceURI.hashCode() + ':' + localName; + } + + private String getLookupName(String qname, String namespaceURI) { + return '[' + namespaceURI + ']' + qname; } } Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java?view=diff&rev=566464&r1=566463&r2=566464 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java Wed Aug 15 18:21:52 2007 @@ -323,7 +323,6 @@ case Node.CDATA_SECTION_NODE: case Node.COMMENT_NODE: { - ByteArrayInput tbis = new ByteArrayInput(data, pos, len); XMLCompressedInput tin = new XMLCompressedInput(tbis, symbols); @@ -383,13 +382,11 @@ } if (element && !interrupt) { - // First, close element ... content.endElement(nsURI != null ? nsURI : "", localName, elemName); // ... and then any mapped NS prefixes for (int i = 0; i < nsMapCount; i++) { - content.endPrefixMapping(mappedPrefixes[i]); } } @@ -409,17 +406,6 @@ } return result; } - - /*public boolean start() { - try { - return processDocument(); - } - catch ( Exception e ) { - org.apache.xindice.Debug.printStackTrace(e); - throw(e); - return false; - } - }*/ public void stop() { interrupt = true; Modified: xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/SymbolTableTest.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/SymbolTableTest.java?view=diff&rev=566464&r1=566463&r2=566464 ============================================================================== --- xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/SymbolTableTest.java (original) +++ xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/SymbolTableTest.java Wed Aug 15 18:21:52 2007 @@ -124,21 +124,21 @@ } public void testGetNormalizedSymbol() { - assertEquals(1, SymbolTable.getNormalizedSymbol(symbols, "simple", null, false)); + assertEquals(1, symbols.getNormalizedSymbol("simple", (NamespaceMap) null, false)); - assertEquals(-1, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]spaced", null, false)); - assertEquals(-1, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]a:spaced", null, false)); - assertEquals(-1, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]b:spaced", null, false)); + assertEquals(-1, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]spaced", (NamespaceMap) null, false)); + assertEquals(-1, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]a:spaced", (NamespaceMap) null, false)); + assertEquals(-1, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]b:spaced", (NamespaceMap) null, false)); - short s = SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]spaced", null, true); + short s = symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]spaced", (NamespaceMap) null, true); - assertEquals(s, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]spaced", null, false)); - assertEquals(s, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]a:spaced", null, false)); - assertEquals(s, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]b:spaced", null, false)); - assertEquals(s, SymbolTable.getNormalizedSymbol(symbols, "[http://www.w3.org/1999/xhtml]x:spaced", null, false)); + assertEquals(s, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]spaced", (NamespaceMap) null, false)); + assertEquals(s, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]a:spaced", (NamespaceMap) null, false)); + assertEquals(s, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]b:spaced", (NamespaceMap) null, false)); + assertEquals(s, symbols.getNormalizedSymbol("[http://www.w3.org/1999/xhtml]x:spaced", (NamespaceMap) null, false)); NamespaceMap m = new NamespaceMap(); m.setNamespace("z", "http://www.w3.org/1999/xhtml"); - assertEquals(s, SymbolTable.getNormalizedSymbol(symbols, "z:spaced", m, false)); + assertEquals(s, symbols.getNormalizedSymbol("z:spaced", m, false)); } }