You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/01/23 21:10:55 UTC

svn commit: r1726448 - in /webservices/axiom/trunk: aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/ aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/ aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/co...

Author: veithen
Date: Sat Jan 23 20:10:54 2016
New Revision: 1726448

URL: http://svn.apache.org/viewvc?rev=1726448&view=rev
Log:
Simplify element creation in builders.

Added:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java
      - copied, changed from r1725804, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/OMFactoryEx.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/intf/SOAPFactoryEx.java
      - copied, changed from r1725804, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPFactoryEx.java
Removed:
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/OMFactoryEx.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAP12FactoryEx.java
    webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPFactoryEx.java
Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/PushOMBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAP12Factory.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAPFactoryImpl.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj Sat Jan 23 20:10:54 2016
@@ -44,7 +44,6 @@ import org.apache.axiom.om.OMXMLStreamRe
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.builder.Builder;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.common.serializer.pull.OMXMLStreamReaderExAdapter;
 import org.apache.axiom.om.impl.common.serializer.pull.PullSerializer;
 import org.apache.axiom.om.impl.common.serializer.push.OutputException;
@@ -53,6 +52,7 @@ import org.apache.axiom.om.impl.common.s
 import org.apache.axiom.om.impl.common.serializer.push.stax.StAXSerializer;
 import org.apache.axiom.om.impl.intf.AxiomChildNode;
 import org.apache.axiom.om.impl.intf.AxiomContainer;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.apache.axiom.om.util.OMXMLStreamReaderValidator;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.util.stax.XMLStreamReaderUtils;

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/PushOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/PushOMBuilder.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/PushOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/PushOMBuilder.java Sat Jan 23 20:10:54 2016
@@ -32,10 +32,10 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMText;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.intf.AxiomContainer;
 import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.apache.axiom.util.stax.AbstractXMLStreamWriter;
 
 public class PushOMBuilder extends AbstractXMLStreamWriter implements DataHandlerWriter {
@@ -114,7 +114,7 @@ public class PushOMBuilder extends Abstr
         } else {
             // We use the createOMElement variant that takes a OMXMLParserWrapper parameter and
             // don't pass the namespace. This avoids creation of a namespace declaration.
-            parent = factory.createOMElement(localName, parent, null);
+            parent = factory.createAxiomElement(AxiomElement.class, localName, parent, null);
         }
         if (ns != null) {
             parent.setNamespace(ns, false);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java Sat Jan 23 20:10:54 2016
@@ -36,9 +36,9 @@ import org.apache.axiom.om.impl.builder.
 import org.apache.axiom.om.impl.builder.CustomBuilder;
 import org.apache.axiom.om.impl.builder.CustomBuilderSupport;
 import org.apache.axiom.om.impl.builder.Detachable;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.intf.AxiomContainer;
 import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.apache.axiom.util.stax.XMLEventUtils;
 import org.apache.axiom.util.stax.XMLStreamReaderUtils;
 import org.apache.commons.logging.Log;
@@ -817,29 +817,28 @@ public class StAXOMBuilder implements Bu
      * @return Returns OMNode.
      * @throws OMException
      */
-    // This method is not meant to be overridden. Override constructNode to create model specific OMElement instances.
     protected final OMNode createOMElement() throws OMException {
-        OMElement node = constructNode(target, parser.getLocalName());
+        AxiomElement node = ((OMFactoryEx)omfactory).createAxiomElement(determineElementType(target, parser.getLocalName()), parser.getLocalName(), target, this);
+        postProcessElement(node);
         populateOMElement(node);
         return node;
     }
 
     /**
-     * Instantiate the appropriate {@link OMElement} implementation for the current element. This
-     * method may be overridden by subclasses to support model specific {@link OMElement} types. The
-     * implementation of this method is expected to initialize the {@link OMElement} with the
-     * specified local name and to add it to the specified parent. However, the implementation
-     * should not set the namespace of the element or process the attributes of the element. This is
-     * taken care of by the caller of this method.
+     * Determine the element type to use for the current element. This method may be overridden by
+     * subclasses to support model specific {@link OMElement} types.
      * 
      * @param parent
      *            the parent for the element
      * @param elementName
      *            the local name for the element
-     * @return the newly created {@link OMElement}; must not be <code>null</code>
+     * @return the type of element to create; must not be <code>null</code>
      */
-    protected OMElement constructNode(OMContainer parent, String elementName) {
-        return omfactory.createOMElement(parser.getLocalName(), target, this);
+    protected Class<? extends AxiomElement> determineElementType(OMContainer parent, String elementName) {
+        return AxiomElement.class;
+    }
+    
+    protected void postProcessElement(OMElement element) {
     }
     
     /**

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java Sat Jan 23 20:10:54 2016
@@ -42,7 +42,6 @@ import org.apache.axiom.om.OMSourcedElem
 import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
 import org.apache.axiom.om.impl.common.AxiomSemantics;
 import org.apache.axiom.om.impl.intf.AxiomAttribute;
@@ -57,6 +56,7 @@ import org.apache.axiom.om.impl.intf.Axi
 import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
 import org.apache.axiom.om.impl.intf.AxiomText;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.apache.axiom.om.impl.intf.TextContent;
 
 public class OMFactoryImpl implements OMFactoryEx {
@@ -248,7 +248,7 @@ public class OMFactoryImpl implements OM
         return createOMElement(localName, ns, null);
     }
 
-    public final <T extends AxiomElement> T createAxiomElement(Class<T> type,
+    protected final <T extends AxiomElement> T createAxiomElement(Class<T> type,
             OMContainer parent, String localName, OMNamespace ns, OMXMLParserWrapper builder,
             boolean generateNSDecl) {
         T element = createNode(type);
@@ -264,9 +264,9 @@ public class OMFactoryImpl implements OM
         return createAxiomElement(AxiomElement.class, parent, localName, ns, null, true);
     }
 
-    public final OMElement createOMElement(String localName, OMContainer parent,
-            OMXMLParserWrapper builder) {
-        return createAxiomElement(AxiomElement.class, parent, localName, null, builder, false);
+    public final <T extends AxiomElement> T createAxiomElement(Class<T> type, String localName,
+            OMContainer parent, OMXMLParserWrapper builder) {
+        return createAxiomElement(type, parent, localName, null, builder, false);
     }
     
     public final OMElement createOMElement(QName qname, OMContainer parent) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java Sat Jan 23 20:10:54 2016
@@ -25,11 +25,11 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.common.OMContentHandler;
 import org.apache.axiom.om.impl.common.builder.BuilderUtil;
 import org.apache.axiom.om.impl.intf.AxiomContainer;
 import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
@@ -140,9 +140,9 @@ public class SAXOMBuilder extends OMCont
 
     protected OMElement createOMElement(OMContainer parent, String localName,
             String namespaceURI, String prefix, String[] namespaces, int namespaceCount) {
-        OMElement element = factory.createOMElement(localName, parent, this);
+        AxiomElement element = factory.createAxiomElement(AxiomElement.class, localName, parent, this);
         for (int i = 0; i < namespaceCount; i++) {
-            ((AxiomElement)element).addNamespaceDeclaration(namespaces[2*i+1], namespaces[2*i]);
+            element.addNamespaceDeclaration(namespaces[2*i+1], namespaces[2*i]);
         }
         BuilderUtil.setNamespace(element, namespaceURI, prefix, false);
         return element;

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java (from r1725804, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/OMFactoryEx.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/OMFactoryEx.java&r1=1725804&r2=1726448&rev=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/OMFactoryEx.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java Sat Jan 23 20:10:54 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.axiom.om.impl.builder;
+package org.apache.axiom.om.impl.intf;
 
 import org.apache.axiom.om.OMComment;
 import org.apache.axiom.om.OMContainer;
@@ -25,6 +25,7 @@ import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMEntityReference;
 import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMProcessingInstruction;
 import org.apache.axiom.om.OMText;
@@ -38,13 +39,8 @@ public interface OMFactoryEx extends OMF
 
     OMDocument createOMDocument(OMXMLParserWrapper builder);
 
-    /**
-     * @param localName
-     * @param parent
-     * @param builder
-     */
-    OMElement createOMElement(String localName, OMContainer parent,
-                                     OMXMLParserWrapper builder);
+    <T extends AxiomElement> T createAxiomElement(Class<T> type, String localName,
+            OMContainer parent, OMXMLParserWrapper builder);
 
     OMText createOMText(OMContainer parent, Object dataHandler, boolean optimize, boolean fromBuilder);
     

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAP12Factory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAP12Factory.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAP12Factory.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAP12Factory.java Sat Jan 23 20:10:54 2016
@@ -31,14 +31,13 @@ import org.apache.axiom.soap.SOAPFaultRe
 import org.apache.axiom.soap.SOAPFaultSubCode;
 import org.apache.axiom.soap.SOAPFaultText;
 import org.apache.axiom.soap.SOAPFaultValue;
-import org.apache.axiom.soap.impl.builder.SOAP12FactoryEx;
 import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultNode;
 import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultSubCode;
 import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultText;
 import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultValue;
 import org.apache.axiom.soap.impl.intf.SOAPHelper;
 
-public class SOAP12Factory extends SOAPFactoryImpl implements SOAP12FactoryEx {
+public class SOAP12Factory extends SOAPFactoryImpl {
     public SOAP12Factory(OMMetaFactory metaFactory, NodeFactory nodeFactory) {
         super(metaFactory, nodeFactory);
     }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAPFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAPFactoryImpl.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAPFactoryImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/SOAPFactoryImpl.java Sat Jan 23 20:10:54 2016
@@ -40,10 +40,10 @@ import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axiom.soap.SOAPMessage;
 import org.apache.axiom.soap.SOAPVersion;
-import org.apache.axiom.soap.impl.builder.SOAPFactoryEx;
 import org.apache.axiom.soap.impl.intf.AxiomSOAPElement;
 import org.apache.axiom.soap.impl.intf.AxiomSOAPHeaderBlock;
 import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
+import org.apache.axiom.soap.impl.intf.SOAPFactoryEx;
 import org.apache.axiom.soap.impl.intf.SOAPHelper;
 
 public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFactoryEx {
@@ -51,8 +51,6 @@ public abstract class SOAPFactoryImpl ex
         super(metaFactory, nodeFactory);
     }
     
-    protected abstract SOAPHelper getSOAPHelper();
-
     public final String getSoapVersionURI() {
         return getSOAPHelper().getEnvelopeURI();
     }
@@ -65,7 +63,7 @@ public abstract class SOAPFactoryImpl ex
         return getSOAPHelper().getNamespace();
     }
     
-    public final <T extends AxiomSOAPElement> T createSOAPElement(Class<T> type, OMElement parent, QName qname, OMXMLParserWrapper builder) {
+    protected final <T extends AxiomSOAPElement> T createSOAPElement(Class<T> type, OMElement parent, QName qname, OMXMLParserWrapper builder) {
         T element = createNode(type);
         if (builder != null) {
             element.coreSetBuilder(builder);
@@ -111,21 +109,13 @@ public abstract class SOAPFactoryImpl ex
         return createAxiomElement(getSOAPHelper().getEnvelopeClass(), null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, ns, null, true);
     }
 
-    public final SOAPEnvelope createSOAPEnvelope(SOAPMessage message, OMXMLParserWrapper builder) {
-        return createAxiomElement(getSOAPHelper().getEnvelopeClass(), message, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, null, builder, false);
-    }
-
-    public final SOAPHeader createSOAPHeader(SOAPEnvelope parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getHeaderClass(), parent, helper.getHeaderQName(), builder);
-    }
-
     public final SOAPHeader createSOAPHeader(SOAPEnvelope parent) {
-        return createSOAPHeader(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getHeaderClass(), parent, helper.getHeaderQName(), null);
     }
 
     public final SOAPHeader createSOAPHeader() {
-        return createSOAPHeader(null, null);
+        return createSOAPHeader(null);
     }
 
     public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns, SOAPHeader parent) {
@@ -136,10 +126,6 @@ public abstract class SOAPFactoryImpl ex
         return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), null, localName, ns, null, true);
     }
 
-    public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, SOAPHeader parent, OMXMLParserWrapper builder) {
-        return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), parent, localName, null, builder, false);
-    }
-
     public final SOAPHeaderBlock createSOAPHeaderBlock(OMDataSource source) {
         AxiomSOAPHeaderBlock element = createNode(getSOAPHelper().getHeaderBlockClass());
         element.init(source);
@@ -152,88 +138,64 @@ public abstract class SOAPFactoryImpl ex
         return element;
     }
 
