svn commit: r518460 - in /xml/xindice/trunk/java: src/org/apache/xindice/client/xmldb/ src/org/apache/xindice/core/ src/org/apache/xindice/util/ src/org/apache/xindice/xml/ src/org/apache/xindice/xml/dom/ src/org/apache/xindice/xml/sax/ tests/src/org/a...

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
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);
         }
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.