Author: thilina
Date: Sun Mar  4 22:47:13 2007
New Revision: 514570

URL: http://svn.apache.org/viewvc?view=rev&rev=514570
Log:
Removing the priting of empty headers

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?view=diff&rev=514570&r1=514569&r2=514570
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
 Sun Mar  4 22:47:13 2007
@@ -49,7 +49,7 @@
     /**
      * Field builder
      */
-    protected OMXMLParserWrapper builder;
+    public OMXMLParserWrapper builder;
 
     /**
      * Field done

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java?view=diff&rev=514570&r1=514569&r2=514570
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
 Sun Mar  4 22:47:13 2007
@@ -16,19 +16,33 @@
 
 package org.apache.axiom.soap.impl.dom;
 
-import org.apache.axiom.om.*;
-import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
-import org.apache.axiom.om.impl.dom.DocumentImpl;
-import org.apache.axiom.soap.*;
-import org.apache.axiom.soap.impl.dom.factory.DOMSOAPFactory;
-
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.axiom.om.OMConstants;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
+import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
+import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPConstants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axiom.soap.impl.dom.factory.DOMSOAPFactory;
+
 public class SOAPEnvelopeImpl extends SOAPElement implements SOAPEnvelope,
         OMConstants {
-
+       
+    private static final QName HEADER_QNAME = new 
QName(SOAPConstants.HEADER_LOCAL_NAME);
 
     /**
      * @param builder
@@ -145,16 +159,59 @@
         if (!writer.isIgnoreXMLDeclaration()) {
             String charSetEncoding = writer.getCharSetEncoding();
             String xmlVersion = writer.getXmlVersion();
-            writer
-                    .getXmlStreamWriter()
-                    .writeStartDocument(
+            writer.getXmlStreamWriter().writeStartDocument(
                             charSetEncoding == null ? 
OMConstants.DEFAULT_CHAR_SET_ENCODING
                                     : charSetEncoding,
                             xmlVersion == null ? 
OMConstants.DEFAULT_XML_VERSION
                                     : xmlVersion);
         }
-        super.internalSerialize(writer, cache);
-    }
+               if (cache) {
+                       //in this case we don't care whether the elements are 
built or not
+                       //we just call the serializeAndConsume methods
+                       OMSerializerUtil.serializeStartpart(this, writer);
+                       //serialize children
+                       OMElement header = getFirstChildWithName(HEADER_QNAME);
+                       if ((header != null) && (header.getFirstOMChild() != 
null)) {
+                               ((SOAPHeaderImpl) 
header).internalSerialize(writer);
+                       }
+                       SOAPBody body = getBody();
+                       //REVIEW: getBody has statements to return null..Can it 
be null in any case?
+                       if (body != null) {
+                               ((org.apache.axiom.soap.impl.dom.SOAPBodyImpl) 
body).internalSerialize(writer);
+                       }
+                       OMSerializerUtil.serializeEndpart(writer);
+
+               } else {
+                       //Now the caching is supposed to be off. However 
caching been switched off
+                       //has nothing to do if the element is already built!
+                       if (this.done || (this.builder == null)) {
+                               OMSerializerUtil.serializeStartpart(this, 
writer);
+                               OMElement header = 
getFirstChildWithName(HEADER_QNAME);
+                               if ((header != null) && 
(header.getFirstOMChild() != null)) {
+                                       serializeInternally((NodeImpl) header, 
writer);
+                               }
+                               SOAPBody body = getBody();
+                               if (body != null) {
+                                       serializeInternally((NodeImpl) body, 
writer);
+                               }
+                               OMSerializerUtil.serializeEndpart(writer);
+                       } else {
+                               OMSerializerUtil.serializeByPullStream(this, 
writer, cache);
+                       }
+               }
+       }
+
+       private void serializeInternally(NodeImpl child, MTOMXMLStreamWriter 
writer)
+                       throws XMLStreamException {
+               if ((!(child instanceof OMElement)) || child.isComplete() || 
child.builder == null) {
+                       child.internalSerializeAndConsume(writer);
+               } else {
+                       OMElement element = (OMElement) child;
+                       element.getBuilder().setCache(false);
+                       OMSerializerUtil.serializeByPullStream(element, writer, 
false);
+               }
+               child = (NodeImpl) child.getNextOMSibling();
+       }
 
     public OMNode getNextOMSibling() throws OMException {
         if(this.ownerNode != null && !this.ownerNode.isComplete()) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to