Author: vgritsenko Date: Wed Mar 14 20:47:19 2007 New Revision: 518460 URL: http://svn.apache.org/viewvc?view=rev&rev=518460 Log: cleanup, rest of the patch from bug #41808
Modified: xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/ResourceSetImpl.java xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java xml/xindice/trunk/java/src/org/apache/xindice/util/ByteArrayInput.java xml/xindice/trunk/java/src/org/apache/xindice/util/SymbolSerializer.java xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedInput.java xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedOutput.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/AttrImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/CharacterDataImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DocumentImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ElementImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/EntityReferenceImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/NodeImpl.java xml/xindice/trunk/java/src/org/apache/xindice/xml/sax/SAXEventGenerator.java xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/dom/CompressedDOMTests.java Modified: xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/ResourceSetImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/ResourceSetImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/ResourceSetImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/client/xmldb/ResourceSetImpl.java Wed Mar 14 20:47:19 2007 @@ -30,7 +30,6 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.xmldb.api.base.ErrorCodes; import org.xmldb.api.base.Resource; import org.xmldb.api.base.ResourceIterator; import org.xmldb.api.base.ResourceSet; @@ -79,39 +78,31 @@ protected void initResources(Document document) throws XMLDBException { NodeList nodes = document.getDocumentElement().getChildNodes(); - this.resources = - Collections.synchronizedList(new ArrayList(nodes.getLength())); + this.resources = Collections.synchronizedList(new ArrayList(nodes.getLength())); int i = 0; while (i < nodes.getLength()) { - try { - XMLResource resource; - Node n = nodes.item(i); - - String documentId = null; - if (n instanceof Element) { - documentId = ((Element) n).getAttributeNS( - NodeSource.SOURCE_NS, NodeSource.SOURCE_KEY); - } - - if (bytes != null) { - DocumentImpl doc = new DocumentImpl(); - doc.setSymbols(symbols); - doc.importNode(n, true); - doc.appendChild(n); - byte[] b = DOMCompressor.Compress(doc, symbols); - resource = new XMLResourceImpl(null, documentId, collection, - symbols, b); - } else { - resource = new XMLResourceImpl(null, documentId, collection, - TextWriter.toString(n)); - } - - i++; - resources.add(resource); - } catch (Exception e) { - throw new XMLDBException(ErrorCodes.UNKNOWN_ERROR, e); + Node n = nodes.item(i); + + String documentId = null; + if (n instanceof Element) { + documentId = ((Element) n).getAttributeNS(NodeSource.SOURCE_NS, NodeSource.SOURCE_KEY); + } + + XMLResource resource; + if (bytes != null) { + DocumentImpl doc = new DocumentImpl(); + doc.setSymbols(symbols); + doc.importNode(n, true); + doc.appendChild(n); + byte[] b = DOMCompressor.compress(doc, symbols); + resource = new XMLResourceImpl(null, documentId, collection, symbols, b); + } else { + resource = new XMLResourceImpl(null, documentId, collection, TextWriter.toString(n)); } + + i++; + resources.add(resource); } } @@ -214,8 +205,6 @@ i++; } - XMLResource result = new XMLResourceImpl(null, null, - collection, TextWriter.toString(doc)); - return result; + return new XMLResourceImpl(null, null, collection, TextWriter.toString(doc)); } } 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=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/core/Collection.java Wed Mar 14 20:47:19 2007 @@ -817,10 +817,10 @@ if (log.isDebugEnabled()) { log.debug(debugHeader() + "Get object: " + key); } - String className = null; Document doc = getDocument(key); if (doc != null) { + String className = null; NodeList childNodes = doc.getChildNodes(); int size = childNodes.getLength(); for (int i = 0; i < size; i++) { @@ -1057,7 +1057,7 @@ // Have to compress to update collection's SymbolTable, // which is used even for uncompressed collections - DOMCompressor.Compress(doc, symbols); + DOMCompressor.compress(doc, symbols); return doc; } catch (Exception e) { @@ -1128,21 +1128,16 @@ byte[] documentBytes; if (compressed) { - try { - documentBytes = DOMCompressor.Compress(document, symbols); - if (log.isTraceEnabled()) { - log.trace(localDebugHeader + "length=" + documentBytes.length); - } + documentBytes = DOMCompressor.compress(document, symbols); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "length=" + documentBytes.length); + } - // Why must it be re-created? - document = new DocumentImpl(documentBytes, symbols, new NodeSource(this, key)); - if (log.isTraceEnabled()) { - log.trace(localDebugHeader + "packedDocument: length=" + documentBytes.length + - " document=<" + TextWriter.toString(document) + ">"); - } - } catch (Exception e) { - throw new DBException(FaultCodes.COL_CANNOT_STORE, - localDebugHeader + "Error compressing Document '" + key + "'", e); + // Why must it be re-created? + document = new DocumentImpl(documentBytes, symbols, new NodeSource(this, key)); + if (log.isTraceEnabled()) { + log.trace(localDebugHeader + "packedDocument: length=" + documentBytes.length + + " document=<" + TextWriter.toString(document) + ">"); } } else { try { Modified: xml/xindice/trunk/java/src/org/apache/xindice/util/ByteArrayInput.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/util/ByteArrayInput.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/util/ByteArrayInput.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/util/ByteArrayInput.java Wed Mar 14 20:47:19 2007 @@ -35,8 +35,8 @@ super(buf); } - public ByteArrayInput(byte[] buf, int pos, int count) { - super(buf, pos, count); + public ByteArrayInput(byte[] buf, int pos, int length) { + super(buf, pos, length); } /** @@ -88,4 +88,3 @@ return new ByteArrayInput(buf, pos, count); } } - Modified: xml/xindice/trunk/java/src/org/apache/xindice/util/SymbolSerializer.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/util/SymbolSerializer.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/util/SymbolSerializer.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/util/SymbolSerializer.java Wed Mar 14 20:47:19 2007 @@ -47,7 +47,7 @@ /** * The collection's SymbolTable */ - private SymbolTable syms; + private final SymbolTable syms; /** * Last time we caught a SymbolTable modification @@ -82,21 +82,14 @@ Element elem = syms.streamToXML(doc); doc.appendChild(elem); - try { - symBytes = DOMCompressor.Compress(doc, hcSyms); - lastMod = lm; - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Problem compressing Symbol Table! Very Bad!", e); - } - } + symBytes = DOMCompressor.compress(doc, hcSyms); + lastMod = lm; } } Hashtable result = new Hashtable(); //result.put("timestamp", new Long(lm)); result.put("symbols", symBytes); - result.put("document", new byte[0]); return result; } @@ -141,6 +134,6 @@ * @return Last modified stamp */ public long getLastModified() { - return lastMod; + return syms.getLastModified(); } } Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedInput.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedInput.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedInput.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedInput.java Wed Mar 14 20:47:19 2007 @@ -83,7 +83,7 @@ } else { return Node.ENTITY_REFERENCE_NODE; } - + case Signatures.Elem: return Node.ELEMENT_NODE; @@ -119,6 +119,7 @@ } } + return Signatures.Unknown; } @@ -168,7 +169,7 @@ case Signatures.NoContent: // Do Nothing break; - + default: if (log.isWarnEnabled()) { log.warn("invalid size : " + sizeType); @@ -204,7 +205,7 @@ case Signatures.NoContent: // Do Nothing break; - + default: if (log.isWarnEnabled()) { log.warn("invalid signature type : " + countType); Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedOutput.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedOutput.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedOutput.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/XMLCompressedOutput.java Wed Mar 14 20:47:19 2007 @@ -30,7 +30,9 @@ * @version $Revision$, $Date$ */ public class XMLCompressedOutput extends DataOutputStream { - protected SymbolTable st = null; + + protected SymbolTable st; + public XMLCompressedOutput(OutputStream os, SymbolTable st) { super(os); @@ -111,5 +113,3 @@ } } } - - Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/AttrImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/AttrImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/AttrImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/AttrImpl.java Wed Mar 14 20:47:19 2007 @@ -51,7 +51,7 @@ this.nsURI = nsURI; this.symbolID = symbolID; this.nodeValue = nodeValue; - childNodes.clear(); + TextImpl text = new TextImpl(this, false); text.nodeValue = nodeValue; childNodes.add(text); @@ -88,6 +88,7 @@ public void setNodeValue(String nodeValue) throws DOMException { checkLoaded(); checkReadOnly(); + childNodes.clear(); TextImpl text = new TextImpl(this, false); text.nodeValue = nodeValue; @@ -101,13 +102,7 @@ protected boolean isNodeTypeValid(short type) { return type == Node.TEXT_NODE || - type == Node.ENTITY_REFERENCE_NODE; - } - - protected void checkLoaded() { - if (!loaded) { - loaded = true; - } + type == Node.ENTITY_REFERENCE_NODE; } /** Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/CharacterDataImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/CharacterDataImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/CharacterDataImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/CharacterDataImpl.java Wed Mar 14 20:47:19 2007 @@ -28,6 +28,8 @@ import org.w3c.dom.CharacterData; import org.w3c.dom.DOMException; +import java.io.IOException; + /** * CharacterDataImpl * @@ -60,10 +62,9 @@ protected final void checkLoaded() { if (loaded) { return; - } else { - loaded = true; } + loaded = true; try { if (data != null) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); @@ -83,7 +84,7 @@ xci.read(buf); nodeValue = new String(buf, "UTF-8"); } - } catch (Exception e) { + } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("ignored exception", e); } Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ContainerNodeImpl.java Wed Mar 14 20:47:19 2007 @@ -81,10 +81,9 @@ protected void checkLoaded() { if (loaded) { return; - } else { - loaded = true; } + loaded = true; try { if (data != null) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); @@ -105,19 +104,19 @@ // Have to skip the attributes in.readSignature(); in.readContentSize(); - in.readShort(); // Element Symbol + in.readShort(); // Element Symbol int attrCount = in.readAttributeCount(); for (int i = 0; i < attrCount; i++) { - in.readShort(); // Attribute Symbol - in.skip(in.readShort()); // Attribute Length + in.readShort(); // Attribute Symbol + in.skip(in.readShort()); // Attribute Length } } else { in.readInt(); } - while (bis.available() > 0) { + while (in.available() > 0) { int pos = bis.getPos(); - in.readSignature(); // Skip signature + in.readSignature(); // Skip signature int len = in.readContentSize(); if (len == 0) { len = 1; Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DocumentImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DocumentImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DocumentImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/DocumentImpl.java Wed Mar 14 20:47:19 2007 @@ -21,7 +21,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.xindice.util.XindiceException; import org.apache.xindice.xml.NodeSource; import org.apache.xindice.xml.SymbolTable; import org.apache.xindice.xml.dom.traversal.TreeWalkerImpl; @@ -48,6 +47,7 @@ import org.w3c.dom.traversal.NodeIterator; import org.w3c.dom.traversal.TreeWalker; +import java.io.IOException; import java.util.HashSet; import java.util.Iterator; import java.util.Set; @@ -72,26 +72,42 @@ private boolean readOnly; private DOMConfiguration domConfig = new DOMConfigurationImpl(); - + /** + * Create empty dirty document. + */ public DocumentImpl() { super(null, true); } - public DocumentImpl(byte[] data, int pos, int len) { - super(null, data, pos, len); - } - - public DocumentImpl(byte[] data) { - this(data, 0, data.length); + /** + * Create document from the compressed data. + * + * @param data compressed document data + * @param symbols symbol table used to compress a document + */ + public DocumentImpl(byte[] data, SymbolTable symbols) { + super(null, data, 0, data.length); + this.symbols = symbols; } + /** + * Create document from the compressed data. + * + * @param data compressed document data + * @param symbols symbol table used to compress a document + * @param source identifies document origin + */ public DocumentImpl(byte[] data, SymbolTable symbols, NodeSource source) { - this(data); - this.symbols = symbols; + this(data, symbols); this.source = source; } - public DocumentImpl(Document doc) throws XindiceException { + /** + * Create a compressed document out of another document. + * + * @param doc document to copy + */ + public DocumentImpl(Document doc) { super(null, true); boolean compress = true; @@ -111,7 +127,7 @@ if (symbols == null) { symbols = new SymbolTable(); } - data = DOMCompressor.Compress(doc, symbols); + data = DOMCompressor.compress(doc, symbols); pos = 0; len = data.length; } @@ -129,15 +145,14 @@ protected void checkLoaded() { if (loaded) { return; - } else { - loaded = true; } + loaded = true; try { if (data != null) { loadChildren(symbols); } - } catch (Exception e) { + } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("ignored exception", e); } @@ -361,10 +376,10 @@ } public Node importNode(Node importedNode, boolean deep) { - return importNode(importedNode, deep, true, true); - } + return importNode(importedNode, deep, true, true); + } - private Node importNode(Node importedNode, boolean deep, boolean importNamespaces, boolean invokeHandler) { + private Node importNode(Node importedNode, boolean deep, boolean importNamespaces, boolean invokeHandler) { try { // If we're a Xindice Compressed DOM Node, and share the same symbol table, // then we're golden @@ -375,9 +390,9 @@ NodeImpl clone = (NodeImpl) impl.cloneNode(deep, false); clone.setParentNode(this); - if (importNamespaces) { - importNamespaces(importedNode, clone); - } + if (importNamespaces) { + importNamespaces(importedNode, clone); + } if (invokeHandler) { invokeHandlers(UserDataHandler.NODE_IMPORTED, importedNode, clone); } @@ -413,9 +428,9 @@ elem.setAttributeNode(ai); } result = elem; - if (importNamespaces) { - importNamespaces(importedNode, result); - } + if (importNamespaces) { + importNamespaces(importedNode, result); + } break; case Node.ENTITY_REFERENCE_NODE: Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ElementImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ElementImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ElementImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/ElementImpl.java Wed Mar 14 20:47:19 2007 @@ -26,11 +26,12 @@ import org.apache.xindice.xml.NodeSource; import org.apache.xindice.xml.SymbolTable; import org.apache.xindice.xml.XMLCompressedInput; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NamedNodeMap; + import org.w3c.dom.Attr; import org.w3c.dom.DOMException; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; import org.w3c.dom.TypeInfo; import org.w3c.dom.UserDataHandler; @@ -90,10 +91,9 @@ protected void checkLoaded() { if (loaded) { return; - } else { - loaded = true; } + loaded = true; try { if (data != null) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); @@ -112,7 +112,7 @@ loadChildren(st); } - } catch (Exception e) { + } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("ignored exception", e); } Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/EntityReferenceImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/EntityReferenceImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/EntityReferenceImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/EntityReferenceImpl.java Wed Mar 14 20:47:19 2007 @@ -29,6 +29,8 @@ import org.w3c.dom.EntityReference; import org.w3c.dom.Node; +import java.io.IOException; + /** * EntityReferenceImpl * @@ -60,10 +62,9 @@ protected void checkLoaded() { if (loaded) { return; - } else { - loaded = true; } + loaded = true; try { if (data != null) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); @@ -116,7 +117,7 @@ } } } - } catch (Exception e) { + } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("ignored exception", e); } Modified: xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/NodeImpl.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/NodeImpl.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/NodeImpl.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/xml/dom/NodeImpl.java Wed Mar 14 20:47:19 2007 @@ -37,9 +37,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.Set; import java.util.Iterator; import java.util.Map; +import java.util.Set; /** * NodeImpl implements the foundation of the Xindice compressed DOM. @@ -150,19 +150,26 @@ protected HashMap handlers; protected Object key; - + /** + * Create empty node + */ public NodeImpl() { } - public NodeImpl(byte[] data, int pos, int len) { + /** + * Create node from compressed data + * + * @param parentNode the parent node + * @param data compressed document data byte array + * @param pos offset in the data byte array + * @param len length of node's data + */ + public NodeImpl(NodeImpl parentNode, byte[] data, int pos, int len) { + this.parentNode = parentNode; this.data = data; this.pos = pos; this.len = len; - } - public NodeImpl(NodeImpl parentNode, byte[] data, int pos, int len) { - this(data, pos, len); - this.parentNode = parentNode; if (parentNode == null) { ownerDocument = null; } else if (parentNode.getNodeType() == DOCUMENT_TYPE_NODE) { @@ -174,6 +181,7 @@ public NodeImpl(NodeImpl parentNode, boolean dirty) { this.parentNode = parentNode; + if (parentNode == null) { ownerDocument = null; } else if (parentNode.getNodeType() == DOCUMENT_TYPE_NODE) { @@ -181,6 +189,7 @@ } else { this.ownerDocument = parentNode.getOwnerDocument(); } + if (dirty) { setDirty(); } @@ -534,6 +543,7 @@ protected final synchronized Node cloneNode(boolean deep, boolean invokeHandler) { DocumentImpl doc = (DocumentImpl) getOwnerDocument(); + // compressed documents if (deep && this.data != null) { byte[] data = this.data; @@ -541,15 +551,9 @@ int len = this.len; if (dirty) { - try { - data = DOMCompressor.Compress(this, doc.getSymbols()); - pos = 0; - len = data.length; - } catch (Exception e) { - if (log.isWarnEnabled()) { - log.warn("ignored exception", e); - } - } + data = DOMCompressor.compress(this, doc.getSymbols()); + pos = 0; + len = data.length; } NodeImpl newNode = null; 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=518460&r1=518459&r2=518460 ============================================================================== --- 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 Mar 14 20:47:19 2007 @@ -115,17 +115,10 @@ } public SAXEventGenerator(SymbolTable symbols, Document doc) { - try { - this.symbols = symbols != null ? symbols : new SymbolTable(); - data = DOMCompressor.Compress(doc, this.symbols); - pos = 0; - len = data.length; - } catch (Exception e) { - // This shouldn't happen - if (log.isErrorEnabled()) { - log.error("No message", e); - } - } + this.symbols = symbols != null ? symbols : new SymbolTable(); + data = DOMCompressor.compress(doc, this.symbols); + pos = 0; + len = data.length; } /** @@ -340,7 +333,7 @@ } else { tin.readInt(); } - + byte[] buf = new byte[tbis.available()]; tin.read(buf); @@ -362,7 +355,7 @@ case Node.COMMENT_NODE: // TODO: This break; - + default: if (log.isWarnEnabled()) { log.warn("invalid type : " + type); @@ -378,7 +371,7 @@ case Node.NOTATION_NODE: break; - + default: if (log.isWarnEnabled()) { log.warn("invalid node type : " + type); Modified: xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java (original) +++ xml/xindice/trunk/java/tests/src/org/apache/xindice/core/CollectionTest.java Wed Mar 14 20:47:19 2007 @@ -23,7 +23,10 @@ import org.apache.xindice.core.query.XPathQueryResolver; import org.apache.xindice.util.Configuration; import org.apache.xindice.xml.TextWriter; +import org.apache.xindice.xml.SymbolTable; import org.apache.xindice.xml.dom.DOMParser; +import org.apache.xindice.xml.dom.DOMCompressor; +import org.apache.xindice.xml.dom.DocumentImpl; import junit.framework.TestCase; import org.w3c.dom.Document; @@ -129,6 +132,23 @@ } assertEquals(1, resultCount); + } + + public void testCompressedDocument() throws Exception { + // Compress the document with own symbol table + Document document = DOMParser.toDocument(XML); + SymbolTable symbols = new SymbolTable(); + byte[] data = DOMCompressor.compress(document, symbols); + Document compressedDoc = new DocumentImpl(data, symbols, null); + + // Store it in the collection + collection.insertDocument("document", compressedDoc); + Document res = collection.getDocument("document"); + + // Must match + String expected = TextWriter.toString(document); + String actual = TextWriter.toString(res); + assertEquals("Documents do not match", expected, actual); } // FIXME Define semantics of document cache, and write tests for it Modified: xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/dom/CompressedDOMTests.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/dom/CompressedDOMTests.java?view=diff&rev=518460&r1=518459&r2=518460 ============================================================================== --- xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/dom/CompressedDOMTests.java (original) +++ xml/xindice/trunk/java/tests/src/org/apache/xindice/xml/dom/CompressedDOMTests.java Wed Mar 14 20:47:19 2007 @@ -37,7 +37,7 @@ public Document getDocument(String xml) throws Exception { SymbolTable symbols = new SymbolTable(); Document doc = DOMParser.toDocument(xml); - return new DocumentImpl(DOMCompressor.Compress(doc, symbols), symbols, null); + return new DocumentImpl(DOMCompressor.compress(doc, symbols), symbols, null); } }