-    public final SOAPBody createSOAPBody(SOAPEnvelope parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getBodyClass(), parent, helper.getBodyQName(), builder);
-    }
-
     public final SOAPBody createSOAPBody(SOAPEnvelope parent) {
-        return createSOAPBody(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getBodyClass(), parent, helper.getBodyQName(), null);
     }
 
     public final SOAPBody createSOAPBody() {
-        return createSOAPBody(null, null);
-    }
-
-    public final SOAPFault createSOAPFault(SOAPBody parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getFaultClass(), parent, helper.getFaultQName(), builder);
+        return createSOAPBody(null);
     }
 
     public final SOAPFault createSOAPFault(SOAPBody parent) {
-        return createSOAPFault(parent, (OMXMLParserWrapper)null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getFaultClass(), parent, helper.getFaultQName(), null);
     }
 
     public final SOAPFault createSOAPFault() {
-        return createSOAPFault(null, (OMXMLParserWrapper)null);
+        return createSOAPFault(null);
     }
 
     public final SOAPFault createSOAPFault(SOAPBody parent, Exception e) {
-        SOAPFault fault = createSOAPFault(parent, (OMXMLParserWrapper)null);
+        SOAPFault fault = createSOAPFault(parent);
         fault.setException(e);
         return fault;
     }
 
