Author: thilina
Date: Fri Oct  6 03:20:54 2006
New Revision: 453543

URL: http://svn.apache.org/viewvc?view=rev&rev=453543
Log:
1. Moving the MTOMBuilder to correct package
2. Creating a XML level XOP builder to handle non mtom XOP optimised documents 
: Fixing http://issues.apache.org/jira/browse/WSCOMMONS-85
3. Fixing the http://issues.apache.org/jira/browse/WSCOMMONS-107

Added:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
   (with props)
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java
      - copied, changed from r452761, 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilder.java
Removed:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/mtom/
Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/ImageSampleTest.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java

Added: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java?view=auto&rev=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
 (added)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
 Fri Oct  6 03:20:54 2006
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.builder;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+import javax.activation.DataHandler;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.attachments.Attachments;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.MTOMConstants;
+import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.util.ElementHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import sun.misc.GC.LatencyRequest;
+
+public class XOPAwareStAXOMBuilder extends StAXOMBuilder {
+
+       /**
+        * <code>Attachments</code> handles deferred parsing of incoming MIME
+        * Messages.
+        */
+       Attachments attachments;
+
+       /**
+        * Constructor StAXOMBuilder.
+        * 
+        * @param ombuilderFactory
+        * @param parser
+        */
+       public XOPAwareStAXOMBuilder(OMFactory ombuilderFactory,
+                       XMLStreamReader parser, Attachments attachments) {
+               super(ombuilderFactory, parser);
+               this.attachments = attachments;
+       }
+
+       /**
+        * Constructor linked to existing element.
+        * 
+        * @param factory
+        * @param parser
+        * @param element
+        */
+       public XOPAwareStAXOMBuilder(OMFactory factory, XMLStreamReader parser,
+                       OMElement element,Attachments attachments) {
+               super(factory, parser, element);
+               this.attachments = attachments;
+       }
+
+       /**
+        * @param filePath -
+        *            Path to the XML file
+        * @throws XMLStreamException
+        * @throws FileNotFoundException
+        */
+       public XOPAwareStAXOMBuilder(String filePath,Attachments attachments) 
throws XMLStreamException,
+                       FileNotFoundException {
+               super(filePath);
+               this.attachments = attachments;
+       }
+
+       /**
+        * @param inStream -
+        *            instream which contains the XML
+        * @throws XMLStreamException
+        */
+       public XOPAwareStAXOMBuilder(InputStream inStream,Attachments 
attachments)
+                       throws XMLStreamException {
+               super(inStream);
+               this.attachments = attachments;
+       }
+
+       /**
+        * Constructor StAXXOPAwareOMBuilder.
+        * 
+        * @param parser
+        */
+       public XOPAwareStAXOMBuilder(XMLStreamReader parser,Attachments 
attachments) {
+               super(parser);
+               this.attachments = attachments;
+       }
+
+       /**
+        * Method createOMElement. Overriding the createOMElement of 
StAXOMBuilder
+        * to to XOP aware building
+        * 
+        * @return Returns OMNode.
+        * @throws OMException
+        */
+       protected OMNode createOMElement() throws OMException {
+
+               String elementName = parser.getLocalName();
+               String namespaceURI = parser.getNamespaceURI();
+               if (MTOMConstants.XOP_INCLUDE.equalsIgnoreCase(elementName)
+                               && MTOMConstants.XOP_NAMESPACE_URI
+                                               
.equalsIgnoreCase(namespaceURI)) {
+                       OMText node;
+                       String contentID = ElementHelper.getContentID(parser, 
getDocument()
+                                       .getCharsetEncoding());
+
+                       if (lastNode == null) {
+                               throw new OMException(
+                                               "XOP:Include element is not 
supported here");
+                       } else if (lastNode.isComplete() & lastNode.getParent() 
!= null) {
+                               node = omfactory.createOMText(contentID, 
(OMElement) lastNode
+                                               .getParent(), this);
+                               ((OMNodeEx) lastNode).setNextOMSibling(node);
+                               ((OMNodeEx) 
node).setPreviousOMSibling(lastNode);
+                       } else {
+                               OMElement e = (OMElement) lastNode;
+                               node = omfactory.createOMText(contentID, 
(OMElement) lastNode,this);
+                               e.setFirstChild(node);
+                       }
+                       return node;
+               } else {
+                       return super.createOMElement();
+               }
+       }
+       
+       public DataHandler getDataHandler(String blobContentID) throws 
OMException {
+               return attachments.getDataHandler(blobContentID);
+       }
+}

Propchange: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
------------------------------------------------------------------------------
    svn:executable = *

Copied: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java
 (from r452761, 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilder.java)
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java?view=diff&rev=453543&p1=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilder.java&r1=452761&p2=webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java
 Fri Oct  6 03:20:54 2006
@@ -14,7 +14,7 @@
  * limitations under the License.

  */

 

-package org.apache.axiom.om.impl.mtom;

+package org.apache.axiom.soap.impl.builder;

 

 import org.apache.axiom.attachments.Attachments;

 import org.apache.axiom.om.OMElement;

@@ -25,113 +25,84 @@
 import org.apache.axiom.om.impl.MTOMConstants;

 import org.apache.axiom.om.impl.OMNodeEx;

 import org.apache.axiom.soap.SOAPFactory;

-import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;

+import org.apache.commons.logging.Log;

+import org.apache.commons.logging.LogFactory;

 

 import javax.activation.DataHandler;

 import javax.xml.stream.XMLStreamReader;

 import java.io.UnsupportedEncodingException;

 import java.net.URLDecoder;

 

-public class MTOMStAXSOAPModelBuilder extends StAXSOAPModelBuilder implements 
MTOMConstants {

-       

-    /**

-     * <code>Attachments</code> handles deferred parsing of incoming MIME

-     * Messages.

-     */

-    Attachments attachments;

-

-    int partIndex = 0;

-

-    public MTOMStAXSOAPModelBuilder(XMLStreamReader parser,

-                                    SOAPFactory factory,

-                                    Attachments attachments, String 
soapVersion) {

-        super(parser, factory, soapVersion);

-        this.attachments = attachments;

-    }

-

-    /**

-     * @param reader

-     * @param attachments

-     */

-    public MTOMStAXSOAPModelBuilder(XMLStreamReader reader,

-                                    Attachments attachments, String 
soapVersion) {

-        super(reader, soapVersion);

-        this.attachments = attachments;

-    }

-

-    protected OMNode createOMElement() throws OMException {

-

-        elementLevel++;

-        String elementName = parser.getLocalName();

-

-        String namespaceURI = parser.getNamespaceURI();

-

-        // create an OMBlob if the element is an <xop:Include>

-

-        if (XOP_INCLUDE.equalsIgnoreCase(elementName)

-                && XOP_NAMESPACE_URI

-                .equalsIgnoreCase(namespaceURI)) {

-            // do we need to check prfix as well. Meaning, should it be "XOP" ?

-

-

-            OMText node;

-            if (lastNode == null) {

-                // Decide whether to ckeck the level >3 or not

-                throw new OMException(

-                        "XOP:Include element is not supported here");

-            }

-            

-            String contentID = ElementHelper.getContentID(parser, 
getDocument().getCharsetEncoding());

-

-            // This cannot happen. XOP:Include is always the only child of an 
parent element

-            // cause it is same as having some text

-            try {

-                OMElement e = (OMElement) lastNode;

-                //node = new OMTextImpl(contentID, (OMElement) lastNode, this);

-                node = this.omfactory.createOMText(contentID, (OMElement) 
lastNode, this);

-                e.setFirstChild(node);

-            } catch (ClassCastException e) {

-                throw new OMException(

-                        "Last Node & Parent of an OMText should be an Element" 
+

-                                e);

-            }

-

-            return node;

-

-        } else {

-            OMElement node;

-            if (lastNode == null) {

-                node = constructNode(null, elementName, true);

-                setSOAPEnvelope(node);

-            } else if (lastNode.isComplete()) {

-                node =

-                        constructNode((OMElement) lastNode.getParent(),

-                                elementName,

-                                false);

-                ((OMNodeEx)lastNode).setNextOMSibling(node);

-                ((OMNodeEx)node).setPreviousOMSibling(lastNode);

-            } else {

-                OMElement e = (OMElement) lastNode;

-                node = constructNode((OMElement) lastNode, elementName, false);

-                e.setFirstChild(node);

-            }

-

-            

-            // This code seems suspicious.  The constructNode call

-            // does the attribute processing.  The parser is now at a 
different node,

-            // and thus processAttributes will either throw an exception or 
get the

-            // wrong attributes. (scheu)

-            

-            // fill in the attributes

-            processAttributes(node);

-            //TODO Exception when trying to log . check this

-            //                 log.info("Build the OMElelment {" + 
node.getLocalName() + '}'

-            //                                 + node.getLocalName() + "By the 
StaxSOAPModelBuilder");

-            return node;

-        }

-    }

-

-    public DataHandler getDataHandler(String blobContentID) throws OMException 
{

-        return attachments.getDataHandler(blobContentID);

-    }

+public class MTOMStAXSOAPModelBuilder extends StAXSOAPModelBuilder implements

+               MTOMConstants {

+

+       /**

+        * <code>Attachments</code> handles deferred parsing of incoming MIME

+        * Messages.

+        */

+       Attachments attachments;

+

+       private Log log = LogFactory.getLog(getClass());

+

+       int partIndex = 0;

+

+       public MTOMStAXSOAPModelBuilder(XMLStreamReader parser,

+                       SOAPFactory factory, Attachments attachments, String 
soapVersion) {

+               super(parser, factory, soapVersion);

+               this.attachments = attachments;

+       }

+

+       /**

+        * @param reader

+        * @param attachments

+        */

+       public MTOMStAXSOAPModelBuilder(XMLStreamReader reader,

+                       Attachments attachments, String soapVersion) {

+               super(reader, soapVersion);

+               this.attachments = attachments;

+       }

+

+       protected OMNode createOMElement() throws OMException {

+

+               String elementName = parser.getLocalName();

+               String namespaceURI = parser.getNamespaceURI();

+

+               // create an OMBlob if the element is an <xop:Include>

+               if (XOP_INCLUDE.equalsIgnoreCase(elementName)

+                               && 
XOP_NAMESPACE_URI.equalsIgnoreCase(namespaceURI)) {

+                       elementLevel++;

+                       OMText node;

+                       String contentID = ElementHelper.getContentID(parser, 
getDocument()

+                                       .getCharsetEncoding());

+

+                       if (lastNode == null) {

+                               throw new OMException(

+                                               "XOP:Include element is not 
supported here");

+                       } else if (lastNode.isComplete() & lastNode.getParent() 
!= null) {

+                               node = omfactory.createOMText(contentID, 
(OMElement) lastNode

+                                               .getParent(), this);

+                               ((OMNodeEx) lastNode).setNextOMSibling(node);

+                               ((OMNodeEx) 
node).setPreviousOMSibling(lastNode);

+                       } else {

+                               OMElement e = (OMElement) lastNode;

+                               node = omfactory.createOMText(contentID, 
(OMElement) lastNode,

+                                               this);

+                               e.setFirstChild(node);

+                       }

+                       return node;

+

+               } else {

+                       return super.createOMElement();

+               }

+       }

+

+       public DataHandler getDataHandler(String blobContentID) throws 
OMException {

+               DataHandler dataHandler = 
attachments.getDataHandler(blobContentID);

+               if (dataHandler == null) {

+                       throw new OMException(

+                                       "Referenced Attachment not found in the 
MIME Message. ContentID:"

+                                                       + blobContentID);

+               }

+               return dataHandler;

+       }

 }


Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java?view=diff&rev=453543&r1=453542&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/StAXSOAPModelBuilder.java
 Fri Oct  6 03:20:54 2006
@@ -171,8 +171,7 @@
             node = constructNode(null, elementName, true);

             setSOAPEnvelope(node);

         } else if (lastNode.isComplete()) {

-            node =

-                    constructNode((OMElement) lastNode.getParent(),

+            node =constructNode((OMElement) lastNode.getParent(),

                             elementName,

                             false);

             ((OMNodeEx) lastNode).setNextOMSibling(node);


Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextImpl.java?view=diff&rev=453543&r1=453542&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextImpl.java
 Fri Oct  6 03:20:54 2006
@@ -19,9 +19,9 @@
 import org.apache.axiom.om.*;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.OMNamespaceImpl;
-import org.apache.axiom.om.impl.mtom.MTOMStAXSOAPModelBuilder;
 import org.apache.axiom.om.util.Base64;
 import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Node;
 import org.w3c.dom.Text;

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java?view=diff&rev=453543&r1=453542&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
 Fri Oct  6 03:20:54 2006
@@ -20,10 +20,10 @@
 import org.apache.axiom.om.*;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.OMNamespaceImpl;
-import org.apache.axiom.om.impl.mtom.MTOMStAXSOAPModelBuilder;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.apache.axiom.om.util.Base64;
 import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/ImageSampleTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/ImageSampleTest.java?view=diff&rev=453543&r1=453542&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/ImageSampleTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/attachments/ImageSampleTest.java
 Fri Oct  6 03:20:54 2006
@@ -45,7 +45,7 @@
 import org.apache.axiom.om.impl.OMNamespaceImpl;

 import org.apache.axiom.om.impl.llom.OMElementImpl;

 import org.apache.axiom.om.impl.llom.OMTextImpl;

-import org.apache.axiom.om.impl.mtom.MTOMStAXSOAPModelBuilder;

+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;

 

 public class ImageSampleTest extends AbstractTestCase {

 


Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java?view=diff&rev=453543&r1=453542&r2=453543
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/mtom/MTOMStAXSOAPModelBuilderTest.java
 Fri Oct  6 03:20:54 2006
@@ -22,6 +22,7 @@
 import org.apache.axiom.om.OMText;

 import org.apache.axiom.om.OMXMLParserWrapper;

 import org.apache.axiom.soap.SOAP12Constants;

+import org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder;

 

 import javax.activation.DataHandler;

 import javax.xml.stream.XMLInputFactory;

@@ -61,17 +62,10 @@
 

     public void testCreateOMElement() throws Exception {

         OMElement root = builder.getDocumentElement();

-//        System.out.println(root.getLocalName() + " : "

-//                + root.getNamespace().getName());

         OMElement body = (OMElement) root.getFirstOMChild();

-//        System.out.println(body.getLocalName() + " : "

-//                + body.getNamespace().getName());

-

         OMElement data = (OMElement) body.getFirstOMChild();

-//        System.out.println(data.getLocalName() + " : "

-//                + data.getNamespace().getName());

+

         Iterator childIt = data.getChildren();

-        //while (childIt.hasNext()) {

         OMElement child = (OMElement) childIt.next();

         OMText blob = (OMText) child.getFirstOMChild();

         /*




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

Reply via email to