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/02/03 23:31:46 UTC

svn commit: r1728383 - in /webservices/axiom/trunk: aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/ aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/ implementations/fom-impl/src/main/java/org/apache/...

Author: veithen
Date: Wed Feb  3 22:31:45 2016
New Revision: 1728383

URL: http://svn.apache.org/viewvc?rev=1728383&view=rev
Log:
Prefer composition over inheritance.

Added:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java   (with props)
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java   (with props)
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java
      - copied, changed from r1728377, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
Modified:
    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/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

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java?rev=1728383&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java Wed Feb  3 22:31:45 2016
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.om.impl.common.builder;
+
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.impl.intf.AxiomElement;
+
+public interface Model {
+    /**
+     * Determine the element type to use for the current element.
+     * 
+     * @param parent
+     *            the parent for the element
+     * @param elementName
+     *            the local name for the element
+     * @return the type of element to create; must not be <code>null</code>
+     */
+    Class<? extends AxiomElement> determineElementType(OMContainer parent, int elementLevel,
+            String namespaceURI, String localName);
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java?rev=1728383&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java Wed Feb  3 22:31:45 2016
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.om.impl.common.builder;
+
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.impl.intf.AxiomElement;
+
+public final class PlainXMLModel implements Model {
+    public static final PlainXMLModel INSTANCE = new PlainXMLModel();
+
+    private PlainXMLModel() {}
+
+    @Override
+    public Class<? extends AxiomElement> determineElementType(OMContainer parent, int elementLevel,
+            String namespaceURI, String localName) {
+        return AxiomElement.class;
+    }
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1728383&r1=1728382&r2=1728383&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 Wed Feb  3 22:31:45 2016
@@ -101,6 +101,7 @@ public class StAXOMBuilder implements Bu
     
     private final Detachable detachable;
     private final Closeable closeable;
+    private final Model model;
 
     /** Field lastNode */
     private AxiomContainer target;
@@ -174,27 +175,28 @@ public class StAXOMBuilder implements Bu
     private ArrayList<NodePostProcessor> nodePostProcessors;
     
     private StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, String encoding,
-            boolean autoClose, Detachable detachable, Closeable closeable, PayloadSelector payloadSelector) {
+            boolean autoClose, Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
         omfactory = (OMFactoryEx)omFactory;
         this.parser = parser;
         this.autoClose = autoClose;
         this.detachable = detachable;
         this.closeable = closeable;
+        this.model = model;
         this.payloadSelector = payloadSelector;
         charEncoding = encoding;
         dataHandlerReader = XMLStreamReaderUtils.getDataHandlerReader(parser);
     }
     
     protected StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
-            Detachable detachable, Closeable closeable, PayloadSelector payloadSelector) {
+            Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
         // The getEncoding information is only available at the START_DOCUMENT event.
-        this(omFactory, parser, parser.getEncoding(), autoClose, detachable, closeable, payloadSelector);
+        this(omFactory, parser, parser.getEncoding(), autoClose, detachable, closeable, model, payloadSelector);
         
     }
     
     public StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
             Detachable detachable, Closeable closeable) {
-        this(omFactory, parser, autoClose, detachable, closeable, PayloadSelector.DEFAULT);
+        this(omFactory, parser, autoClose, detachable, closeable, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
     }
     
     public StAXOMBuilder(OMFactory factory, 
@@ -202,7 +204,7 @@ public class StAXOMBuilder implements Bu
                          OMElement element, 
                          String characterEncoding) {
         // Use this constructor because the parser is passed the START_DOCUMENT state.
-        this(factory, parser, characterEncoding, true, null, null, PayloadSelector.DEFAULT);  
+        this(factory, parser, characterEncoding, true, null, null, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);  
         elementLevel = 1;
         target = (AxiomContainer)element;
         populateOMElement(element);
@@ -802,28 +804,13 @@ public class StAXOMBuilder implements Bu
      */
     private OMNode createOMElement() throws OMException {
         AxiomElement node = omfactory.createAxiomElement(
-                determineElementType(target, elementLevel, parser.getNamespaceURI(), parser.getLocalName()),
+                model.determineElementType(target, elementLevel, parser.getNamespaceURI(), parser.getLocalName()),
                 parser.getLocalName(), target, this);
         populateOMElement(node);
         return node;
     }
 
     /**
-     * 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 type of element to create; must not be <code>null</code>
-     */
-    protected Class<? extends AxiomElement> determineElementType(OMContainer parent,
-            int elementLevel, String namespaceURI, String localName) {
-        return AxiomElement.class;
-    }
-    
-    /**
      * Method createOMText.
      *
      * @return Returns OMNode.

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java (from r1728377, 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/SOAPModel.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java&p1=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java&r1=1728377&r2=1728383&rev=1728383&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/SOAPModel.java Wed Feb  3 22:31:45 2016
@@ -19,46 +19,19 @@
 
 package org.apache.axiom.soap.impl.common.builder;
 
-import java.io.Closeable;
-
 import org.apache.axiom.om.OMContainer;
-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.OMNode;
-import org.apache.axiom.om.OMSerializable;
-import org.apache.axiom.om.impl.builder.Detachable;
-import org.apache.axiom.om.impl.common.builder.NodePostProcessor;
-import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.common.builder.Model;
 import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPConstants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
-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.intf.AxiomSOAPEnvelope;
-import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
 import org.apache.axiom.soap.impl.intf.SOAPHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.xml.stream.XMLStreamReader;
-
-/**
- * Internal implementation class.
- */
-public class StAXSOAPModelBuilder extends StAXOMBuilder implements SOAPModelBuilder {
-    /**
-     * 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;
-
+public final class SOAPModel implements Model {
     private SOAPHelper soapHelper;
 
     /** Field headerPresent */
@@ -68,39 +41,14 @@ public class StAXSOAPModelBuilder extend
     private boolean bodyPresent = false;
 
     /** Field log */
-    private static final Log log = LogFactory.getLog(StAXSOAPModelBuilder.class);
+    private static final Log log = LogFactory.getLog(SOAPModel.class);
 
     private boolean processingFault = false;
 
     private SOAPBuilderHelper builderHelper;
 
-    public StAXSOAPModelBuilder(OMMetaFactory metaFactory, XMLStreamReader parser,
-            boolean autoClose, Detachable detachable, Closeable closeable) {
-        super(metaFactory.getOMFactory(), parser, autoClose, detachable, closeable, SOAPPayloadSelector.INSTANCE);
-        this.metaFactory = metaFactory;
-        // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
-        // SOAPEnvelope. Register a post-processor that does the necessary updates on the
-        // SOAPMessage.
-        addNodePostProcessor(new NodePostProcessor() {
-            private AxiomSOAPMessage message;
-            
-            @Override
-            public void postProcessNode(OMSerializable node) {
-                if (node instanceof AxiomSOAPMessage) {
-                    message = (AxiomSOAPMessage)node;
-                } else if (message != null && node instanceof AxiomSOAPEnvelope) {
-                    message.initSOAPFactory((SOAPFactory)((AxiomSOAPEnvelope)node).getOMFactory());
-                }
-            }
-        });
-    }
-    
-    public SOAPEnvelope getSOAPEnvelope() throws OMException {
-        return (SOAPEnvelope)getDocumentElement();
-    }
-
     @Override
-    protected Class<? extends AxiomElement> determineElementType(OMContainer parent,
+    public Class<? extends AxiomElement> determineElementType(OMContainer parent,
             int elementLevel, String namespaceURI, String localName) {
         Class<? extends AxiomElement> elementType;
         if (elementLevel == 1) {
@@ -192,32 +140,10 @@ public class StAXSOAPModelBuilder extend
     }
 
     private String getSenderFaultCode() {
-        return getSOAPEnvelope().getVersion().getSenderFaultCode().getLocalPart();
+        return soapHelper.getVersion().getSenderFaultCode().getLocalPart();
     }
 
     private String getReceiverFaultCode() {
-        return getSOAPEnvelope().getVersion().getReceiverFaultCode().getLocalPart();
-    }
-
-    protected OMDocument createDocument() {
-        return ((OMMetaFactoryEx)metaFactory).createSOAPMessage(this);
-    }
-
-    /** Method createDTD. Overriding the default behaviour as a SOAPMessage should not have a DTD. */
-    protected OMNode createDTD() throws OMException {
-        throw new SOAPProcessingException("SOAP message MUST NOT contain a Document Type Declaration(DTD)");
-    }
-
-    /** Method createPI. Overriding the default behaviour as a SOAP Message should not have a PI. */
-    protected OMNode createPI() throws OMException {
-        throw new SOAPProcessingException("SOAP message MUST NOT contain Processing Instructions(PI)");
-    }
-
-    protected OMNode createEntityReference() {
-        throw new SOAPProcessingException("A SOAP message cannot contain entity references because it must not have a DTD");
-    }
-
-    public SOAPMessage getSOAPMessage() {
-        return (SOAPMessage)getDocument();
+        return soapHelper.getVersion().getReceiverFaultCode().getLocalPart();
     }
 }

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=1728383&r1=1728382&r2=1728383&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 Wed Feb  3 22:31:45 2016
@@ -21,9 +21,7 @@ package org.apache.axiom.soap.impl.commo
 
 import java.io.Closeable;
 
-import org.apache.axiom.om.OMContainer;
 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.OMNode;
@@ -31,10 +29,6 @@ import org.apache.axiom.om.OMSerializabl
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.common.builder.NodePostProcessor;
 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.SOAP12Constants;
-import org.apache.axiom.soap.SOAPConstants;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPMessage;
@@ -43,9 +37,6 @@ import org.apache.axiom.soap.SOAPProcess
 import org.apache.axiom.soap.impl.builder.OMMetaFactoryEx;
 import org.apache.axiom.soap.impl.intf.AxiomSOAPEnvelope;
 import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
-import org.apache.axiom.soap.impl.intf.SOAPHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 import javax.xml.stream.XMLStreamReader;
 
@@ -59,24 +50,10 @@ public class StAXSOAPModelBuilder extend
      */
     private OMMetaFactory metaFactory;
 
-    private SOAPHelper soapHelper;
-
-    /** Field headerPresent */
-    private boolean headerPresent = false;
-
-    /** Field bodyPresent */
-    private boolean bodyPresent = false;
-
-    /** Field log */
-    private static final Log log = LogFactory.getLog(StAXSOAPModelBuilder.class);
-
-    private boolean processingFault = false;
-
-    private SOAPBuilderHelper builderHelper;
-
     public StAXSOAPModelBuilder(OMMetaFactory metaFactory, XMLStreamReader parser,
             boolean autoClose, Detachable detachable, Closeable closeable) {
-        super(metaFactory.getOMFactory(), parser, autoClose, detachable, closeable, SOAPPayloadSelector.INSTANCE);
+        super(metaFactory.getOMFactory(), parser, autoClose, detachable, closeable, new SOAPModel(),
+                SOAPPayloadSelector.INSTANCE);
         this.metaFactory = metaFactory;
         // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
         // SOAPEnvelope. Register a post-processor that does the necessary updates on the
@@ -99,106 +76,6 @@ public class StAXSOAPModelBuilder extend
         return (SOAPEnvelope)getDocumentElement();
     }
 
-    @Override
-    protected Class<? extends AxiomElement> determineElementType(OMContainer parent,
-            int elementLevel, String namespaceURI, String localName) {
-        Class<? extends AxiomElement> elementType;
-        if (elementLevel == 1) {
-
-            // Now I've found a SOAP Envelope, now create SOAPEnvelope here.
-
-            if (!localName.equals(SOAPConstants.SOAPENVELOPE_LOCAL_NAME)) {
-                throw new SOAPProcessingException("First Element must contain the local name, "
-                        + SOAPConstants.SOAPENVELOPE_LOCAL_NAME + " , but found " + localName,
-                        SOAPConstants.FAULT_CODE_SENDER);
-            }
-
-            // determine SOAP version and from that determine a proper factory here.
-            if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
-                soapHelper = SOAPHelper.SOAP12;
-                log.debug("Starting to process SOAP 1.2 message");
-            } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(namespaceURI)) {
-                soapHelper = SOAPHelper.SOAP11;
-                log.debug("Starting to process SOAP 1.1 message");
-            } else {
-                throw new SOAPProcessingException(
-                        "Only SOAP 1.1 or SOAP 1.2 messages are supported in the" +
-                                " system", SOAPConstants.FAULT_CODE_VERSION_MISMATCH);
-            }
-
-            elementType = soapHelper.getEnvelopeClass();
-        } else if (elementLevel == 2) {
-            if (soapHelper.getEnvelopeURI().equals(namespaceURI)) {
-                // this is either a header or a body
-                if (localName.equals(SOAPConstants.HEADER_LOCAL_NAME)) {
-                    if (headerPresent) {
-                        throw new SOAPProcessingException("Multiple headers encountered!",
-                                                          getSenderFaultCode());
-                    }
-                    if (bodyPresent) {
-                        throw new SOAPProcessingException("Header Body wrong order!",
-                                                          getSenderFaultCode());
-                    }
-                    headerPresent = true;
-                    elementType = soapHelper.getHeaderClass();
-                } else if (localName.equals(SOAPConstants.BODY_LOCAL_NAME)) {
-                    if (bodyPresent) {
-                        throw new SOAPProcessingException("Multiple body elements encountered",
-                                                          getSenderFaultCode());
-                    }
-                    bodyPresent = true;
-                    elementType = soapHelper.getBodyClass();
-                } else {
-                    throw new SOAPProcessingException(localName + " is not supported here.",
-                                                      getSenderFaultCode());
-                }
-            } else if (soapHelper == SOAPHelper.SOAP11 && bodyPresent) {
-                elementType = AxiomElement.class;
-            } else {
-                throw new SOAPProcessingException("Disallowed element found inside Envelope : {"
-                        + namespaceURI + "}" + localName);
-            }
-        } else if ((elementLevel == 3)
-                &&
-                ((OMElement)parent).getLocalName().equals(SOAPConstants.HEADER_LOCAL_NAME)) {
-
-            // this is a headerblock
-            try {
-                elementType = soapHelper.getHeaderBlockClass();
-            } catch (SOAPProcessingException e) {
-                throw new SOAPProcessingException("Can not create SOAPHeader block",
-                                                  getReceiverFaultCode(), e);
-            }
-        } else if ((elementLevel == 3) &&
-                ((OMElement)parent).getLocalName().equals(SOAPConstants.BODY_LOCAL_NAME) &&
-                localName.equals(SOAPConstants.BODY_FAULT_LOCAL_NAME) &&
-                soapHelper.getEnvelopeURI().equals(namespaceURI)) {
-            // this is a SOAP fault
-            elementType = soapHelper.getFaultClass();
-            processingFault = true;
-            if (soapHelper == SOAPHelper.SOAP12) {
-                builderHelper = new SOAP12BuilderHelper();
-            } else if (soapHelper == SOAPHelper.SOAP11) {
-                builderHelper = new SOAP11BuilderHelper();
-            }
-
-        } else if (elementLevel > 3 && processingFault) {
-            elementType = builderHelper.handleEvent((OMElement)parent, elementLevel, namespaceURI, localName);
-        } else {
-            // this is neither of above. Just create an element
-            elementType = AxiomElement.class;
-        }
-        return elementType;
-    }
-
-    private String getSenderFaultCode() {
-        return getSOAPEnvelope().getVersion().getSenderFaultCode().getLocalPart();
-    }
-
-    private String getReceiverFaultCode() {
-        return getSOAPEnvelope().getVersion().getReceiverFaultCode().getLocalPart();
-    }
-
     protected OMDocument createDocument() {
         return ((OMMetaFactoryEx)metaFactory).createSOAPMessage(this);
     }

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=1728383&r1=1728382&r2=1728383&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 Wed Feb  3 22:31:45 2016
@@ -26,11 +26,10 @@ import org.apache.abdera.model.Element;
 import org.apache.abdera.parser.ParseException;
 import org.apache.abdera.parser.ParserOptions;
 import org.apache.abdera.util.Constants;
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.impl.builder.Detachable;
+import org.apache.axiom.om.impl.common.builder.PayloadSelector;
 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 {
@@ -39,7 +38,8 @@ public class FOMBuilder extends StAXOMBu
     private final ParserOptions parserOptions;
 
     public FOMBuilder(FOMFactory factory, XMLStreamReader parser, ParserOptions parserOptions) {
-        super(factory, new FOMStAXFilter(parser, parserOptions), false, (Detachable)null, (Closeable)null);
+        super(factory, new FOMStAXFilter(parser, parserOptions), false, (Detachable)null, (Closeable)null,
+                factory, PayloadSelector.DEFAULT);
         this.parserOptions = parserOptions;
         this.fomfactory = factory;
     }
@@ -63,12 +63,6 @@ public class FOMBuilder extends StAXOMBu
         }
     }
 
-    @Override
-    protected Class<? extends AxiomElement> determineElementType(OMContainer parent,
-            int elementLevel, String namespaceURI, String localName) {
-        return fomfactory.determineElementType(parent, namespaceURI, localName);
-    }
-
     public <T extends Element> Document<T> getFomDocument() {
         // For compatibility with earlier Abdera versions, force creation of the document element.
         // Note that the only known case where this has a visible effect is when the document is

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=1728383&r1=1728382&r2=1728383&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 Wed Feb  3 22:31:45 2016
@@ -60,11 +60,12 @@ import org.apache.axiom.fom.impl.FOMNode
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.common.builder.Model;
 import org.apache.axiom.om.impl.common.factory.OMFactoryImpl;
 import org.apache.axiom.util.xml.QNameMap;
 
 @SuppressWarnings( {"unchecked", "deprecation"})
-public class FOMFactory extends OMFactoryImpl implements AbderaFactory, Constants, ExtensionFactory {
+public class FOMFactory extends OMFactoryImpl implements AbderaFactory, Constants, ExtensionFactory, Model {
     private static final QNameMap<Class<? extends FOMElement>> elementTypeMap;
     
     static {
@@ -508,7 +509,8 @@ public class FOMFactory extends OMFactor
         return createElement(elementType, qname, parent);
     }
 
-    protected Class<? extends FOMElement> determineElementType(OMContainer parent, String namespaceURI, String localName) {
+    @Override
+    public Class<? extends FOMElement> determineElementType(OMContainer parent, int elementLevel, String namespaceURI, String localName) {
         Class<? extends FOMElement> elementType = elementTypeMap.get(namespaceURI, localName);
         if (elementType != null) {
             return elementType;