-    public final SOAPFaultCode createSOAPFaultCode(SOAPFault parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getFaultCodeClass(), parent, helper.getFaultCodeQName(), builder);
-    }
-
     public final SOAPFaultCode createSOAPFaultCode(SOAPFault parent) {
-        return createSOAPFaultCode(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getFaultCodeClass(), parent, helper.getFaultCodeQName(), null);
     }
 
     public final SOAPFaultCode createSOAPFaultCode() {
-        return createSOAPFaultCode(null, null);
-    }
-
-    public final SOAPFaultReason createSOAPFaultReason(SOAPFault parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getFaultReasonClass(), parent, helper.getFaultReasonQName(), builder);
+        return createSOAPFaultCode(null);
     }
 
     public final SOAPFaultReason createSOAPFaultReason(SOAPFault parent) {
-        return createSOAPFaultReason(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getFaultReasonClass(), parent, helper.getFaultReasonQName(), null);
     }
 
     public final SOAPFaultReason createSOAPFaultReason() {
-        return createSOAPFaultReason(null, null);
-    }
-
-    public final SOAPFaultRole createSOAPFaultRole(SOAPFault parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getFaultRoleClass(), parent, helper.getFaultRoleQName(), builder);
+        return createSOAPFaultReason(null);
     }
 
     public final SOAPFaultRole createSOAPFaultRole(SOAPFault parent) {
-        return createSOAPFaultRole(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getFaultRoleClass(), parent, helper.getFaultRoleQName(), null);
     }
 
     public final SOAPFaultRole createSOAPFaultRole() {
-        return createSOAPFaultRole(null, null);
-    }
-
-    public final SOAPFaultDetail createSOAPFaultDetail(SOAPFault parent, OMXMLParserWrapper builder) {
-        SOAPHelper helper = getSOAPHelper();
-        return createSOAPElement(helper.getFaultDetailClass(), parent, helper.getFaultDetailQName(), builder);
+        return createSOAPFaultRole(null);
     }
 
     public final SOAPFaultDetail createSOAPFaultDetail(SOAPFault parent) {
-        return createSOAPFaultDetail(parent, null);
+        SOAPHelper helper = getSOAPHelper();
+        return createSOAPElement(helper.getFaultDetailClass(), parent, helper.getFaultDetailQName(), null);
     }
 
     public final SOAPFaultDetail createSOAPFaultDetail() {
-        return createSOAPFaultDetail(null, null);
+        return createSOAPFaultDetail(null);
     }
 
     public final SOAPMessage createDefaultSOAPMessage() {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java Sat Jan 23 20:10:54 2016
@@ -20,57 +20,45 @@
 package org.apache.axiom.soap.impl.common.builder;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.exception.OMBuilderException;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAPFault;
 import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.builder.SOAPFactoryEx;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP11FaultCode;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP11FaultDetail;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP11FaultReason;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP11FaultRole;
 import org.w3c.dom.Element;
 
 import javax.xml.stream.XMLStreamReader;
 
 public class SOAP11BuilderHelper extends SOAPBuilderHelper implements SOAP11Constants {
-    private final SOAPFactoryEx factory;
     private boolean faultcodePresent = false;
     private boolean faultstringPresent = false;
 
-    public SOAP11BuilderHelper(StAXSOAPModelBuilder builder, SOAPFactoryEx factory) {
-        super(builder);
-        this.factory = factory;
-    }
-
-    public OMElement handleEvent(XMLStreamReader parser,
+    public Class<? extends AxiomElement> handleEvent(XMLStreamReader parser,
                                  OMElement parent,
                                  int elementLevel) throws SOAPProcessingException {
         this.parser = parser;
 
-        OMElement element = null;
+        Class<? extends AxiomElement> elementType = null;
         String localName = parser.getLocalName();
 
         if (elementLevel == 4) {
 
             if (SOAP_FAULT_CODE_LOCAL_NAME.equals(localName)) {
 
-                element = factory.createSOAPFaultCode(
-                        (SOAPFault) parent, builder);
+                elementType = AxiomSOAP11FaultCode.class;
                 faultcodePresent = true;
             } else if (SOAP_FAULT_STRING_LOCAL_NAME.equals(localName)) {
 
-                element = factory.createSOAPFaultReason(
-                        (SOAPFault) parent, builder);
+                elementType = AxiomSOAP11FaultReason.class;
                 faultstringPresent = true;
             } else if (SOAP_FAULT_ACTOR_LOCAL_NAME.equals(localName)) {
-                element =
-                        factory.createSOAPFaultRole((SOAPFault) parent,
-                                                    builder);
+                elementType = AxiomSOAP11FaultRole.class;
             } else if (SOAP_FAULT_DETAIL_LOCAL_NAME.equals(localName)) {
-                element =
-                        factory.createSOAPFaultDetail((SOAPFault) parent,
-                                                      builder);
+                elementType = AxiomSOAP11FaultDetail.class;
             } else {
-                element =
-                        factory.createOMElement(
-                                localName, parent, builder);
+                elementType = AxiomElement.class;
             }
 
         } else if (elementLevel == 5) {
@@ -94,18 +82,13 @@ public class SOAP11BuilderHelper extends
                 throw new SOAPProcessingException(
                         "faultactor element should not have children");
             } else {
-                element =
-                        this.factory.createOMElement(
-                                localName, parent, builder);
+                elementType = AxiomElement.class;
             }
 
         } else if (elementLevel > 5) {
-            element =
-                    this.factory.createOMElement(localName,
-                                                 parent,
-                                                 builder);
+            elementType = AxiomElement.class;
         }
 
-        return element;
+        return elementType;
     }
 }
\ No newline at end of file

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java Sat Jan 23 20:10:54 2016
@@ -19,22 +19,24 @@
 
 package org.apache.axiom.soap.impl.common.builder;
 
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.exception.OMBuilderException;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPFault;
-import org.apache.axiom.soap.SOAPFaultCode;
-import org.apache.axiom.soap.SOAPFaultReason;
-import org.apache.axiom.soap.SOAPFaultSubCode;
 import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.builder.SOAP12FactoryEx;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultCode;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultDetail;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultNode;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultReason;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultRole;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultSubCode;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultText;
+import org.apache.axiom.soap.impl.intf.AxiomSOAP12FaultValue;
 
 import javax.xml.stream.XMLStreamReader;
 import java.util.Vector;
 
 public class SOAP12BuilderHelper extends SOAPBuilderHelper {
-    private final SOAP12FactoryEx factory;
     private boolean codePresent = false;
     private boolean reasonPresent = false;
     private boolean nodePresent = false;
@@ -50,17 +52,12 @@ public class SOAP12BuilderHelper extends
     private boolean processingDetailElements = false;
     private Vector detailElementNames;
 
-    public SOAP12BuilderHelper(StAXSOAPModelBuilder builder, SOAP12FactoryEx factory) {
-        super(builder);
-        this.factory = factory;
-    }
-
-    public OMElement handleEvent(XMLStreamReader parser,
+    public Class<? extends AxiomElement> handleEvent(XMLStreamReader parser,
                                  OMElement parent,
                                  int elementLevel) throws SOAPProcessingException {
 
         this.parser = parser;
-        OMElement element = null;
+        Class<? extends AxiomElement> elementType = null;
 
         if (elementLevel == 4) {
             if (parser.getLocalName().equals(
@@ -69,9 +66,7 @@ public class SOAP12BuilderHelper extends
                     throw new OMBuilderException(
                             "Multiple Code element encountered");
                 } else {
-                    element =
-                            factory.createSOAPFaultCode((SOAPFault) parent,
-                                                        builder);
+                    elementType = AxiomSOAP12FaultCode.class;
                     codePresent = true;
                     codeprocessing = true;
                 }
@@ -83,9 +78,7 @@ public class SOAP12BuilderHelper extends
                             throw new OMBuilderException(
                                     "Multiple Reason Element encountered");
                         } else {
-                            element =
-                                    factory.createSOAPFaultReason(
-                                            (SOAPFault) parent, builder);
+                            elementType = AxiomSOAP12FaultReason.class;
                             reasonPresent = true;
                             reasonProcessing = true;
                         }
@@ -112,9 +105,7 @@ public class SOAP12BuilderHelper extends
                             throw new OMBuilderException(
                                     "Multiple Node element encountered");
                         } else {
-                            element =
-                                    factory.createSOAPFaultNode(
-                                            (SOAPFault) parent, builder);
+                            elementType = AxiomSOAP12FaultNode.class;
                             nodePresent = true;
                         }
                     } else {
@@ -134,9 +125,7 @@ public class SOAP12BuilderHelper extends
                             throw new OMBuilderException(
                                     "Multiple Role element encountered");
                         } else {
-                            element =
-                                    factory.createSOAPFaultRole(
-                                            (SOAPFault) parent, builder);
+                            elementType = AxiomSOAP12FaultRole.class;
                             rolePresent = true;
                         }
                     } else {
@@ -156,9 +145,7 @@ public class SOAP12BuilderHelper extends
                             throw new OMBuilderException(
                                     "Multiple detail element encountered");
                         } else {
-                            element =
-                                    factory.createSOAPFaultDetail(
-                                            (SOAPFault) parent, builder);
+                            elementType = AxiomSOAP12FaultDetail.class;
                             detailPresent = true;
                         }
                     } else {
@@ -182,9 +169,7 @@ public class SOAP12BuilderHelper extends
                 if (parser.getLocalName().equals(
                         SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME)) {
                     if (!valuePresent) {
-                        element =
-                                factory.createSOAPFaultValue(
-                                        (SOAPFaultCode) parent, builder);
+                        elementType = AxiomSOAP12FaultValue.class;
                         valuePresent = true;
                         codeprocessing = false;
                     } else {
@@ -196,9 +181,7 @@ public class SOAP12BuilderHelper extends
                         SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME)) {
                     if (!subcodePresent) {
                         if (valuePresent) {
-                            element =
-                                    factory.createSOAPFaultSubCode(
-                                            (SOAPFaultCode) parent, builder);
+                            elementType = AxiomSOAP12FaultSubCode.class;
                             subcodePresent = true;
                             subCodeProcessing = true;
                         } else {
@@ -220,9 +203,7 @@ public class SOAP12BuilderHelper extends
                     SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME)) {
                 if (parser.getLocalName().equals(
                         SOAP12Constants.SOAP_FAULT_TEXT_LOCAL_NAME)) {
-                    element =
-                            factory.createSOAPFaultText(
-                                    (SOAPFaultReason) parent, builder);
+                    elementType = AxiomSOAP12FaultText.class;
                     reasonProcessing = false;
                 } else {
                     throw new OMBuilderException(
@@ -231,9 +212,7 @@ public class SOAP12BuilderHelper extends
                 }
             } else if (parent.getLocalName().equals(
                     SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME)) {
-                element =
-                        this.factory.createOMElement(
-                                parser.getLocalName(), parent, builder);
+                elementType = AxiomElement.class;
                 processingDetailElements = true;
                 detailElementNames = new Vector();
                 detailElementNames.add(parser.getLocalName());
@@ -254,9 +233,7 @@ public class SOAP12BuilderHelper extends
                         throw new OMBuilderException(
                                 "multiple subCode value encountered");
                     } else {
-                        element =
-                                factory.createSOAPFaultValue(
-                                        (SOAPFaultSubCode) parent, builder);
+                        elementType = AxiomSOAP12FaultValue.class;
                         subcodeValuePresent = true;
                         subSubcodePresent = false;
                         subCodeProcessing = false;
@@ -265,10 +242,7 @@ public class SOAP12BuilderHelper extends
                         SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME)) {
                     if (subcodeValuePresent) {
                         if (!subSubcodePresent) {
-                            element =
-                                    factory.createSOAPFaultSubCode(
-                                            (SOAPFaultSubCode) parent,
-                                            builder);
+                            elementType = AxiomSOAP12FaultSubCode.class;
                             subcodeValuePresent = false;
                             subSubcodePresent = true;
                             subCodeProcessing = true;
@@ -297,11 +271,7 @@ public class SOAP12BuilderHelper extends
                 }
                 if (localNameExist) {
                     detailElementNames.setSize(detailElementLevel);
-                    element =
-                            this.factory.createOMElement(
-                                    parser.getLocalName(),
-                                    parent,
-                                    builder);
+                    elementType = AxiomElement.class;
                     detailElementNames.add(parser.getLocalName());
                 }
 
@@ -312,6 +282,6 @@ public class SOAP12BuilderHelper extends
                                 elementLevel);
             }
         }
-        return element;
+        return elementType;
     }
 }
