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();
}