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/06 01:47:56 UTC

svn commit: r1728782 - in /webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom: om/impl/common/builder/ om/impl/common/factory/ om/impl/intf/ soap/impl/factory/

Author: veithen
Date: Sat Feb  6 00:47:55 2016
New Revision: 1728782

URL: http://svn.apache.org/viewvc?rev=1728782&view=rev
Log:
Use BuilderHandler to create elements as well.

Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/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/AbstractOMMetaFactory.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/om/impl/intf/OMFactoryEx.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1728782&r1=1728781&r2=1728782&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sat Feb  6 00:47:55 2016
@@ -25,6 +25,7 @@ import java.util.Map;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMSerializable;
+import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.AxiomSemantics;
 import org.apache.axiom.om.impl.intf.AxiomCDATASection;
 import org.apache.axiom.om.impl.intf.AxiomCharacterDataNode;
@@ -33,6 +34,7 @@ import org.apache.axiom.om.impl.intf.Axi
 import org.apache.axiom.om.impl.intf.AxiomContainer;
 import org.apache.axiom.om.impl.intf.AxiomDocType;
 import org.apache.axiom.om.impl.intf.AxiomDocument;
+import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.om.impl.intf.AxiomEntityReference;
 import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
 import org.apache.commons.logging.Log;
@@ -43,6 +45,7 @@ public final class BuilderHandler {
     
     public final NodeFactory nodeFactory;
     public final Model model;
+    private final OMXMLParserWrapper builder;
     public AxiomContainer target;
     // returns the state of completion
     public boolean done;
@@ -65,9 +68,10 @@ public final class BuilderHandler {
     
     private ArrayList<NodePostProcessor> nodePostProcessors;
 
-    public BuilderHandler(NodeFactory nodeFactory, Model model) {
+    public BuilderHandler(NodeFactory nodeFactory, Model model, OMXMLParserWrapper builder) {
         this.nodeFactory = nodeFactory;
         this.model = model;
+        this.builder = builder;
     }
 
     public void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
@@ -100,6 +104,17 @@ public final class BuilderHandler {
         addChild(node);
     }
     
+    public AxiomElement startElement(String namespaceURI, String localName, String prefix) {
+        elementLevel++;
+        AxiomElement element = nodeFactory.createNode(model.determineElementType(
+                target, elementLevel, namespaceURI, localName));
+        element.coreSetBuilder(builder);
+        element.initName(localName, /*ns*/ null, false);
+        addChild(element);
+        target = element;
+        return element;
+    }
+    
     public void processCharacterData(Object data, boolean ignorable) {
         AxiomCharacterDataNode node = nodeFactory.createNode(AxiomCharacterDataNode.class);
         node.coreSetCharacterData(data);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java?rev=1728782&r1=1728781&r2=1728782&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java Sat Feb  6 00:47:55 2016
@@ -44,7 +44,7 @@ public class PushOMBuilder extends Abstr
 
     public PushOMBuilder(AxiomSourcedElement root) throws XMLStreamException {
         this.root = root;
-        handler = new BuilderHandler(root.coreGetNodeFactory(), PlainXMLModel.INSTANCE);
+        handler = new BuilderHandler(root.coreGetNodeFactory(), PlainXMLModel.INSTANCE, null);
         factory = (OMFactoryEx)root.getOMFactory();
         // Seed the namespace context with the namespace context from the parent
         OMContainer parent = root.getParent();
@@ -112,9 +112,7 @@ public class PushOMBuilder extends Abstr
             root.validateName(prefix, localName, namespaceURI);
             handler.target = root;
         } else {
-            // We use the createOMElement variant that takes a OMXMLParserWrapper parameter and
-            // don't pass the namespace. This avoids creation of a namespace declaration.
-            handler.target = factory.createAxiomElement(AxiomElement.class, localName, handler.target, null);
+            handler.startElement(namespaceURI, localName, prefix);
         }
         if (ns != null) {
             ((OMElement)handler.target).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=1728782&r1=1728781&r2=1728782&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 Feb  6 00:47:55 2016
@@ -138,7 +138,7 @@ public class StAXOMBuilder implements Bu
 
     private StAXOMBuilder(NodeFactory nodeFactory, OMFactory omFactory, XMLStreamReader parser, String encoding,
             boolean autoClose, Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
-        handler = new BuilderHandler(nodeFactory, model);
+        handler = new BuilderHandler(nodeFactory, model, this);
         omfactory = (OMFactoryEx)omFactory;
         this.parser = parser;
         this.autoClose = autoClose;
@@ -592,7 +592,7 @@ public class StAXOMBuilder implements Bu
             
             switch (token) {
                 case XMLStreamConstants.START_ELEMENT: {
-                    handler.postProcessNode(createNextOMElement());
+                    createNextOMElement();
                     break;
                 }
                 case XMLStreamConstants.CHARACTERS:
@@ -665,12 +665,8 @@ public class StAXOMBuilder implements Bu
             }
         }
         if (newElement == null) {
-            handler.elementLevel++;
-            newElement = omfactory.createAxiomElement(
-                    handler.model.determineElementType(handler.target, handler.elementLevel, parser.getNamespaceURI(), parser.getLocalName()),
-                    parser.getLocalName(), handler.target, this);
+            newElement = handler.startElement(parser.getNamespaceURI(), parser.getLocalName(), parser.getPrefix());
             populateOMElement(newElement);
-            handler.target = (AxiomContainer)newElement;
         }
         return newElement;
     }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java?rev=1728782&r1=1728781&r2=1728782&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java Sat Feb  6 00:47:55 2016
@@ -207,9 +207,10 @@ public abstract class AbstractOMMetaFact
         return new StAXOMBuilder(nodeFactory, omFactory, new DOMXMLStreamReader(node, expandEntityReferences), true, (Detachable)null, (Closeable)null);
     }
 
+    // TODO: don't need the omFactory argument anymore
     public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, SAXSource source,
             boolean expandEntityReferences) {
-        return new SAXOMBuilder(nodeFactory, omFactory, PlainXMLModel.INSTANCE, source, expandEntityReferences);
+        return new SAXOMBuilder(nodeFactory, PlainXMLModel.INSTANCE, source, expandEntityReferences);
     }
 
     public OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration,

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=1728782&r1=1728781&r2=1728782&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 Feb  6 00:47:55 2016
@@ -216,26 +216,20 @@ public class OMFactoryImpl implements OM
     }
 
     protected final <T extends AxiomElement> T createAxiomElement(Class<T> type,
-            OMContainer parent, String localName, OMNamespace ns, OMXMLParserWrapper builder,
-            boolean generateNSDecl) {
+            OMContainer parent, String localName, OMNamespace ns, OMXMLParserWrapper builder) {
         T element = createNode(type);
         element.coreSetBuilder(builder);
         if (parent != null) {
             ((AxiomContainer)parent).addChild(element, builder != null);
         }
-        element.initName(localName, ns, generateNSDecl);
+        element.initName(localName, ns, true);
         return element;
     }
 
     public final OMElement createOMElement(String localName, OMNamespace ns, OMContainer parent) {
-        return createAxiomElement(AxiomElement.class, parent, localName, ns, null, true);
+        return createAxiomElement(AxiomElement.class, parent, localName, ns, null);
     }
 
-    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) {
         AxiomElement element = createNode(AxiomElement.class);
         if (parent != null) {

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=1728782&r1=1728781&r2=1728782&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 Feb  6 00:47:55 2016
@@ -23,7 +23,6 @@ import org.apache.axiom.core.NodeFactory
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.OMContentHandler;
@@ -32,7 +31,6 @@ import org.apache.axiom.om.impl.common.b
 import org.apache.axiom.om.impl.common.builder.Model;
 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;
 
@@ -45,12 +43,9 @@ public class SAXOMBuilder extends OMCont
     private final BuilderHandler handler;
     private final SAXSource source;
     
-    private final OMFactoryEx factory;
-
-    public SAXOMBuilder(NodeFactory nodeFactory, OMFactory factory, Model model, SAXSource source, boolean expandEntityReferences) {
+    public SAXOMBuilder(NodeFactory nodeFactory, Model model, SAXSource source, boolean expandEntityReferences) {
         super(expandEntityReferences);
-        handler = new BuilderHandler(nodeFactory, model);
-        this.factory = (OMFactoryEx)factory;
+        handler = new BuilderHandler(nodeFactory, model, this);
         this.source = source;
     }
     
@@ -149,12 +144,11 @@ public class SAXOMBuilder extends OMCont
 
     protected OMElement createOMElement(String localName,
             String namespaceURI, String prefix, String[] namespaces, int namespaceCount) {
-        AxiomElement element = factory.createAxiomElement(AxiomElement.class, localName, handler.target, this);
+        AxiomElement element = handler.startElement(null, localName, null);
         for (int i = 0; i < namespaceCount; i++) {
             element.addNamespaceDeclaration(namespaces[2*i+1], namespaces[2*i]);
         }
         BuilderUtil.setNamespace(element, namespaceURI, prefix);
-        handler.target = element;
         return element;
     }
 

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/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?rev=1728782&r1=1728781&r2=1728782&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java Sat Feb  6 00:47:55 2016
@@ -18,20 +18,14 @@
  */
 package org.apache.axiom.om.impl.intf;
 
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMXMLParserWrapper;
 
 /**
  * Interface that is used internally by Axiom and that should not be considered being part of the
  * public API.
  */
 public interface OMFactoryEx extends OMFactory {
-
-    <T extends AxiomElement> T createAxiomElement(Class<T> type, String localName,
-            OMContainer parent, OMXMLParserWrapper builder);
-
     /**
      * This method is intended only to be used by Axiom intenrals when merging nodes from different
      * Axiom implementations.

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java?rev=1728782&r1=1728781&r2=1728782&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java Sat Feb  6 00:47:55 2016
@@ -98,7 +98,7 @@ public abstract class SOAPFactoryImpl ex
     }
     
     public final SOAPEnvelope createSOAPEnvelope(OMNamespace ns) {
-        return createAxiomElement(getSOAPHelper().getEnvelopeClass(), null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, ns, null, true);
+        return createAxiomElement(getSOAPHelper().getEnvelopeClass(), null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, ns, null);
     }
 
     public final SOAPHeader createSOAPHeader(SOAPEnvelope parent) {
@@ -111,11 +111,11 @@ public abstract class SOAPFactoryImpl ex
     }
 
     public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns, SOAPHeader parent) {
-        return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), parent, localName, ns, null, true);
+        return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), parent, localName, ns, null);
     }
 
     public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns) {
-        return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), null, localName, ns, null, true);
+        return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), null, localName, ns, null);
     }
 
     public final SOAPHeaderBlock createSOAPHeaderBlock(OMDataSource source) {