\ No newline at end of file

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java Sat Jan 23 20:10:54 2016
@@ -20,19 +20,15 @@
 package org.apache.axiom.soap.impl.common.builder;
 
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.soap.SOAPProcessingException;
 
 import javax.xml.stream.XMLStreamReader;
 
 public abstract class SOAPBuilderHelper {
-    protected final StAXSOAPModelBuilder builder;
     protected XMLStreamReader parser;
 
-    protected SOAPBuilderHelper(StAXSOAPModelBuilder builder) {
-        this.builder = builder;
-    }
-
-    public abstract OMElement handleEvent(XMLStreamReader parser,
+    public abstract Class<? extends AxiomElement> handleEvent(XMLStreamReader parser,
                                           OMElement element,
                                           int elementLevel) throws SOAPProcessingException;
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java Sat Jan 23 20:10:54 2016
@@ -31,6 +31,7 @@ import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.builder.CustomBuilder;
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP11Version;
 import org.apache.axiom.soap.SOAP12Constants;
@@ -39,13 +40,11 @@ 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.SOAPMessage;
 import org.apache.axiom.soap.SOAPModelBuilder;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.impl.builder.OMMetaFactoryEx;
-import org.apache.axiom.soap.impl.builder.SOAP12FactoryEx;
-import org.apache.axiom.soap.impl.builder.SOAPFactoryEx;
+import org.apache.axiom.soap.impl.intf.SOAPFactoryEx;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -150,8 +149,9 @@ public class StAXSOAPModelBuilder extend
         return newElement;
     }
     
-    protected OMElement constructNode(OMContainer parent, String elementName) {
-        OMElement element;
+    @Override
+    protected Class<? extends AxiomElement> determineElementType(OMContainer parent, String elementName) {
+        Class<? extends AxiomElement> elementType;
         if (elementLevel == 1) {
 
             // Now I've found a SOAP Envelope, now create SOAPEnvelope here.
@@ -181,7 +181,7 @@ public class StAXSOAPModelBuilder extend
                         "Expected " + soapFactory.getSoapVersionURI(), SOAP12Constants.FAULT_CODE_SENDER);
             }
 
-            element = soapFactory.createSOAPEnvelope((SOAPMessage)parent, this);
+            elementType = soapFactory.getSOAPHelper().getEnvelopeClass();
         } else if (elementLevel == 2) {
             String elementNS = parser.getNamespaceURI();
 
@@ -197,24 +197,20 @@ public class StAXSOAPModelBuilder extend
                                                           getSenderFaultCode());
                     }
                     headerPresent = true;
