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/07 11:23:24 UTC

svn commit: r1728942 - in /webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common: Handler.java OMContentHandler.java SAXResultContentHandler.java builder/StAXOMBuilder.java factory/SAXOMBuilder.java

Author: veithen
Date: Sun Feb  7 10:23:23 2016
New Revision: 1728942

URL: http://svn.apache.org/viewvc?rev=1728942&view=rev
Log:
Some refactoring and cleanup.

Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Handler.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/OMContentHandler.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.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/SAXOMBuilder.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Handler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Handler.java?rev=1728942&r1=1728941&r2=1728942&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Handler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Handler.java Sun Feb  7 10:23:23 2016
@@ -18,8 +18,6 @@
  */
 package org.apache.axiom.om.impl.common;
 
-import org.apache.axiom.om.OMElement;
-
 // TODO: transitional interface that should eventually converge with BuilderHandler
 public interface Handler {
     void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding, boolean standalone);
@@ -29,13 +27,16 @@ public interface Handler {
     void createDocumentTypeDeclaration(String rootName, String publicId,
             String systemId, String internalSubset);
 
-    OMElement createOMElement(String localName,
-            String namespaceURI, String prefix, String[] namespaces, int namespaceCount);
+    void startElement(String namespaceURI, String localName, String prefix);
     
     void endElement();
     
     void createAttribute(String namespaceURI, String localName, String prefix, String value, String type, boolean specified);
     
+    void createNamespaceDeclaration(String prefix, String namespaceURI);
+    
+    void attributesCompleted();
+    
     void createOMText(String text, int type);
     
     void createProcessingInstruction(String piTarget, String piData);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/OMContentHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/OMContentHandler.java?rev=1728942&r1=1728941&r2=1728942&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/OMContentHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/OMContentHandler.java Sun Feb  7 10:23:23 2016
@@ -238,7 +238,10 @@ public final class OMContentHandler impl
                 localName = qName.substring(qName.indexOf(':') + 1);
             int idx = qName.indexOf(':');
             String prefix = idx == -1 ? "" : qName.substring(0, idx);
-            handler.createOMElement(localName, namespaceURI, prefix, namespaces, namespaceCount);
+            handler.startElement(namespaceURI, localName, prefix);
+            for (int i = 0; i < namespaceCount; i++) {
+                handler.createNamespaceDeclaration(namespaces[2*i], namespaces[2*i+1]);
+            }
             namespaceCount = 0;
     
             int j = atts.getLength();
@@ -256,6 +259,7 @@ public final class OMContentHandler impl
                     handler.createAttribute(atts.getURI(i), atts.getLocalName(i), attrPrefix, atts.getValue(i), atts.getType(i), true);
                 }
             }
+            handler.attributesCompleted();
         }
     }
 

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java?rev=1728942&r1=1728941&r2=1728942&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/SAXResultContentHandler.java Sun Feb  7 10:23:23 2016
@@ -51,21 +51,9 @@ public final  class SAXResultContentHand
         }
     }
 
-    public OMElement createOMElement(String localName, String namespaceURI,
-            String prefix, String[] namespaces, int namespaceCount) {
+    public void startElement(String namespaceURI, String localName, String prefix) {
         // TODO: inefficient: we should not create a new OMNamespace instance every time
-        OMElement element = factory.createOMElement(localName, factory.createOMNamespace(namespaceURI, prefix), target);
-        for (int i=0; i<namespaceCount; i++) {
-            String nsPrefix = namespaces[2*i];
-            String nsURI = namespaces[2*i+1];
-            if (nsPrefix.length() == 0) {
-                element.declareDefaultNamespace(nsURI);
-            } else {
-                element.declareNamespace(nsURI, nsPrefix);
-            }
-        }
-        target = element;
-        return element;
+        target = factory.createOMElement(localName, factory.createOMNamespace(namespaceURI, prefix), target);
     }
 
     public void endElement() {
@@ -89,6 +77,19 @@ public final  class SAXResultContentHand
         attr.setAttributeType(type);
     }
 
+    @Override
+    public void createNamespaceDeclaration(String prefix, String namespaceURI) {
+        if (prefix.isEmpty()) {
+            ((OMElement)target).declareDefaultNamespace(namespaceURI);
+        } else {
+            ((OMElement)target).declareNamespace(namespaceURI, prefix);
+        }
+    }
+
+    @Override
+    public void attributesCompleted() {
+    }
+
     public void createOMText(String text, int type) {
         factory.createOMText(target, text, type);
     }

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=1728942&r1=1728941&r2=1728942&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 Sun Feb  7 10:23:23 2016
@@ -27,7 +27,6 @@ import org.apache.axiom.om.OMContainer;
 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.impl.builder.Builder;
 import org.apache.axiom.om.impl.builder.CustomBuilder;
 import org.apache.axiom.om.impl.builder.CustomBuilderSupport;
@@ -159,24 +158,6 @@ public class StAXOMBuilder extends Abstr
         return s == null ? "" : s;
     }
     
