vgritsenko 2004/08/27 08:55:29
Modified: java/src/org/apache/xindice/xml SymbolTableSymbols.java java/src/org/apache/xindice/xml/dom ContainerNodeImpl.java . status.xml java/src/org/apache/xindice/util SymbolDeserializer.java SymbolSerializer.java Log: <action dev="VG" type="update"> Make SymbolTableSymbols singleton. </action> <action dev="VG" type="fix"> Fixed bug in SymbolSerializer. SymbolDeserializer expects DocumentImpl, but SymbolSerializer was sending document element. </action> Revision Changes Path 1.9 +18 -15 xml-xindice/java/src/org/apache/xindice/xml/SymbolTableSymbols.java Index: SymbolTableSymbols.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/xml/SymbolTableSymbols.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SymbolTableSymbols.java 8 Feb 2004 03:50:13 -0000 1.8 +++ SymbolTableSymbols.java 27 Aug 2004 15:55:29 -0000 1.9 @@ -36,24 +36,24 @@ private static String SYMBOLS_DEFINITION = "<symbols>" - + " <symbol name=\"" + SYMBOLS + "\" id=\"0\" />" - + " <symbol name=\"" + SYMBOL + "\" id=\"1\" />" - + " <symbol name=\"" + NAME + "\" id=\"2\" />" - + " <symbol name=\"" + ID + "\" id=\"3\" />" - + " <symbol name=\"" + NSURI + "\" id=\"4\" />" + + " <symbol name=\"" + SYMBOLS + "\" id=\"0\" />" + + " <symbol name=\"" + SYMBOL + "\" id=\"1\" />" + + " <symbol name=\"" + NAME + "\" id=\"2\" />" + + " <symbol name=\"" + ID + "\" id=\"3\" />" + + " <symbol name=\"" + NSURI + "\" id=\"4\" />" + "</symbols>"; - private Element symbolsElem; + private static SymbolTableSymbols SYMBOLS_INSTANCE; + private SymbolTableSymbols() { try { - symbolsElem = DOMParser.toDocument(SYMBOLS_DEFINITION).getDocumentElement(); + Element symbols = DOMParser.toDocument(SYMBOLS_DEFINITION).getDocumentElement(); + streamFromXML(symbols); } catch (Exception e) { - if (log.isWarnEnabled()) { - log.warn("ignored exception", e); - } + // Should not happen + log.error("Failed to create SymbolTableSymbols", e); } - streamFromXML(symbolsElem); } public static String getDefinition() { @@ -61,7 +61,10 @@ } public static SymbolTableSymbols getInstance() { - return new SymbolTableSymbols(); + if (SYMBOLS_INSTANCE == null) { + SYMBOLS_INSTANCE = new SymbolTableSymbols(); + } + + return SYMBOLS_INSTANCE; } } - 1.18 +6 -5 xml-xindice/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java Index: ContainerNodeImpl.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- ContainerNodeImpl.java 20 Jul 2004 20:34:35 -0000 1.17 +++ ContainerNodeImpl.java 27 Aug 2004 15:55:29 -0000 1.18 @@ -83,7 +83,7 @@ } else { loaded = true; } - + try { if (data != null) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); @@ -155,7 +155,7 @@ case Node.NOTATION_NODE: childNodes.add(new NotationImpl(this, data, pos, len)); break; - + default: if (log.isWarnEnabled()) { log.warn("invalid node type : " + in.getNodeType()); @@ -423,8 +423,9 @@ * Returns a <code>NodeList</code> of all descendant elements with a given * tag name, in the order in which they would be encountered in a preorder * traversal of the <code>Element</code> tree. + * * @param name The name of the tag to match on. The special value "*" - * matches all tags. + * matches all tags. * @return A list of matching <code>Element</code> nodes. */ public final NodeList getElementsByTagName(final String name) { 1.46 +7 -0 xml-xindice/status.xml Index: status.xml =================================================================== RCS file: /home/cvs/xml-xindice/status.xml,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- status.xml 10 Jun 2004 14:46:47 -0000 1.45 +++ status.xml 27 Aug 2004 15:55:29 -0000 1.46 @@ -74,6 +74,13 @@ <changes> <release version="1.1b5-dev"> + <action dev="VG" type="update"> + Make SymbolTableSymbols singleton. + </action> + <action dev="VG" type="fix"> + Fixed bug in SymbolSerializer. SymbolDeserializer expects + DocumentImpl, but SymbolSerializer was sending document element. + </action> <action dev="VG" type="fix"> Fixed saving of custom meta data documents. </action> 1.9 +11 -4 xml-xindice/java/src/org/apache/xindice/util/SymbolDeserializer.java Index: SymbolDeserializer.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/util/SymbolDeserializer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SymbolDeserializer.java 8 Feb 2004 02:59:39 -0000 1.8 +++ SymbolDeserializer.java 27 Aug 2004 15:55:29 -0000 1.9 @@ -35,8 +35,15 @@ public final class SymbolDeserializer { private static final SymbolTableSymbols hcSyms = SymbolTableSymbols.getInstance(); - private SymbolTable syms = null; // The Collection's SymbolTable - private long lastMod = 0; // Last time we caught a SymbolTable modification + /** + * The collection's SymbolTable + */ + private SymbolTable syms; + + /** + * Last time we caught a SymbolTable modification + */ + private long lastMod; /** * convertToDocument converts the compressed Hashtable to 1.9 +25 -9 xml-xindice/java/src/org/apache/xindice/util/SymbolSerializer.java Index: SymbolSerializer.java =================================================================== RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/util/SymbolSerializer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SymbolSerializer.java 8 Feb 2004 02:59:39 -0000 1.8 +++ SymbolSerializer.java 27 Aug 2004 15:55:29 -0000 1.9 @@ -42,16 +42,26 @@ private static final Log log = LogFactory.getLog(SymbolSerializer.class); private static final SymbolTableSymbols hcSyms = SymbolTableSymbols.getInstance(); - private static final DocumentImpl elemFactory = new DocumentImpl(); - private SymbolTable syms = null; // The Collection's SymbolTable - private long lastMod = 0; // Last time we caught a SymbolTable modification - private byte[] symBytes = null; // Stores a byte representation of the SymbolTable + /** + * The collection's SymbolTable + */ + private SymbolTable syms; + + /** + * Last time we caught a SymbolTable modification + */ + private long lastMod; + + /** + * Stores a byte representation of the SymbolTable + */ + private byte[] symBytes; public SymbolSerializer(SymbolTable syms) { this.syms = syms; - elemFactory.setSymbols(syms); + // elemFactory.setSymbols(syms); } /** @@ -65,10 +75,16 @@ public Hashtable getSymBuffer() { long lm = syms.getLastModified(); if (lm > lastMod) { + DocumentImpl doc = new DocumentImpl(); + doc.setSymbols(syms); + synchronized (syms) { - Element elem = syms.streamToXML(elemFactory); + Element elem = syms.streamToXML(doc); + doc.appendChild(elem); + + // Element elem = syms.streamToXML(elemFactory); try { - symBytes = DOMCompressor.Compress(elem, hcSyms); + symBytes = DOMCompressor.Compress(doc, hcSyms); lastMod = lm; } catch (Exception e) { if (log.isErrorEnabled()) {