-                    element =
-                            soapFactory.createSOAPHeader((SOAPEnvelope) parent,
-                                                         this);
+                    elementType = soapFactory.getSOAPHelper().getHeaderClass();
                 } else if (elementName.equals(SOAPConstants.BODY_LOCAL_NAME)) {
                     if (bodyPresent) {
                         throw new SOAPProcessingException("Multiple body elements encountered",
                                                           getSenderFaultCode());
                     }
                     bodyPresent = true;
-                    element =
-                            soapFactory.createSOAPBody((SOAPEnvelope) parent,
-                                                       this);
+                    elementType = soapFactory.getSOAPHelper().getBodyClass();
                 } else {
                     throw new SOAPProcessingException(elementName + " is not supported here.",
                                                       getSenderFaultCode());
                 }
             } else if (soapFactory.getSOAPVersion() == SOAP11Version.getSingleton() && bodyPresent) {
-                element = soapFactory.createOMElement(parser.getLocalName(), parent, this);
+                elementType = AxiomElement.class;
             } else {
                 throw new SOAPProcessingException("Disallowed element found inside Envelope : {"
                         + elementNS + "}" + elementName);
@@ -225,9 +221,7 @@ public class StAXSOAPModelBuilder extend
 
             // this is a headerblock
             try {
-                element =
-                        soapFactory.createSOAPHeaderBlock(elementName, (SOAPHeader) parent,
-                                                          this);
+                elementType = soapFactory.getSOAPHelper().getHeaderBlockClass();
             } catch (SOAPProcessingException e) {
                 throw new SOAPProcessingException("Can not create SOAPHeader block",
                                                   getReceiverFaultCode(), e);
@@ -237,22 +231,21 @@ public class StAXSOAPModelBuilder extend
                 elementName.equals(SOAPConstants.BODY_FAULT_LOCAL_NAME) &&
                 soapFactory.getSoapVersionURI().equals(parser.getNamespaceURI())) {
             // this is a SOAP fault
-            element = soapFactory.createSOAPFault((SOAPBody) parent, this);
+            elementType = soapFactory.getSOAPHelper().getFaultClass();
             processingFault = true;
             if (soapFactory.getSOAPVersion() == SOAP12Version.getSingleton()) {
-                builderHelper = new SOAP12BuilderHelper(this, (SOAP12FactoryEx)soapFactory);
+                builderHelper = new SOAP12BuilderHelper();
             } else if (soapFactory.getSOAPVersion() == SOAP11Version.getSingleton()) {
-                builderHelper = new SOAP11BuilderHelper(this, soapFactory);
+                builderHelper = new SOAP11BuilderHelper();
             }
 
         } else if (elementLevel > 3 && processingFault) {
-            element = builderHelper.handleEvent(parser, (OMElement)parent, elementLevel);
+            elementType = builderHelper.handleEvent(parser, (OMElement)parent, elementLevel);
         } else {
             // this is neither of above. Just create an element
-            element = soapFactory.createOMElement(elementName, parent,
-                                                  this);
+            elementType = AxiomElement.class;
         }
-        return element;
+        return elementType;
     }
 
     private String getSenderFaultCode() {

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/intf/SOAPFactoryEx.java (from r1725804, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPFactoryEx.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/intf/SOAPFactoryEx.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/intf/SOAPFactoryEx.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPFactoryEx.java&r1=1725804&r2=1726448&rev=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/SOAPFactoryEx.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/intf/SOAPFactoryEx.java Sat Jan 23 20:10:54 2016
@@ -16,22 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.axiom.soap.impl.builder;
+package org.apache.axiom.soap.impl.intf;
 
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.builder.OMFactoryEx;
-import org.apache.axiom.soap.SOAPBody;
-import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.impl.intf.OMFactoryEx;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.SOAPFault;
-import org.apache.axiom.soap.SOAPFaultCode;
-import org.apache.axiom.soap.SOAPFaultDetail;
-import org.apache.axiom.soap.SOAPFaultReason;
-import org.apache.axiom.soap.SOAPFaultRole;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axiom.soap.SOAPMessage;
-import org.apache.axiom.soap.SOAPProcessingException;
 
 /**
  * Interface that is used internally by Axiom and that should not be considered being part of the
@@ -39,82 +29,8 @@ import org.apache.axiom.soap.SOAPProcess
  */
 public interface SOAPFactoryEx extends SOAPFactory, OMFactoryEx {
 
-    SOAPMessage createSOAPMessage(OMXMLParserWrapper builder);
-
-    SOAPEnvelope createSOAPEnvelope(SOAPMessage message, OMXMLParserWrapper builder);
-
-    /**
-     * @param envelope
-     * @param builder
-     * @return Returns SOAPHeader.
-     */
-    SOAPHeader createSOAPHeader(SOAPEnvelope envelope,
-                                       OMXMLParserWrapper builder);
-
-    /**
-     * @param localName
-     * @param parent
-     * @param builder
-     * @return Returns SOAPHeaderBlock.
-     */
-    SOAPHeaderBlock createSOAPHeaderBlock(String localName,
-                                                 SOAPHeader parent,
-                                                 OMXMLParserWrapper builder)
-            throws SOAPProcessingException;
-
-    /**
-     * @param parent
-     * @param builder
-     * @return Returns SOAPFault.
-     */
-    SOAPFault createSOAPFault(SOAPBody parent,
-                                     OMXMLParserWrapper builder);
+    SOAPHelper getSOAPHelper();
 
-    /**
-     * @param envelope
-     * @param builder
-     * @return Returns SOAPBody.
-     */
-    SOAPBody createSOAPBody(SOAPEnvelope envelope,
-                                   OMXMLParserWrapper builder);
-
-    /**
-     * Code eii under SOAPFault (parent)
-     *
-     * @param parent
-     * @param builder
-     * @return Returns SOAPFaultCode.
-     */
-    SOAPFaultCode createSOAPFaultCode(SOAPFault parent,
-                                             OMXMLParserWrapper builder);
-
-    /**
-     * Reason eii under SOAPFault (parent)
-     *
-     * @param parent
-     * @param builder
-     * @return Returns SOAPFaultReason.
-     */
-    SOAPFaultReason createSOAPFaultReason(SOAPFault parent,
-                                                 OMXMLParserWrapper builder);
-
-    /**
-     * Role eii under SOAPFault (parent)
-     *
-     * @param parent
-     * @param builder
-     * @return Returns SOAPFaultRole.
-     */
-    SOAPFaultRole createSOAPFaultRole(SOAPFault parent,
-                                             OMXMLParserWrapper builder);
+    SOAPMessage createSOAPMessage(OMXMLParserWrapper builder);
 
-    /**
-     * Role eii under SOAPFault (parent)
-     *
-     * @param parent
-     * @param builder
-     * @return Returns SOAPFaultDetail.
-     */
-    SOAPFaultDetail createSOAPFaultDetail(SOAPFault parent,
-                                                 OMXMLParserWrapper builder);
 }

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java Sat Jan 23 20:10:54 2016
@@ -33,6 +33,7 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 
 @SuppressWarnings("unchecked")
 public class FOMBuilder extends StAXOMBuilder implements Constants {
@@ -91,8 +92,20 @@ public class FOMBuilder extends StAXOMBu
     }
 
     @Override
-    protected OMElement constructNode(OMContainer parent, String name) {
-        return fomfactory.createElementFromBuilder(parser.getName(), parent, this);
+    protected Class<? extends AxiomElement> determineElementType(OMContainer parent,
+            String elementName) {
+        return fomfactory.determineElementType(parser.getName(), parent);
+    }
+
+    @Override
+    protected void postProcessElement(OMElement element) {
+        if (element instanceof FOMContent) {
+            Content.Type type = getContentType();
+            ((FOMContent)element).setContentType(type == null ? Content.Type.TEXT : type);
+        } else if (element instanceof FOMText) {
+            Text.Type type = getTextType();
+            ((FOMText)element).setTextType(type == null ? Text.Type.TEXT : type);
+        }
     }
 
     public <T extends Element> Document<T> getFomDocument() {

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java?rev=1726448&r1=1726447&r2=1726448&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java Sat Jan 23 20:10:54 2016
@@ -510,24 +510,15 @@ public class FOMFactory extends OMFactor
         return createElement(elementType, qname, parent);
     }
 
-    protected OMElement createElementFromBuilder(QName qname, OMContainer parent, FOMBuilder builder) {
+    protected Class<? extends FOMElement> determineElementType(QName qname, OMContainer parent) {
         Class<? extends FOMElement> elementType = elementTypeMap.get(qname);
-        if (elementType == null) {
-            if (parent instanceof ExtensibleElement || parent instanceof Document) {
-                elementType = FOMExtensibleElement.class;
-            } else {
-                elementType = FOMElement.class;
-            }
+        if (elementType != null) {
+            return elementType;
+        } else if (parent instanceof ExtensibleElement || parent instanceof Document) {
+            return FOMExtensibleElement.class;
+        } else {
+            return FOMElement.class;
         }
-        OMElement element = createAxiomElement(elementType, parent, qname.getLocalPart(), null, builder, false);
-        if (element instanceof FOMContent) {
-            Content.Type type = builder.getContentType();
-            ((FOMContent)element).setContentType(type == null ? Content.Type.TEXT : type);
-        } else if (element instanceof FOMText) {
-            Text.Type type = builder.getTextType();
-            ((FOMText)element).setTextType(type == null ? Text.Type.TEXT : type);
-        }
-        return element;
     }
 
     public Factory registerExtension(ExtensionFactory factory) {