-    /**
-     * Method processAttributes.
-     *
-     * @param node
-     */
-    private void processAttributes(OMElement node) {
-        int attribCount = parser.getAttributeCount();
-        for (int i = 0; i < attribCount; i++) {
-            handler.createAttribute(
-                    normalize(parser.getAttributeNamespace(i)),
-                    parser.getAttributeLocalName(i),
-                    normalize(parser.getAttributePrefix(i)),
-                    parser.getAttributeValue(i),
-                    parser.getAttributeType(i),
-                    parser.isAttributeSpecified(i));
-        }
-    }
-
     private void createOMText(int textType) {
         if (textType == XMLStreamConstants.CHARACTERS && dataHandlerReader != null && dataHandlerReader.isBinary()) {
             TextContent data;
@@ -591,9 +572,8 @@ public class StAXOMBuilder extends Abstr
     /**
      * Creates a new OMElement using either a CustomBuilder or 
      * the default Builder mechanism.
-     * @return TODO
      */
-    private OMNode createNextOMElement() {
+    private void createNextOMElement() {
         String namespaceURI = normalize(parser.getNamespaceURI());
         String localName = parser.getLocalName();
         String prefix = normalize(parser.getPrefix());
@@ -609,9 +589,26 @@ public class StAXOMBuilder extends Abstr
         }
         if (newElement == null) {
             newElement = handler.startElement(namespaceURI, localName, prefix);
-            populateOMElement(newElement);
+            for (int i = 0, count = parser.getNamespaceCount(); i < count; i++) {
+                handler.createNamespaceDeclaration(
+                        normalize(parser.getNamespacePrefix(i)),
+                        normalize(parser.getNamespaceURI(i)));
+            }
+            for (int i = 0, count = parser.getAttributeCount(); i < count; i++) {
+                handler.createAttribute(
+                        normalize(parser.getAttributeNamespace(i)),
+                        parser.getAttributeLocalName(i),
+                        normalize(parser.getAttributePrefix(i)),
+                        parser.getAttributeValue(i),
+                        parser.getAttributeType(i),
+                        parser.isAttributeSpecified(i));
+            }
+            handler.attributesCompleted();
+            Location location = parser.getLocation();
+            if (location != null) {
+                newElement.setLineNumber(location.getLineNumber());
+            }
         }
-        return newElement;
     }
     
     private OMElement createWithCustomBuilder(CustomBuilder customBuilder) {
@@ -654,25 +651,6 @@ public class StAXOMBuilder extends Abstr
         return node;
     }
     
-    /**
-     * Populate element with data from parser START_ELEMENT event. This is used when the source of
-     * data for an element needs to be parsed on demand. The supplied element must already be set to
-     * the proper name and namespace.
-     *
-     * @param node element to be populated
-     */
-    private void populateOMElement(OMElement node) {
-        // create the namespaces
-        processNamespaceData(node);
-        // fill in the attributes
-        processAttributes(node);
-        handler.attributesCompleted();
-        Location location = parser.getLocation();
-        if(location != null) {
-            node.setLineNumber(location.getLineNumber());
-        }
-    }
-
     private void createDTD() throws OMException {
         DTDReader dtdReader;
         try {
@@ -738,20 +716,6 @@ public class StAXOMBuilder extends Abstr
     }
 
     /**
-     * Method processNamespaceData.
-     *
-     * @param node
-     */
-    private void processNamespaceData(OMElement node) {
-        int namespaceCount = parser.getNamespaceCount();
-        for (int i = 0; i < namespaceCount; i++) {
-            handler.createNamespaceDeclaration(
-                    normalize(parser.getNamespacePrefix(i)),
-                    normalize(parser.getNamespaceURI(i)));
-        }
-    }
-
-    /**
      * Pushes the virtual parser ahead one token.
      * If a look ahead token was calculated it is returned.
      * @return next token

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=1728942&r1=1728941&r2=1728942&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 Sun Feb  7 10:23:23 2016
@@ -20,13 +20,11 @@
 package org.apache.axiom.om.impl.common.factory;
 
 import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.impl.common.Handler;
 import org.apache.axiom.om.impl.common.OMContentHandler;
 import org.apache.axiom.om.impl.common.builder.AbstractPushBuilder;
 import org.apache.axiom.om.impl.common.builder.Model;
-import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
@@ -83,15 +81,8 @@ public final class SAXOMBuilder extends
         handler.createDocumentTypeDeclaration(rootName, publicId, systemId, internalSubset);
     }
 
-    public OMElement createOMElement(String localName,
-            String namespaceURI, String prefix, String[] namespaces, int namespaceCount) {
-        AxiomElement element = handler.startElement(namespaceURI, localName, prefix);
-        for (int i = 0; i < namespaceCount; i++) {
-            handler.createNamespaceDeclaration(namespaces[2*i], namespaces[2*i+1]);
-        }
-        // TODO: not entirely correct, but should work
-        handler.attributesCompleted();
-        return element;
+    public void startElement(String namespaceURI, String localName, String prefix) {
+        handler.startElement(namespaceURI, localName, prefix);
     }
 
     public void endElement() {
@@ -129,4 +120,12 @@ public final class SAXOMBuilder extends
     public void createAttribute(String namespaceURI, String localName, String prefix, String value, String type, boolean specified) {
         handler.createAttribute(namespaceURI, localName, prefix, value, type, specified);
     }
+
+    public void createNamespaceDeclaration(String prefix, String namespaceURI) {
+        handler.createNamespaceDeclaration(prefix, namespaceURI);
+    }
+
+    public void attributesCompleted() {
+        handler.attributesCompleted();
+    }
 }