Author: veithen
Date: Mon Dec 22 16:12:33 2008
New Revision: 728827

URL: http://svn.apache.org/viewvc?rev=728827&view=rev
Log:
DOOM: Implemented the serialization methods in DocumentImpl.

Added:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMDocumentImplUtil.java
Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/DocumentImplTest.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java

Added: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMDocumentImplUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMDocumentImplUtil.java?rev=728827&view=auto
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMDocumentImplUtil.java
 (added)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMDocumentImplUtil.java
 Mon Dec 22 16:12:33 2008
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axiom.om.impl;
+
+import java.util.Iterator;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axiom.om.OMDocument;
+
+/**
+ * Utility class with default implementations for some of the methods defined 
by the
+ * {...@link OMDocument} interface.
+ */
+public class OMDocumentImplUtil {
+    private OMDocumentImplUtil() {}
+    
+    public static void internalSerialize(OMDocument document, XMLStreamWriter 
writer2,
+            boolean cache, boolean includeXMLDeclaration) throws 
XMLStreamException {
+        
+        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter) writer2;
+        if (includeXMLDeclaration) {
+            //Check whether the OMOutput char encoding and OMDocument char
+            //encoding matches, if not use char encoding of OMOutput
+            String outputCharEncoding = writer.getCharSetEncoding();
+            if (outputCharEncoding == null || "".equals(outputCharEncoding)) {
+                
writer.getXmlStreamWriter().writeStartDocument(document.getCharsetEncoding(),
+                                                               
document.getXMLVersion());
+            } else {
+                
writer.getXmlStreamWriter().writeStartDocument(outputCharEncoding,
+                                                               
document.getXMLVersion());
+            }
+        }
+
+        Iterator children = document.getChildren();
+
+        if (cache) {
+            while (children.hasNext()) {
+                OMNodeEx omNode = (OMNodeEx) children.next();
+                omNode.internalSerialize(writer);
+            }
+        } else {
+            while (children.hasNext()) {
+                OMNodeEx omNode = (OMNodeEx) children.next();
+                omNode.internalSerializeAndConsume(writer);
+            }
+        }
+    }
+}

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java?rev=728827&r1=728826&r2=728827&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
 Mon Dec 22 16:12:33 2008
@@ -28,6 +28,8 @@
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
+import org.apache.axiom.om.impl.OMDocumentImplUtil;
 import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
 import org.w3c.dom.Attr;
 import org.w3c.dom.CDATASection;
@@ -101,7 +103,7 @@
     }
 
     public void internalSerialize(XMLStreamWriter writer) throws 
XMLStreamException {
-        // TODO Auto-generated method stub
+        internalSerialize(writer, true, !((MTOMXMLStreamWriter) 
writer).isIgnoreXMLDeclaration());
     }
 
     // /
@@ -379,21 +381,9 @@
 
     }
 
-    public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException 
{
-        // TODO
-        throw new UnsupportedOperationException("TODO");
-    }
-
     public void internalSerializeAndConsume(XMLStreamWriter writer)
             throws XMLStreamException {
-        // TODO
-        throw new UnsupportedOperationException("TODO");
-    }
-
-    public void serializeAndConsume(XMLStreamWriter xmlWriter)
-            throws XMLStreamException {
-        // TODO
-        throw new UnsupportedOperationException("TODO");
+        internalSerialize(writer, false, !((MTOMXMLStreamWriter) 
writer).isIgnoreXMLDeclaration());
     }
 
     // /
@@ -425,14 +415,15 @@
 
     public void serializeAndConsume(OutputStream output, OMOutputFormat format)
             throws XMLStreamException {
-        // TODO
-        throw new UnsupportedOperationException("TODO");
+        MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
+        internalSerializeAndConsume(writer);
+        writer.flush();
     }
 
-    public void serialize(OutputStream output, OMOutputFormat format)
-            throws XMLStreamException {
-        // TODO
-        throw new UnsupportedOperationException("TODO");
+    public void serialize(OutputStream output, OMOutputFormat format) throws 
XMLStreamException {
+        MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
+        internalSerialize(writer);
+        writer.flush();
     }
 
     public void setXMLVersion(String version) {
@@ -581,4 +572,8 @@
         setXMLVersion(version);
     }
 
+    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
+            boolean includeXMLDeclaration) throws XMLStreamException {
+        OMDocumentImplUtil.internalSerialize(this, writer, cache, 
includeXMLDeclaration);
+    }
 }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/DocumentImplTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/DocumentImplTest.java?rev=728827&r1=728826&r2=728827&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/DocumentImplTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/DocumentImplTest.java
 Mon Dec 22 16:12:33 2008
@@ -36,10 +36,6 @@
         super(new OMDOMImplementation());
     }
 
-    public void testSerializeAndConsume() throws XMLStreamException {
-        // TODO: temporarily skip this; doesn't work yet
-    }
-
     public void testCreateElement() throws Exception {
         DOMTestUtil.execute(new DOMTestUtil.Test() {
             public void execute(DocumentBuilderFactory dbf) throws Exception {

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=728827&r1=728826&r2=728827&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
 Mon Dec 22 16:12:33 2008
@@ -28,6 +28,7 @@
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.OMContainerEx;
+import org.apache.axiom.om.impl.OMDocumentImplUtil;
 import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
 import org.apache.axiom.om.impl.traverse.OMChildrenLocalNameIterator;
@@ -402,35 +403,9 @@
 
     }
 
-    protected void internalSerialize(XMLStreamWriter writer2, boolean cache,
+    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
                                      boolean includeXMLDeclaration) throws 
XMLStreamException {
-        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter) writer2;
-        if (includeXMLDeclaration) {
-            //Check whether the OMOutput char encoding and OMDocument char
-            //encoding matches, if not use char encoding of OMOutput
-            String outputCharEncoding = writer.getCharSetEncoding();
-            if (outputCharEncoding == null || "".equals(outputCharEncoding)) {
-                writer.getXmlStreamWriter().writeStartDocument(charSetEncoding,
-                                                               xmlVersion);
-            } else {
-                
writer.getXmlStreamWriter().writeStartDocument(outputCharEncoding,
-                                                               xmlVersion);
-            }
-        }
-
-        Iterator children = this.getChildren();
-
-        if (cache) {
-            while (children.hasNext()) {
-                OMNodeEx omNode = (OMNodeEx) children.next();
-                omNode.internalSerialize(writer);
-            }
-        } else {
-            while (children.hasNext()) {
-                OMNodeEx omNode = (OMNodeEx) children.next();
-                omNode.internalSerializeAndConsume(writer);
-            }
-        }
+        OMDocumentImplUtil.internalSerialize(this, writer, cache, 
includeXMLDeclaration);
     }
 
     public OMFactory getOMFactory() {


Reply via email to