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/25 23:30:22 UTC

svn commit: r1732388 - in /webservices/axiom/trunk/aspects: core-aspects/src/main/java/org/apache/axiom/core/ core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/ om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/

Author: veithen
Date: Thu Feb 25 22:30:22 2016
New Revision: 1732388

URL: http://svn.apache.org/viewvc?rev=1732388&view=rev
Log:
Push some of the serialization logic to the core model and optimize it.

Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareAttributeSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareElementSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSUnawareAttributeSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNamespaceDeclarationSupport.aj
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java Thu Feb 25 22:30:22 2016
@@ -18,6 +18,9 @@
  */
 package org.apache.axiom.core;
 
+import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
+
 public interface CoreAttribute extends NonDeferringParentNode, CoreCharacterDataContainingParentNode {
     /**
      * Get the owner element of this attribute.
@@ -59,4 +62,6 @@ public interface CoreAttribute extends N
      *         of its owner element or if the attribute has no owner element
      */
     CoreAttribute coreGetPreviousAttribute();
+    
+    void coreSerialize(XmlHandler handler) throws CoreModelException, StreamException;
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareAttributeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareAttributeSupport.aj?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareAttributeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareAttributeSupport.aj Thu Feb 25 22:30:22 2016
@@ -18,11 +18,18 @@
  */
 package org.apache.axiom.core.impl.mixin;
 
+import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNSAwareAttribute;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
 
 public aspect CoreNSAwareAttributeSupport {
     public final NodeType CoreNSAwareAttribute.coreGetNodeType() {
         return NodeType.NS_AWARE_ATTRIBUTE;
     }
+
+    public final void CoreNSAwareAttribute.coreSerialize(XmlHandler handler) throws CoreModelException, StreamException {
+        handler.processAttribute(coreGetNamespaceURI(), coreGetLocalName(), coreGetPrefix(), coreGetCharacterData().toString(), coreGetType(), coreGetSpecified());
+    }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareElementSupport.aj?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSAwareElementSupport.aj Thu Feb 25 22:30:22 2016
@@ -18,8 +18,12 @@
  */
 package org.apache.axiom.core.impl.mixin;
 
+import org.apache.axiom.core.CoreAttribute;
+import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNSAwareElement;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
 
 public aspect CoreNSAwareElementSupport {
     public final NodeType CoreNSAwareElement.coreGetNodeType() {
@@ -33,4 +37,14 @@ public aspect CoreNSAwareElementSupport
     public final String CoreNSAwareElement.getImplicitPrefix(String namespaceURI) {
         return namespaceURI.equals(coreGetNamespaceURI()) ? coreGetPrefix() : null;
     }
+    
+    public final void CoreNSAwareElement.coreSerializeStartPart(XmlHandler handler) throws CoreModelException, StreamException {
+        handler.startElement(coreGetNamespaceURI(), coreGetLocalName(), coreGetPrefix());
+        CoreAttribute attr = coreGetFirstAttribute();
+        while (attr != null) {
+            attr.coreSerialize(handler);
+            attr = attr.coreGetNextAttribute();
+        }
+        handler.attributesCompleted();
+    }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSUnawareAttributeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSUnawareAttributeSupport.aj?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSUnawareAttributeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNSUnawareAttributeSupport.aj Thu Feb 25 22:30:22 2016
@@ -18,11 +18,19 @@
  */
 package org.apache.axiom.core.impl.mixin;
 
+import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNSUnawareAttribute;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
 
 public aspect CoreNSUnawareAttributeSupport {
     public final NodeType CoreNSUnawareAttribute.coreGetNodeType() {
         return NodeType.NS_UNAWARE_ATTRIBUTE;
     }
+
+    public final void CoreNSUnawareAttribute.coreSerialize(XmlHandler handler) throws CoreModelException, StreamException {
+        // TODO
+        throw new UnsupportedOperationException();
+    }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNamespaceDeclarationSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNamespaceDeclarationSupport.aj?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNamespaceDeclarationSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/mixin/CoreNamespaceDeclarationSupport.aj Thu Feb 25 22:30:22 2016
@@ -19,9 +19,12 @@
 package org.apache.axiom.core.impl.mixin;
 
 import org.apache.axiom.core.ClonePolicy;
+import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNamespaceDeclaration;
 import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.stream.StreamException;
+import org.apache.axiom.core.stream.XmlHandler;
 
 public aspect CoreNamespaceDeclarationSupport {
     public final NodeType CoreNamespaceDeclaration.coreGetNodeType() {
@@ -32,4 +35,8 @@ public aspect CoreNamespaceDeclarationSu
         // TODO: this is correct but bad for performance with the Axiom API
         coreSetDeclaredNamespace(((CoreNamespaceDeclaration)other).coreGetDeclaredPrefix(), "");
     }
+    
+    public final void CoreNamespaceDeclaration.coreSerialize(XmlHandler handler) throws CoreModelException, StreamException {
+        handler.processNamespaceDeclaration(coreGetDeclaredPrefix(), coreGetCharacterData().toString());
+    }
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj?rev=1732388&r1=1732387&r2=1732388&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomElementSupport.aj Thu Feb 25 22:30:22 2016
@@ -533,26 +533,11 @@ public aspect AxiomElementSupport {
     }
     
     public final void AxiomElement.defaultInternalSerialize(XmlHandler handler, boolean cache) throws StreamException {
-        OMNamespace ns = getNamespace();
-        if (ns == null) {
-            handler.startElement("", getLocalName(), "");
-        } else {
-            handler.startElement(ns.getNamespaceURI(), getLocalName(), ns.getPrefix());
+        try {
+            coreSerializeStartPart(handler);
+        } catch (CoreModelException ex) {
+            throw new StreamException(ex);
         }
-        for (Iterator<OMNamespace> it = getAllDeclaredNamespaces(); it.hasNext(); ) {
-            ns = it.next();
-            handler.processNamespaceDeclaration(ns.getPrefix(), ns.getNamespaceURI());
-        }
-        for (Iterator<OMAttribute> it = getAllAttributes(); it.hasNext(); ) {
-            OMAttribute attr = it.next();
-            ns = attr.getNamespace();
-            if (ns == null) {
-                handler.processAttribute("", attr.getLocalName(), "", attr.getAttributeValue(), attr.getAttributeType(), ((CoreAttribute)attr).coreGetSpecified());
-            } else {
-                handler.processAttribute(ns.getNamespaceURI(), attr.getLocalName(), ns.getPrefix(), attr.getAttributeValue(), attr.getAttributeType(), ((CoreAttribute)attr).coreGetSpecified());
-            }
-        }
-        handler.attributesCompleted();
         serializeChildren(handler, cache);
         handler.endElement();
     }