Author: veithen
Date: Tue Mar  3 23:22:06 2009
New Revision: 749837

URL: http://svn.apache.org/viewvc?rev=749837&view=rev
Log:
- Changed StAXSOAPModelBuilder so that an OMMetaFactory can be specified. 
Rationale: StAXSOAPModelBuilder is able to detect the SOAP version 
automatically. It then needs to get the right SOAPFactory instance for that 
SOAP version. Until now it used OMAbstractFactory#getSOAP(11|12)Factory for 
this, i.e. it always used the default Axiom implementation and there was no way 
to specify another Axiom implementation (e.g. DOOM instead of LLOM).
- Using this new feature, fixed the SOAP unit tests for DOOM. They actually (at 
least in part) didn't test DOOM, but LLOM...

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-tests/src/test/java/org/apache/axiom/soap/SOAPTestCase.java

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?rev=749837&r1=749836&r2=749837&view=diff
==============================================================================
--- 
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
 Tue Mar  3 23:22:06 2009
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.OMContainerEx;
@@ -57,6 +58,11 @@
     private OMNamespace envelopeNamespace;
     private String namespaceURI;
 
+    /**
+     * The meta factory used to get the SOAPFactory implementation when SOAP 
version detection
+     * is enabled. This is only used if <code>soapFactory</code> is 
<code>null</code>.
+     */
+    private OMMetaFactory metaFactory;
 
     private SOAPFactory soapFactory;
 
@@ -93,11 +99,17 @@
      * @param soapVersion parameter is to give the soap version for the 
transport.
      */
     public StAXSOAPModelBuilder(XMLStreamReader parser, String soapVersion) {
-        super(parser);
+        this(OMAbstractFactory.getMetaFactory(), parser, soapVersion);
+    }
+
+    public StAXSOAPModelBuilder(OMMetaFactory metaFactory, XMLStreamReader 
parser,
+            String soapVersion) {
+        super(metaFactory.getOMFactory(), parser);
+        this.metaFactory = metaFactory;
         parserVersion = parser.getVersion();
         identifySOAPVersion(soapVersion);
     }
-
+    
     /**
      * Constructor StAXSOAPModelBuilder Users of this constructor needs to 
externally take care
      * validating the transport level soap version with the Envelope version.
@@ -105,7 +117,12 @@
      * @param parser
      */
     public StAXSOAPModelBuilder(XMLStreamReader parser) {
-        super(parser);
+        this(OMAbstractFactory.getMetaFactory(), parser);
+    }
+    
+    public StAXSOAPModelBuilder(OMMetaFactory metaFactory, XMLStreamReader 
parser) {
+        super(metaFactory.getOMFactory(), parser);
+        this.metaFactory = metaFactory;
         parserVersion = parser.getVersion();
         SOAPEnvelope soapEnvelope = getSOAPEnvelope();
         envelopeNamespace = soapEnvelope.getNamespace();
@@ -273,12 +290,12 @@
             if (soapFactory == null) {
                 namespaceURI = this.parser.getNamespaceURI();
                 if 
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
-                    soapFactory = OMAbstractFactory.getSOAP12Factory();
+                    soapFactory = metaFactory.getSOAP12Factory();
                     if (isDebugEnabled) {
                         log.debug("Starting to process SOAP 1.2 message");
                     }
                 } else if 
(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
-                    soapFactory = OMAbstractFactory.getSOAP11Factory();
+                    soapFactory = metaFactory.getSOAP11Factory();
                     if (isDebugEnabled) {
                         log.debug("Starting to process SOAP 1.1 message");
                     }

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPTestCase.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPTestCase.java?rev=749837&r1=749836&r2=749837&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPTestCase.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPTestCase.java
 Tue Mar  3 23:22:06 2009
@@ -28,6 +28,7 @@
 import javax.xml.stream.XMLStreamReader;
 
 public abstract class SOAPTestCase extends AbstractTestCase {
+    protected OMMetaFactory omMetaFactory;
     protected SOAPFactory soap11Factory;
     protected SOAPFactory soap12Factory;
     protected OMFactory omFactory;
@@ -42,6 +43,7 @@
     protected static final String SOAP12_FILE_NAME = "soap/soap12message.xml";
 
     public SOAPTestCase(OMMetaFactory omMetaFactory) {
+        this.omMetaFactory = omMetaFactory;
         soap11Factory = omMetaFactory.getSOAP11Factory();
         soap12Factory = omMetaFactory.getSOAP12Factory();
         omFactory = omMetaFactory.getOMFactory();
@@ -64,7 +66,7 @@
     protected StAXSOAPModelBuilder getSOAPBuilder(String fileName) throws 
Exception {
         XMLStreamReader parser = 
XMLInputFactory.newInstance().createXMLStreamReader(
                 getTestResource(fileName));
-        return new StAXSOAPModelBuilder(parser, null);
+        return new StAXSOAPModelBuilder(omMetaFactory, parser, null);
     }
 
 }


Reply via email to