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 2021/11/28 22:04:24 UTC
[ws-axiom] branch master updated: Eliminate most usages of the old NodeFactory
This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push:
new fbe7421 Eliminate most usages of the old NodeFactory
fbe7421 is described below
commit fbe7421649a9596b50cc53778bfa7211f9a2185d
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Sun Nov 28 22:02:41 2021 +0000
Eliminate most usages of the old NodeFactory
---
implementations/axiom-dom/pom.xml | 28 ++++
.../om/impl/dom/factory/OMDOMMetaFactory.java | 13 +-
implementations/axiom-impl/pom.xml | 24 +++
.../impl/llom/factory/OMLinkedListMetaFactory.java | 13 +-
.../java/org/apache/axiom/core/CoreElement.java | 2 +-
.../axiom/core/impl/builder/BuildableContext.java | 32 ++--
.../axiom/core/impl/builder/BuilderHandler.java | 8 +-
.../axiom/core/impl/builder/BuilderImpl.java | 4 +-
.../org/apache/axiom/core/impl/builder/Model.java | 14 +-
.../axiom/core/impl/builder/PlainXMLModel.java | 8 +-
.../axiom/core/impl/mixin/CoreElementMixin.java | 4 +-
mixins/om-mixins/pom.xml | 26 ++++
.../om/impl/common/factory/OMFactoryImpl.java | 60 ++++----
.../common/factory/meta/AbstractOMMetaFactory.java | 6 +-
.../impl/common/factory/meta/BuilderFactory.java | 12 +-
.../axiom/om/impl/intf/AxiomInformationItem.java | 5 +
.../AxiomElementType.java} | 10 +-
.../om/impl/intf/factory/AxiomNodeFactory.java | 166 +++++++++++++++++++++
.../om/impl/mixin/AxiomSourcedElementMixin.java | 4 +-
.../soap/impl/common/SOAPHeaderBlockMapper.java | 5 +-
.../impl/common/builder/SOAP11BuilderHelper.java | 24 ++-
.../impl/common/builder/SOAP12BuilderHelper.java | 38 ++---
.../impl/common/builder/SOAPBuilderHelper.java | 3 +-
.../axiom/soap/impl/common/builder/SOAPModel.java | 33 ++--
.../axiom/soap/impl/factory/SOAP11Factory.java | 4 +-
.../axiom/soap/impl/factory/SOAP12Factory.java | 16 +-
.../axiom/soap/impl/factory/SOAPFactoryImpl.java | 39 ++---
.../apache/axiom/soap/impl/intf/SOAPHelper.java | 91 +++++------
.../axiom/soap/impl/intf/soap11/SOAP11Helper.java | 19 +--
.../axiom/soap/impl/intf/soap12/SOAP12Helper.java | 19 +--
30 files changed, 504 insertions(+), 226 deletions(-)
diff --git a/implementations/axiom-dom/pom.xml b/implementations/axiom-dom/pom.xml
index cb8410e..529836c 100644
--- a/implementations/axiom-dom/pom.xml
+++ b/implementations/axiom-dom/pom.xml
@@ -131,6 +131,7 @@
<interface>org.apache.axiom.om.impl.dom.intf.DOOMProcessingInstruction</interface>
<interface>org.apache.axiom.om.impl.dom.intf.DOOMSourcedElement</interface>
<interface>org.apache.axiom.om.impl.dom.intf.DOOMText</interface>
+ <interface>org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory</interface>
<interface>org.apache.axiom.soap.impl.dom.intf.DOOMSOAPMessage</interface>
<interface>org.apache.axiom.soap.impl.dom.intf.soap11.DOOMSOAP11Body</interface>
<interface>org.apache.axiom.soap.impl.dom.intf.soap11.DOOMSOAP11Envelope</interface>
@@ -165,6 +166,10 @@
<outputPackage>org.apache.axiom.om.impl.dom</outputPackage>
</packageMapping>
<packageMapping>
+ <interfacePackage>org.apache.axiom.om.impl.intf.factory</interfacePackage>
+ <outputPackage>org.apache.axiom.om.impl.dom.factory</outputPackage>
+ </packageMapping>
+ <packageMapping>
<interfacePackage>org.apache.axiom.soap.impl.intf</interfacePackage>
<outputPackage>org.apache.axiom.soap.impl.dom</outputPackage>
</packageMapping>
@@ -231,6 +236,29 @@
</instructions>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.github.veithen.phos</groupId>
+ <artifactId>enforcer-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <ignore>
+ <!-- TODO: inject the reference to the singleton into mixins directly -->
+ org.apache.axiom.om.impl.dom.CoreNodeImpl -> org.apache.axiom.om.impl.dom.factory.DOOMNodeFactory,
+ org.apache.axiom.om.impl.dom.CoreNodeImpl -> org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory,
+ org.apache.axiom.om.impl.dom.DOOMNSAwareElementImpl -> org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl,
+ org.apache.axiom.om.impl.dom.CoreChildNodeImpl -> org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl,
+ org.apache.axiom.om.impl.dom.AxiomCoreParentNodeImpl -> org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl,
+ org.apache.axiom.om.impl.dom.DOOMNSAwareAttributeImpl -> org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl,
+ org.apache.axiom.om.impl.dom.DOOMNamespaceDeclarationImpl -> org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl
+ </ignore>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
diff --git a/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java b/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
index 7386745..4d9b1a2 100644
--- a/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
+++ b/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
@@ -23,16 +23,27 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.axiom.om.dom.DOMMetaFactory;
import org.apache.axiom.om.impl.common.factory.meta.AbstractOMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.w3c.dom.DOMImplementation;
/**
* Meta factory for the DOOM implementation.
*/
public class OMDOMMetaFactory extends AbstractOMMetaFactory implements DOMMetaFactory {
+ private static final AxiomNodeFactory NODE_FACTORY;
+
+ static {
+ try {
+ NODE_FACTORY = (AxiomNodeFactory)OMDOMMetaFactory.class.getClassLoader().loadClass("org.apache.axiom.om.impl.dom.factory.AxiomNodeFactoryImpl").getField("INSTANCE").get(null);
+ } catch (ReflectiveOperationException ex) {
+ throw new Error(ex);
+ }
+ }
+
public static final OMDOMMetaFactory INSTANCE = new OMDOMMetaFactory();
private OMDOMMetaFactory() {
- super(DOOMNodeFactory.INSTANCE);
+ super(NODE_FACTORY);
}
@Override
diff --git a/implementations/axiom-impl/pom.xml b/implementations/axiom-impl/pom.xml
index e79fe91..a7252c1 100644
--- a/implementations/axiom-impl/pom.xml
+++ b/implementations/axiom-impl/pom.xml
@@ -114,6 +114,7 @@
<interface>org.apache.axiom.om.impl.intf.AxiomNamespaceDeclaration</interface>
<interface>org.apache.axiom.om.impl.intf.AxiomProcessingInstruction</interface>
<interface>org.apache.axiom.om.impl.intf.AxiomSourcedElement</interface>
+ <interface>org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory</interface>
<interface>org.apache.axiom.soap.impl.intf.AxiomSOAPMessage</interface>
<interface>org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Body</interface>
<interface>org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Envelope</interface>
@@ -148,6 +149,10 @@
<outputPackage>org.apache.axiom.om.impl.llom</outputPackage>
</packageMapping>
<packageMapping>
+ <interfacePackage>org.apache.axiom.om.impl.intf.factory</interfacePackage>
+ <outputPackage>org.apache.axiom.om.impl.llom.factory</outputPackage>
+ </packageMapping>
+ <packageMapping>
<interfacePackage>org.apache.axiom.soap.impl.intf</interfacePackage>
<outputPackage>org.apache.axiom.soap.impl.llom</outputPackage>
</packageMapping>
@@ -193,6 +198,25 @@
</instructions>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.github.veithen.phos</groupId>
+ <artifactId>enforcer-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <ignore>
+ <!-- TODO: inject the reference to the singleton into mixins directly -->
+ org.apache.axiom.om.impl.llom.CoreNodeImpl -> org.apache.axiom.om.impl.llom.factory.AxiomNodeFactoryImpl,
+ org.apache.axiom.om.impl.llom.CoreNodeImpl -> org.apache.axiom.om.impl.llom.factory.LLOMNodeFactory,
+ org.apache.axiom.om.impl.llom.CoreNodeImpl -> org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory
+ </ignore>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
diff --git a/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java b/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
index efa1a5e..a81e88a 100644
--- a/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
+++ b/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
@@ -20,14 +20,25 @@
package org.apache.axiom.om.impl.llom.factory;
import org.apache.axiom.om.impl.common.factory.meta.AbstractOMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
/**
* Meta factory for the linked list OM implementation.
*/
public class OMLinkedListMetaFactory extends AbstractOMMetaFactory {
+ private static final AxiomNodeFactory NODE_FACTORY;
+
+ static {
+ try {
+ NODE_FACTORY = (AxiomNodeFactory)OMLinkedListMetaFactory.class.getClassLoader().loadClass("org.apache.axiom.om.impl.llom.factory.AxiomNodeFactoryImpl").getField("INSTANCE").get(null);
+ } catch (ReflectiveOperationException ex) {
+ throw new Error(ex);
+ }
+ }
+
public static final OMLinkedListMetaFactory INSTANCE = new OMLinkedListMetaFactory();
private OMLinkedListMetaFactory() {
- super(LLOMNodeFactory.INSTANCE);
+ super(NODE_FACTORY);
}
}
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreElement.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreElement.java
index e7512a3..48e86c9 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreElement.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreElement.java
@@ -154,7 +154,7 @@ public interface CoreElement extends CoreChildNode, CoreMixedContentContainer, C
// TODO: we can support default namespaces!
String coreLookupPrefix(String namespaceURI, Semantics semantics) throws CoreModelException;
- <T extends CoreElement> T corePromote(Class<T> type, Semantics semantics) throws CoreModelException;
+ void corePromote(CoreElement newElement, Semantics semantics) throws CoreModelException;
void internalSetFirstAttribute(CoreAttribute firstAttribute);
}
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuildableContext.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuildableContext.java
index 8f25d94..017da17 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuildableContext.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuildableContext.java
@@ -128,7 +128,7 @@ final class BuildableContext extends Context implements InputContext {
private void addChild(CoreChildNode node) {
if (pendingCharacterData != null) {
- CoreCharacterDataNode cdataNode = builderHandler.nodeFactory.getFactory2().createCharacterDataNode();
+ CoreCharacterDataNode cdataNode = builderHandler.nodeFactory.createCharacterDataNode();
cdataNode.coreSetCharacterData(pendingCharacterData);
target.internalAppendChildWithoutBuild(cdataNode);
pendingCharacterData = null;
@@ -142,7 +142,10 @@ final class BuildableContext extends Context implements InputContext {
@Override
void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding,
Boolean standalone) {
- CoreDocument document = builderHandler.nodeFactory.createNode(builderHandler.model.getDocumentType());
+ CoreDocument document = builderHandler.model.createDocument();
+ if (document == null) {
+ document = builderHandler.nodeFactory.createDocument();
+ }
document.coreSetInputEncoding(inputEncoding);
document.coreSetXmlVersion(xmlVersion);
document.coreSetXmlEncoding(xmlEncoding);
@@ -163,7 +166,7 @@ final class BuildableContext extends Context implements InputContext {
if (passThroughHandler != null) {
passThroughHandler.processDocumentTypeDeclaration(rootName, publicId, systemId, internalSubset);
} else {
- CoreDocumentTypeDeclaration node = builderHandler.nodeFactory.getFactory2().createDocumentTypeDeclaration();
+ CoreDocumentTypeDeclaration node = builderHandler.nodeFactory.createDocumentTypeDeclaration();
node.coreSetRootName(rootName);
node.coreSetPublicId(publicId);
node.coreSetSystemId(systemId);
@@ -179,8 +182,11 @@ final class BuildableContext extends Context implements InputContext {
passThroughHandler.startElement(namespaceURI, localName, prefix);
return this;
} else {
- CoreNSAwareElement element = builderHandler.nodeFactory.createNode(builderHandler.model.determineElementType(
- target, depth+1, namespaceURI, localName));
+ CoreNSAwareElement element = builderHandler.model.createElement(
+ target, depth+1, namespaceURI, localName);
+ if (element == null) {
+ element = builderHandler.nodeFactory.createNSAwareElement();
+ }
element.coreSetState(CoreParentNode.ATTRIBUTES_PENDING);
element.initName(namespaceURI, localName, prefix, builderHandler.namespaceHelper);
addChild(element);
@@ -203,7 +209,7 @@ final class BuildableContext extends Context implements InputContext {
if (passThroughHandler != null) {
passThroughHandler.processAttribute(namespaceURI, localName, prefix, value, type, specified);
} else {
- CoreNSAwareAttribute attr = builderHandler.nodeFactory.getFactory2().createNSAwareAttribute();
+ CoreNSAwareAttribute attr = builderHandler.nodeFactory.createNSAwareAttribute();
attr.initName(namespaceURI, localName, prefix, builderHandler.namespaceHelper);
try {
attr.coreSetCharacterData(value, null);
@@ -221,7 +227,7 @@ final class BuildableContext extends Context implements InputContext {
if (passThroughHandler != null) {
passThroughHandler.processAttribute(name, value, type, specified);
} else {
- CoreNSUnawareAttribute attr = builderHandler.nodeFactory.getFactory2().createNSUnawareAttribute();
+ CoreNSUnawareAttribute attr = builderHandler.nodeFactory.createNSUnawareAttribute();
attr.coreSetName(name);
try {
attr.coreSetCharacterData(value, null);
@@ -239,7 +245,7 @@ final class BuildableContext extends Context implements InputContext {
if (passThroughHandler != null) {
passThroughHandler.processNamespaceDeclaration(prefix, namespaceURI);
} else {
- CoreNamespaceDeclaration decl = builderHandler.nodeFactory.getFactory2().createNamespaceDeclaration();
+ CoreNamespaceDeclaration decl = builderHandler.nodeFactory.createNamespaceDeclaration();
decl.init(prefix, namespaceURI, builderHandler.namespaceHelper);
((CoreElement)target).coreAppendAttribute(decl);
}
@@ -261,7 +267,7 @@ final class BuildableContext extends Context implements InputContext {
} else if (!ignorable && pendingCharacterData == null && target.coreGetFirstChildIfAvailable() == null) {
pendingCharacterData = data;
} else {
- CoreCharacterDataNode node = builderHandler.nodeFactory.getFactory2().createCharacterDataNode();
+ CoreCharacterDataNode node = builderHandler.nodeFactory.createCharacterDataNode();
node.coreSetCharacterData(data);
node.coreSetIgnorable(ignorable);
addChild(node);
@@ -275,7 +281,7 @@ final class BuildableContext extends Context implements InputContext {
passThroughHandler.startProcessingInstruction(piTarget);
return this;
} else {
- CoreProcessingInstruction node = builderHandler.nodeFactory.getFactory2().createProcessingInstruction();
+ CoreProcessingInstruction node = builderHandler.nodeFactory.createProcessingInstruction();
node.coreSetTarget(piTarget);
addChild(node);
return newContext(node);
@@ -299,7 +305,7 @@ final class BuildableContext extends Context implements InputContext {
passThroughHandler.startComment();
return this;
} else {
- CoreComment node = builderHandler.nodeFactory.getFactory2().createComment();
+ CoreComment node = builderHandler.nodeFactory.createComment();
addChild(node);
return newContext(node);
}
@@ -322,7 +328,7 @@ final class BuildableContext extends Context implements InputContext {
passThroughHandler.startCDATASection();
return this;
} else {
- CoreCDATASection node = builderHandler.nodeFactory.getFactory2().createCDATASection();
+ CoreCDATASection node = builderHandler.nodeFactory.createCDATASection();
addChild(node);
return newContext(node);
}
@@ -343,7 +349,7 @@ final class BuildableContext extends Context implements InputContext {
if (passThroughHandler != null) {
passThroughHandler.processEntityReference(name, replacementText);
} else {
- CoreEntityReference node = builderHandler.nodeFactory.getFactory2().createEntityReference();
+ CoreEntityReference node = builderHandler.nodeFactory.createEntityReference();
node.coreSetName(name);
node.coreSetReplacementText(replacementText);
addChild(node);
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderHandler.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderHandler.java
index cf45afe..c52fbbd 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderHandler.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderHandler.java
@@ -27,12 +27,12 @@ import org.apache.axiom.core.CoreDocument;
import org.apache.axiom.core.CoreNSAwareElement;
import org.apache.axiom.core.CoreNode;
import org.apache.axiom.core.DeferredParsingException;
-import org.apache.axiom.core.NodeFactory;
+import org.apache.axiom.core.NodeFactory2;
import org.apache.axiom.core.stream.StreamException;
import org.apache.axiom.core.stream.XmlHandler;
final class BuilderHandler implements XmlHandler {
- final NodeFactory nodeFactory;
+ final NodeFactory2 nodeFactory;
final Model model;
final Builder builder;
final Object namespaceHelper;
@@ -53,11 +53,11 @@ final class BuilderHandler implements XmlHandler {
private ArrayList<BuilderListener> listeners;
private Queue<DeferredAction> deferredActions;
- BuilderHandler(NodeFactory nodeFactory, Model model, CoreNSAwareElement root, Builder builder) {
+ BuilderHandler(NodeFactory2 nodeFactory, Model model, CoreNSAwareElement root, Builder builder) {
this.nodeFactory = nodeFactory;
this.model = model;
this.builder = builder;
- namespaceHelper = nodeFactory.getFactory2().createNamespaceHelper();
+ namespaceHelper = nodeFactory.createNamespaceHelper();
rootContext = root == null ? new BuildableContext(this, null, 0) : new UnwrappingContext(this, root);
context = rootContext;
activeContextCount = 1;
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java
index 3e56ed9..97ebcd8 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/BuilderImpl.java
@@ -22,7 +22,7 @@ import org.apache.axiom.core.Builder;
import org.apache.axiom.core.CoreDocument;
import org.apache.axiom.core.CoreNSAwareElement;
import org.apache.axiom.core.DeferredParsingException;
-import org.apache.axiom.core.NodeFactory;
+import org.apache.axiom.core.NodeFactory2;
import org.apache.axiom.core.stream.StreamException;
import org.apache.axiom.core.stream.XmlInput;
import org.apache.axiom.core.stream.XmlReader;
@@ -32,7 +32,7 @@ public final class BuilderImpl implements Builder {
private final BuilderHandler builderHandler;
private Object facade;
- public BuilderImpl(XmlInput input, NodeFactory nodeFactory, Model model,
+ public BuilderImpl(XmlInput input, NodeFactory2 nodeFactory, Model model,
CoreNSAwareElement root) {
builderHandler = new BuilderHandler(nodeFactory, model, root, this);
reader = input.createReader(builderHandler);
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/Model.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/Model.java
index b046de6..27385ef 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/Model.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/Model.java
@@ -23,17 +23,23 @@ import org.apache.axiom.core.CoreNSAwareElement;
import org.apache.axiom.core.CoreParentNode;
public interface Model {
- Class<? extends CoreDocument> getDocumentType();
+ /**
+ * Create the document node suitable for this model.
+ *
+ * @return the document node, or {@code null} if a plain {@link CoreDocument} should be used
+ */
+ CoreDocument createDocument();
/**
- * Determine the element type to use for the current element.
+ * Create a model specific element node. The implementation must only create the element, but
+ * not set any of its properties.
*
* @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>
+ * @return the element node, or {@code null} if a plain {@link CoreNSAwareElement} should be used
*/
- Class<? extends CoreNSAwareElement> determineElementType(CoreParentNode parent, int elementLevel,
+ CoreNSAwareElement createElement(CoreParentNode parent, int elementLevel,
String namespaceURI, String localName);
}
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/PlainXMLModel.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/PlainXMLModel.java
index de68ca3..2cb0d65 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/PlainXMLModel.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/builder/PlainXMLModel.java
@@ -28,13 +28,13 @@ public final class PlainXMLModel implements Model {
private PlainXMLModel() {}
@Override
- public Class<? extends CoreDocument> getDocumentType() {
- return CoreDocument.class;
+ public CoreDocument createDocument() {
+ return null;
}
@Override
- public Class<? extends CoreNSAwareElement> determineElementType(CoreParentNode parent, int elementLevel,
+ public CoreNSAwareElement createElement(CoreParentNode parent, int elementLevel,
String namespaceURI, String localName) {
- return CoreNSAwareElement.class;
+ return null;
}
}
diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreElementMixin.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreElementMixin.java
index 37366cb..187d350 100644
--- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreElementMixin.java
+++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/impl/mixin/CoreElementMixin.java
@@ -241,8 +241,7 @@ public abstract class CoreElementMixin implements CoreElement {
}
@Override
- public final <T extends CoreElement> T corePromote(Class<T> type, Semantics semantics) throws CoreModelException {
- T newElement = coreCreateNode(type);
+ public final void corePromote(CoreElement newElement, Semantics semantics) throws CoreModelException {
newElement.initName(this);
newElement.internalSetFirstAttribute(firstAttribute);
CoreAttribute attr = firstAttribute;
@@ -253,6 +252,5 @@ public abstract class CoreElementMixin implements CoreElement {
firstAttribute = null;
newElement.coreMoveChildrenFrom(this, semantics);
coreReplaceWith(newElement, semantics);
- return newElement;
}
}
diff --git a/mixins/om-mixins/pom.xml b/mixins/om-mixins/pom.xml
index 19353bf..6b4ce86 100644
--- a/mixins/om-mixins/pom.xml
+++ b/mixins/om-mixins/pom.xml
@@ -70,4 +70,30 @@
<scope>test</scope>
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.github.veithen.phos</groupId>
+ <artifactId>enforcer-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <ignore>
+ <!-- TODO: inject the reference to the singleton into mixins directly -->
+ org.apache.axiom.om.impl.intf.AxiomInformationItem -> org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory,
+ <!-- TODO: figure out how to break those cycles properly -->
+ org.apache.axiom.soap.impl.intf.SOAPHelper -> org.apache.axiom.om.impl.intf.factory.AxiomElementType,
+ org.apache.axiom.soap.impl.intf.soap11.SOAP11Helper -> org.apache.axiom.om.impl.intf.factory.AxiomElementType,
+ org.apache.axiom.soap.impl.intf.soap12.SOAP12Helper -> org.apache.axiom.om.impl.intf.factory.AxiomElementType
+ </ignore>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
index 46f5a61..570e948 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
@@ -26,7 +26,6 @@ import javax.activation.DataHandler;
import javax.xml.namespace.QName;
import org.apache.axiom.core.CoreModelException;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMComment;
@@ -49,7 +48,6 @@ import org.apache.axiom.om.impl.common.AxiomExceptionTranslator;
import org.apache.axiom.om.impl.common.AxiomSemantics;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
import org.apache.axiom.om.impl.intf.AxiomAttribute;
-import org.apache.axiom.om.impl.intf.AxiomCDATASection;
import org.apache.axiom.om.impl.intf.AxiomCharacterDataNode;
import org.apache.axiom.om.impl.intf.AxiomChildNode;
import org.apache.axiom.om.impl.intf.AxiomComment;
@@ -64,12 +62,14 @@ import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
import org.apache.axiom.om.impl.intf.AxiomText;
import org.apache.axiom.om.impl.intf.TextContent;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
public class OMFactoryImpl implements OMFactory {
private final OMMetaFactory metaFactory;
- protected final NodeFactory nodeFactory;
+ protected final AxiomNodeFactory nodeFactory;
- public OMFactoryImpl(OMMetaFactory metaFactory, NodeFactory nodeFactory) {
+ public OMFactoryImpl(OMMetaFactory metaFactory, AxiomNodeFactory nodeFactory) {
this.metaFactory = metaFactory;
this.nodeFactory = nodeFactory;
}
@@ -86,13 +86,13 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMDocument createOMDocument() {
- return nodeFactory.createNode(AxiomDocument.class);
+ return nodeFactory.createDocument();
}
@Override
public final OMDocType createOMDocType(OMContainer parent, String rootName,
String publicId, String systemId, String internalSubset) {
- AxiomDocType node = nodeFactory.createNode(AxiomDocType.class);
+ AxiomDocType node = nodeFactory.createDocType();
node.coreSetRootName(rootName);
node.coreSetPublicId(publicId);
node.coreSetSystemId(systemId);
@@ -107,17 +107,17 @@ public class OMFactoryImpl implements OMFactory {
AxiomText node;
switch (type) {
case OMNode.TEXT_NODE: {
- node = nodeFactory.createNode(AxiomCharacterDataNode.class);
+ node = nodeFactory.createCharacterDataNode();
break;
}
case OMNode.SPACE_NODE: {
- AxiomCharacterDataNode cdata = nodeFactory.createNode(AxiomCharacterDataNode.class);
+ AxiomCharacterDataNode cdata = nodeFactory.createCharacterDataNode();
cdata.coreSetIgnorable(true);
node = cdata;
break;
}
case OMNode.CDATA_SECTION_NODE: {
- node = nodeFactory.createNode(AxiomCDATASection.class);
+ node = nodeFactory.createCDATASection();
break;
}
default:
@@ -211,7 +211,7 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMProcessingInstruction createOMProcessingInstruction(
OMContainer parent, String piTarget, String piData) {
- AxiomProcessingInstruction node = nodeFactory.createNode(AxiomProcessingInstruction.class);
+ AxiomProcessingInstruction node = nodeFactory.createProcessingInstruction();
node.coreSetTarget(piTarget);
try {
node.coreSetCharacterData(piData, AxiomSemantics.INSTANCE);
@@ -226,7 +226,7 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMEntityReference createOMEntityReference(OMContainer parent, String name) {
- AxiomEntityReference node = nodeFactory.createNode(AxiomEntityReference.class);
+ AxiomEntityReference node = nodeFactory.createEntityReference();
node.coreSetName(name);
if (parent != null) {
((AxiomContainer)parent).addChild(node);
@@ -236,7 +236,7 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMComment createOMComment(OMContainer parent, String content) {
- AxiomComment node = nodeFactory.createNode(AxiomComment.class);
+ AxiomComment node = nodeFactory.createComment();
try {
node.coreSetCharacterData(content, AxiomSemantics.INSTANCE);
} catch (CoreModelException ex) {
@@ -253,9 +253,9 @@ public class OMFactoryImpl implements OMFactory {
return createOMElement(localName, ns, null);
}
- protected final <T extends AxiomElement> T createAxiomElement(Class<T> type,
+ protected final <T extends AxiomElement> T createAxiomElement(AxiomElementType<T> type,
OMContainer parent, String localName, OMNamespace ns) {
- T element = nodeFactory.createNode(type);
+ T element = type.create(nodeFactory);
if (parent != null) {
((AxiomContainer)parent).addChild(element);
}
@@ -265,12 +265,12 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMElement createOMElement(String localName, OMNamespace ns, OMContainer parent) {
- return createAxiomElement(AxiomElement.class, parent, localName, ns);
+ return createAxiomElement(AxiomNodeFactory::createElement, parent, localName, ns);
}
@Override
public final OMElement createOMElement(QName qname, OMContainer parent) {
- AxiomElement element = nodeFactory.createNode(AxiomElement.class);
+ AxiomElement element = nodeFactory.createElement();
if (parent != null) {
parent.addChild(element);
}
@@ -321,21 +321,21 @@ public class OMFactoryImpl implements OMFactory {
@Override
public final OMSourcedElement createOMElement(OMDataSource source) {
- AxiomSourcedElement element = nodeFactory.createNode(AxiomSourcedElement.class);
+ AxiomSourcedElement element = nodeFactory.createSourcedElement();
element.init(source);
return element;
}
@Override
public final OMSourcedElement createOMElement(OMDataSource source, String localName, OMNamespace ns) {
- AxiomSourcedElement element = nodeFactory.createNode(AxiomSourcedElement.class);
+ AxiomSourcedElement element = nodeFactory.createSourcedElement();
element.init(localName, ns, source);
return element;
}
@Override
public final OMSourcedElement createOMElement(OMDataSource source, QName qname) {
- AxiomSourcedElement element = nodeFactory.createNode(AxiomSourcedElement.class);
+ AxiomSourcedElement element = nodeFactory.createSourcedElement();
element.init(qname, source);
return element;
}
@@ -361,7 +361,7 @@ public class OMFactoryImpl implements OMFactory {
throw new IllegalArgumentException("Cannot create an unprefixed attribute with a namespace");
}
}
- AxiomAttribute attr = nodeFactory.createNode(AxiomAttribute.class);
+ AxiomAttribute attr = nodeFactory.createAttribute();
attr.internalSetLocalName(localName);
try {
attr.coreSetCharacterData(value, AxiomSemantics.INSTANCE);
@@ -373,15 +373,15 @@ public class OMFactoryImpl implements OMFactory {
return attr;
}
- protected final <T extends AxiomElement> T importElement(OMElement element, Class<T> type) {
- T importedElement = nodeFactory.createNode(type);
+ protected final <T extends AxiomElement> T importElement(OMElement element, AxiomElementType<T> type) {
+ T importedElement = type.create(nodeFactory);
copyName(element, importedElement);
for (Iterator<OMAttribute> it = element.getAllAttributes(); it.hasNext(); ) {
importedElement.coreAppendAttribute(importAttribute(it.next()));
}
for (Iterator<OMNamespace> it = element.getAllDeclaredNamespaces(); it.hasNext(); ) {
OMNamespace ns = it.next();
- AxiomNamespaceDeclaration nsDecl = nodeFactory.createNode(AxiomNamespaceDeclaration.class);
+ AxiomNamespaceDeclaration nsDecl = nodeFactory.createNamespaceDeclaration();
nsDecl.coreSetDeclaredNamespace(ns.getPrefix(), ns.getNamespaceURI());
importedElement.coreAppendAttribute(nsDecl);
}
@@ -393,7 +393,7 @@ public class OMFactoryImpl implements OMFactory {
int type = child.getType();
switch (type) {
case OMNode.ELEMENT_NODE:
- return importElement((OMElement)child, AxiomElement.class);
+ return importElement((OMElement)child, AxiomNodeFactory::createElement);
case OMNode.TEXT_NODE:
case OMNode.SPACE_NODE:
case OMNode.CDATA_SECTION_NODE: {
@@ -408,20 +408,20 @@ public class OMFactoryImpl implements OMFactory {
}
case OMNode.PI_NODE: {
OMProcessingInstruction pi = (OMProcessingInstruction)child;
- AxiomProcessingInstruction importedPI = nodeFactory.createNode(AxiomProcessingInstruction.class);
+ AxiomProcessingInstruction importedPI = nodeFactory.createProcessingInstruction();
importedPI.setTarget(pi.getTarget());
importedPI.setValue(pi.getValue());
return importedPI;
}
case OMNode.COMMENT_NODE: {
OMComment comment = (OMComment)child;
- AxiomComment importedComment = nodeFactory.createNode(AxiomComment.class);
+ AxiomComment importedComment = nodeFactory.createComment();
importedComment.setValue(comment.getValue());
return importedComment;
}
case OMNode.DTD_NODE: {
OMDocType docType = (OMDocType)child;
- AxiomDocType importedDocType = nodeFactory.createNode(AxiomDocType.class);
+ AxiomDocType importedDocType = nodeFactory.createDocType();
importedDocType.coreSetRootName(docType.getRootName());
importedDocType.coreSetPublicId(docType.getPublicId());
importedDocType.coreSetSystemId(docType.getSystemId());
@@ -429,7 +429,7 @@ public class OMFactoryImpl implements OMFactory {
return importedDocType;
}
case OMNode.ENTITY_REFERENCE_NODE:
- AxiomEntityReference importedEntityRef = nodeFactory.createNode(AxiomEntityReference.class);
+ AxiomEntityReference importedEntityRef = nodeFactory.createEntityReference();
importedEntityRef.coreSetName(((OMEntityReference)child).getName());
return importedEntityRef;
default:
@@ -453,7 +453,7 @@ public class OMFactoryImpl implements OMFactory {
}
private AxiomAttribute importAttribute(OMAttribute attribute) {
- AxiomAttribute importedAttribute = nodeFactory.createNode(AxiomAttribute.class);
+ AxiomAttribute importedAttribute = nodeFactory.createAttribute();
copyName(attribute, importedAttribute);
importedAttribute.setAttributeValue(attribute.getAttributeValue());
return importedAttribute;
@@ -465,7 +465,7 @@ public class OMFactoryImpl implements OMFactory {
return importChildNode((OMNode)node);
} else if (node instanceof OMDocument) {
OMDocument document = (OMDocument)node;
- AxiomDocument importedDocument = nodeFactory.createNode(AxiomDocument.class);
+ AxiomDocument importedDocument = nodeFactory.createDocument();
// TODO: other attributes
importChildren(document, importedDocument);
return importedDocument;
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/AbstractOMMetaFactory.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/AbstractOMMetaFactory.java
index 9177953..bb0c65d 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/AbstractOMMetaFactory.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/AbstractOMMetaFactory.java
@@ -25,7 +25,6 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.sax.SAXSource;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.mime.MultipartBody;
import org.apache.axiom.om.OMAttachmentAccessor;
import org.apache.axiom.om.OMFactory;
@@ -33,6 +32,7 @@ import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMMetaFactorySPI;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.common.factory.OMFactoryImpl;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPModelBuilder;
@@ -46,12 +46,12 @@ import org.xml.sax.InputSource;
* ({@link org.apache.axiom.core.impl.builder.BuilderImpl} and its subclasses).
*/
public abstract class AbstractOMMetaFactory implements OMMetaFactorySPI {
- private final NodeFactory nodeFactory;
+ private final AxiomNodeFactory nodeFactory;
private final OMFactory omFactory;
private final SOAPFactory soap11Factory;
private final SOAPFactory soap12Factory;
- public AbstractOMMetaFactory(NodeFactory nodeFactory) {
+ public AbstractOMMetaFactory(AxiomNodeFactory nodeFactory) {
this.nodeFactory = nodeFactory;
omFactory = new OMFactoryImpl(this, nodeFactory);
soap11Factory = new SOAP11Factory(this, nodeFactory);
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderFactory.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderFactory.java
index 9aa33ff..e482a42 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderFactory.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/common/factory/meta/BuilderFactory.java
@@ -19,7 +19,6 @@
package org.apache.axiom.om.impl.common.factory.meta;
import org.apache.axiom.core.CoreNode;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.core.impl.builder.BuilderImpl;
import org.apache.axiom.core.impl.builder.BuilderListener;
import org.apache.axiom.core.impl.builder.DeferredAction;
@@ -27,6 +26,7 @@ import org.apache.axiom.core.impl.builder.PlainXMLModel;
import org.apache.axiom.core.stream.FilteredXmlInput;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.common.builder.OMXMLParserWrapperImpl;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPModelBuilder;
import org.apache.axiom.soap.impl.common.builder.SOAPFilter;
@@ -38,16 +38,16 @@ import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
abstract class BuilderFactory<T extends OMXMLParserWrapper> {
final static BuilderFactory<OMXMLParserWrapper> OM = new BuilderFactory<OMXMLParserWrapper>() {
@Override
- OMXMLParserWrapper createBuilder(NodeFactory nodeFactory, BuilderSpec spec) {
- return new OMXMLParserWrapperImpl(new BuilderImpl(spec.getInput(), nodeFactory,
+ OMXMLParserWrapper createBuilder(AxiomNodeFactory nodeFactory, BuilderSpec spec) {
+ return new OMXMLParserWrapperImpl(new BuilderImpl(spec.getInput(), nodeFactory.getCoreNodeFactory(),
PlainXMLModel.INSTANCE, null), spec.getDetachable());
}
};
final static BuilderFactory<SOAPModelBuilder> SOAP = new BuilderFactory<SOAPModelBuilder>() {
@Override
- SOAPModelBuilder createBuilder(NodeFactory nodeFactory, BuilderSpec spec) {
- BuilderImpl builder = new BuilderImpl(new FilteredXmlInput(spec.getInput(), SOAPFilter.INSTANCE), nodeFactory, new SOAPModel(), null);
+ SOAPModelBuilder createBuilder(AxiomNodeFactory nodeFactory, BuilderSpec spec) {
+ BuilderImpl builder = new BuilderImpl(new FilteredXmlInput(spec.getInput(), SOAPFilter.INSTANCE), nodeFactory.getCoreNodeFactory(), new SOAPModel(nodeFactory), null);
// 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.
@@ -68,5 +68,5 @@ abstract class BuilderFactory<T extends OMXMLParserWrapper> {
}
};
- abstract T createBuilder(NodeFactory nodeFactory, BuilderSpec spec);
+ abstract T createBuilder(AxiomNodeFactory nodeFactory, BuilderSpec spec);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java
index 3147fa6..e992eb4 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java
@@ -21,7 +21,12 @@ package org.apache.axiom.om.impl.intf;
import org.apache.axiom.core.CoreNode;
import org.apache.axiom.om.OMInformationItem;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
+import org.apache.axiom.weaver.annotation.Inject;
public interface AxiomInformationItem extends OMInformationItem, CoreNode {
+ @Inject
+ AxiomNodeFactory getNodeFactory();
+
OMMetaFactory getMetaFactory();
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomElementType.java
similarity index 74%
copy from mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java
copy to mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomElementType.java
index 3147fa6..94b49f8 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/AxiomInformationItem.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomElementType.java
@@ -16,12 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.om.impl.intf;
+package org.apache.axiom.om.impl.intf.factory;
-import org.apache.axiom.core.CoreNode;
-import org.apache.axiom.om.OMInformationItem;
-import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.AxiomElement;
-public interface AxiomInformationItem extends OMInformationItem, CoreNode {
- OMMetaFactory getMetaFactory();
+public interface AxiomElementType<T extends AxiomElement> {
+ T create(AxiomNodeFactory nodeFactory);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomNodeFactory.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomNodeFactory.java
new file mode 100644
index 0000000..50a6614
--- /dev/null
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/intf/factory/AxiomNodeFactory.java
@@ -0,0 +1,166 @@
+/*
+ * 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.intf.factory;
+
+import org.apache.axiom.core.NodeFactory2;
+import org.apache.axiom.om.impl.intf.AxiomAttribute;
+import org.apache.axiom.om.impl.intf.AxiomCDATASection;
+import org.apache.axiom.om.impl.intf.AxiomCharacterDataNode;
+import org.apache.axiom.om.impl.intf.AxiomComment;
+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.AxiomNamespaceDeclaration;
+import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
+import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
+import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Body;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Envelope;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Fault;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultCode;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultDetail;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultReason;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultRole;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11Header;
+import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11HeaderBlock;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12Body;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12Envelope;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12Fault;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultCode;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultDetail;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultNode;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultReason;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultRole;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultSubCode;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultText;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultValue;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12Header;
+import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12HeaderBlock;
+import org.apache.axiom.weaver.annotation.FactoryMethod;
+import org.apache.axiom.weaver.annotation.Inject;
+import org.apache.axiom.weaver.annotation.Singleton;
+
+@Singleton
+public interface AxiomNodeFactory {
+ @Inject
+ NodeFactory2 getCoreNodeFactory();
+
+ @FactoryMethod
+ AxiomDocument createDocument();
+
+ @FactoryMethod
+ AxiomDocType createDocType();
+
+ @FactoryMethod
+ AxiomCharacterDataNode createCharacterDataNode();
+
+ @FactoryMethod
+ AxiomCDATASection createCDATASection();
+
+ @FactoryMethod
+ AxiomProcessingInstruction createProcessingInstruction();
+
+ @FactoryMethod
+ AxiomEntityReference createEntityReference();
+
+ @FactoryMethod
+ AxiomComment createComment();
+
+ @FactoryMethod
+ AxiomElement createElement();
+
+ @FactoryMethod
+ AxiomSourcedElement createSourcedElement();
+
+ @FactoryMethod
+ AxiomAttribute createAttribute();
+
+ @FactoryMethod
+ AxiomNamespaceDeclaration createNamespaceDeclaration();
+
+ @FactoryMethod
+ AxiomSOAPMessage createSOAPMessage();
+
+ @FactoryMethod
+ AxiomSOAP11Envelope createSOAP11Envelope();
+
+ @FactoryMethod
+ AxiomSOAP11Header createSOAP11Header();
+
+ @FactoryMethod
+ AxiomSOAP11HeaderBlock createSOAP11HeaderBlock();
+
+ @FactoryMethod
+ AxiomSOAP11Body createSOAP11Body();
+
+ @FactoryMethod
+ AxiomSOAP11Fault createSOAP11Fault();
+
+ @FactoryMethod
+ AxiomSOAP11FaultCode createSOAP11FaultCode();
+
+ @FactoryMethod
+ AxiomSOAP11FaultReason createSOAP11FaultReason();
+
+ @FactoryMethod
+ AxiomSOAP11FaultRole createSOAP11FaultRole();
+
+ @FactoryMethod
+ AxiomSOAP11FaultDetail createSOAP11FaultDetail();
+
+ @FactoryMethod
+ AxiomSOAP12Envelope createSOAP12Envelope();
+
+ @FactoryMethod
+ AxiomSOAP12Header createSOAP12Header();
+
+ @FactoryMethod
+ AxiomSOAP12HeaderBlock createSOAP12HeaderBlock();
+
+ @FactoryMethod
+ AxiomSOAP12Body createSOAP12Body();
+
+ @FactoryMethod
+ AxiomSOAP12Fault createSOAP12Fault();
+
+ @FactoryMethod
+ AxiomSOAP12FaultCode createSOAP12FaultCode();
+
+ @FactoryMethod
+ AxiomSOAP12FaultReason createSOAP12FaultReason();
+
+ @FactoryMethod
+ AxiomSOAP12FaultRole createSOAP12FaultRole();
+
+ @FactoryMethod
+ AxiomSOAP12FaultDetail createSOAP12FaultDetail();
+
+ @FactoryMethod
+ AxiomSOAP12FaultValue createSOAP12FaultValue();
+
+ @FactoryMethod
+ AxiomSOAP12FaultSubCode createSOAP12FaultSubCode();
+
+ @FactoryMethod
+ AxiomSOAP12FaultText createSOAP12FaultText();
+
+ @FactoryMethod
+ AxiomSOAP12FaultNode createSOAP12FaultNode();
+}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementMixin.java b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementMixin.java
index 8d6acd0..eff5368 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementMixin.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementMixin.java
@@ -216,7 +216,7 @@ public abstract class AxiomSourcedElementMixin implements AxiomSourcedElement {
if (OMDataSourceUtil.isPushDataSource(dataSource)) {
// Disable namespace repairing because the OMDataSource is required to produce well formed
// XML with respect to namespaces.
- builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this);
+ builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory().getFactory2(), PlainXMLModel.INSTANCE, this);
} else {
// Get the XMLStreamReader
XMLStreamReader readerFromDS;
@@ -225,7 +225,7 @@ public abstract class AxiomSourcedElementMixin implements AxiomSourcedElement {
} catch (XMLStreamException ex) {
throw new OMException("Error obtaining parser from data source for element " + getPrintableName(), ex);
}
- builder = new BuilderImpl(new FilteredXmlInput(new StAXPullInput(readerFromDS, AxiomXMLStreamReaderHelperFactory.INSTANCE), NamespaceRepairingFilter.DEFAULT), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this);
+ builder = new BuilderImpl(new FilteredXmlInput(new StAXPullInput(readerFromDS, AxiomXMLStreamReaderHelperFactory.INSTANCE), NamespaceRepairingFilter.DEFAULT), coreGetNodeFactory().getFactory2(), PlainXMLModel.INSTANCE, this);
}
isExpanded = true;
coreSetState(ATTRIBUTES_PENDING);
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/SOAPHeaderBlockMapper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/SOAPHeaderBlockMapper.java
index dc6060c..9ec7251 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/SOAPHeaderBlockMapper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/SOAPHeaderBlockMapper.java
@@ -24,6 +24,7 @@ import org.apache.axiom.om.impl.common.AxiomSemantics;
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axiom.soap.impl.intf.AxiomSOAPHeader;
+import org.apache.axiom.soap.impl.intf.AxiomSOAPHeaderBlock;
public final class SOAPHeaderBlockMapper implements Mapper<SOAPHeaderBlock,AxiomElement> {
public static final SOAPHeaderBlockMapper INSTANCE = new SOAPHeaderBlockMapper();
@@ -36,7 +37,9 @@ public final class SOAPHeaderBlockMapper implements Mapper<SOAPHeaderBlock,Axiom
return (SOAPHeaderBlock)element;
} else {
try {
- return element.corePromote(((AxiomSOAPHeader)element.coreGetParent()).getSOAPHelper().getHeaderBlockClass(), AxiomSemantics.INSTANCE);
+ AxiomSOAPHeaderBlock newElement = ((AxiomSOAPHeader)element.coreGetParent()).getSOAPHelper().getHeaderBlockType().create(element.getNodeFactory());
+ element.corePromote(newElement, AxiomSemantics.INSTANCE);
+ return newElement;
} catch (CoreModelException ex) {
throw AxiomSemantics.INSTANCE.toUncheckedException(ex);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java
index 863969a..a5c438e 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP11BuilderHelper.java
@@ -21,12 +21,10 @@ package org.apache.axiom.soap.impl.common.builder;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultCode;
-import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultDetail;
-import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultReason;
-import org.apache.axiom.soap.impl.intf.soap11.AxiomSOAP11FaultRole;
import org.w3c.dom.Element;
public class SOAP11BuilderHelper extends SOAPBuilderHelper implements SOAP11Constants {
@@ -34,26 +32,26 @@ public class SOAP11BuilderHelper extends SOAPBuilderHelper implements SOAP11Cons
private boolean faultstringPresent = false;
@Override
- public Class<? extends AxiomElement> handleEvent(OMElement parent, int elementLevel,
+ public AxiomElementType<? extends AxiomElement> handleEvent(OMElement parent, int elementLevel,
String namespaceURI, String localName) throws SOAPProcessingException {
- Class<? extends AxiomElement> elementType = null;
+ AxiomElementType<? extends AxiomElement> elementType = null;
if (elementLevel == 4) {
if (SOAP_FAULT_CODE_LOCAL_NAME.equals(localName)) {
- elementType = AxiomSOAP11FaultCode.class;
+ elementType = AxiomNodeFactory::createSOAP11FaultCode;
faultcodePresent = true;
} else if (SOAP_FAULT_STRING_LOCAL_NAME.equals(localName)) {
- elementType = AxiomSOAP11FaultReason.class;
+ elementType = AxiomNodeFactory::createSOAP11FaultReason;
faultstringPresent = true;
} else if (SOAP_FAULT_ACTOR_LOCAL_NAME.equals(localName)) {
- elementType = AxiomSOAP11FaultRole.class;
+ elementType = AxiomNodeFactory::createSOAP11FaultRole;
} else if (SOAP_FAULT_DETAIL_LOCAL_NAME.equals(localName)) {
- elementType = AxiomSOAP11FaultDetail.class;
+ elementType = AxiomNodeFactory::createSOAP11FaultDetail;
} else {
- elementType = AxiomElement.class;
+ elementType = AxiomNodeFactory::createElement;
}
} else if (elementLevel == 5) {
@@ -77,11 +75,11 @@ public class SOAP11BuilderHelper extends SOAPBuilderHelper implements SOAP11Cons
throw new SOAPProcessingException(
"faultactor element should not have children");
} else {
- elementType = AxiomElement.class;
+ elementType = AxiomNodeFactory::createElement;
}
} else if (elementLevel > 5) {
- elementType = AxiomElement.class;
+ elementType = AxiomNodeFactory::createElement;
}
return elementType;
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java
index dfe7af0..ddb995f 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAP12BuilderHelper.java
@@ -21,16 +21,10 @@ package org.apache.axiom.soap.impl.common.builder;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultCode;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultDetail;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultNode;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultReason;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultRole;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultSubCode;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultText;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultValue;
import java.util.Vector;
@@ -51,9 +45,9 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
private Vector<String> detailElementNames;
@Override
- public Class<? extends AxiomElement> handleEvent(OMElement parent, int elementLevel,
+ public AxiomElementType<? extends AxiomElement> handleEvent(OMElement parent, int elementLevel,
String namespaceURI, String localName) throws SOAPProcessingException {
- Class<? extends AxiomElement> elementType = null;
+ AxiomElementType<? extends AxiomElement> elementType = null;
if (elementLevel == 4) {
if (localName.equals(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME)) {
@@ -61,7 +55,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"Multiple Code element encountered");
} else {
- elementType = AxiomSOAP12FaultCode.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultCode;
codePresent = true;
codeprocessing = true;
}
@@ -72,7 +66,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"Multiple Reason Element encountered");
} else {
- elementType = AxiomSOAP12FaultReason.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultReason;
reasonPresent = true;
reasonProcessing = true;
}
@@ -97,7 +91,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"Multiple Node element encountered");
} else {
- elementType = AxiomSOAP12FaultNode.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultNode;
nodePresent = true;
}
} else {
@@ -115,7 +109,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"Multiple Role element encountered");
} else {
- elementType = AxiomSOAP12FaultRole.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultRole;
rolePresent = true;
}
} else {
@@ -133,7 +127,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"Multiple detail element encountered");
} else {
- elementType = AxiomSOAP12FaultDetail.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultDetail;
detailPresent = true;
}
} else {
@@ -154,7 +148,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME)) {
if (localName.equals(SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME)) {
if (!valuePresent) {
- elementType = AxiomSOAP12FaultValue.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultValue;
valuePresent = true;
codeprocessing = false;
} else {
@@ -165,7 +159,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
} else if (localName.equals(SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME)) {
if (!subcodePresent) {
if (valuePresent) {
- elementType = AxiomSOAP12FaultSubCode.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultSubCode;
subcodePresent = true;
subCodeProcessing = true;
} else {
@@ -185,7 +179,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
} else if (parent.getLocalName().equals(
SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME)) {
if (localName.equals(SOAP12Constants.SOAP_FAULT_TEXT_LOCAL_NAME)) {
- elementType = AxiomSOAP12FaultText.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultText;
reasonProcessing = false;
} else {
throw new SOAPProcessingException(
@@ -193,7 +187,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
}
} else if (parent.getLocalName().equals(
SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME)) {
- elementType = AxiomElement.class;
+ elementType = AxiomNodeFactory::createElement;
processingDetailElements = true;
detailElementNames = new Vector<String>();
detailElementNames.add(localName);
@@ -213,7 +207,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
throw new SOAPProcessingException(
"multiple subCode value encountered");
} else {
- elementType = AxiomSOAP12FaultValue.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultValue;
subcodeValuePresent = true;
subSubcodePresent = false;
subCodeProcessing = false;
@@ -221,7 +215,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
} else if (localName.equals(SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME)) {
if (subcodeValuePresent) {
if (!subSubcodePresent) {
- elementType = AxiomSOAP12FaultSubCode.class;
+ elementType = AxiomNodeFactory::createSOAP12FaultSubCode;
subcodeValuePresent = false;
subSubcodePresent = true;
subCodeProcessing = true;
@@ -249,7 +243,7 @@ public class SOAP12BuilderHelper extends SOAPBuilderHelper {
}
if (localNameExist) {
detailElementNames.setSize(detailElementLevel);
- elementType = AxiomElement.class;
+ elementType = AxiomNodeFactory::createElement;
detailElementNames.add(localName);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java
index a9cda97..add7fd1 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPBuilderHelper.java
@@ -21,9 +21,10 @@ package org.apache.axiom.soap.impl.common.builder;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
import org.apache.axiom.soap.SOAPProcessingException;
public abstract class SOAPBuilderHelper {
- public abstract Class<? extends AxiomElement> handleEvent(OMElement element, int elementLevel,
+ public abstract AxiomElementType<? extends AxiomElement> handleEvent(OMElement element, int elementLevel,
String namespaceURI, String localName) throws SOAPProcessingException;
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java
index 26348ad..86895bc 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java
@@ -24,12 +24,11 @@ import org.apache.axiom.core.CoreNSAwareElement;
import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.core.impl.builder.Model;
import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
import org.apache.axiom.soap.impl.intf.SOAPHelper;
import org.apache.axiom.soap.impl.intf.soap11.SOAP11Helper;
import org.apache.axiom.soap.impl.intf.soap12.SOAP12Helper;
@@ -37,6 +36,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public final class SOAPModel implements Model {
+ private final AxiomNodeFactory nodeFactory;
+
private SOAPHelper soapHelper;
/** Field headerPresent */
@@ -52,15 +53,18 @@ public final class SOAPModel implements Model {
private SOAPBuilderHelper builderHelper;
+ public SOAPModel(AxiomNodeFactory nodeFactory) {
+ this.nodeFactory = nodeFactory;
+ }
+
@Override
- public Class<? extends CoreDocument> getDocumentType() {
- return AxiomSOAPMessage.class;
+ public CoreDocument createDocument() {
+ return nodeFactory.createSOAPMessage();
}
@Override
- public Class<? extends CoreNSAwareElement> determineElementType(CoreParentNode parent,
+ public CoreNSAwareElement createElement(CoreParentNode 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.
@@ -84,7 +88,7 @@ public final class SOAPModel implements Model {
" system", SOAPConstants.FAULT_CODE_VERSION_MISMATCH);
}
- elementType = soapHelper.getEnvelopeClass();
+ return soapHelper.getEnvelopeType().create(nodeFactory);
} else if (elementLevel == 2) {
if (soapHelper.getEnvelopeURI().equals(namespaceURI)) {
// this is either a header or a body
@@ -98,20 +102,20 @@ public final class SOAPModel implements Model {
getSenderFaultCode());
}
headerPresent = true;
- elementType = soapHelper.getHeaderClass();
+ return soapHelper.getHeaderType().create(nodeFactory);
} else if (localName.equals(SOAPConstants.BODY_LOCAL_NAME)) {
if (bodyPresent) {
throw new SOAPProcessingException("Multiple body elements encountered",
getSenderFaultCode());
}
bodyPresent = true;
- elementType = soapHelper.getBodyClass();
+ return soapHelper.getBodyType().create(nodeFactory);
} else {
throw new SOAPProcessingException(localName + " is not supported here.",
getSenderFaultCode());
}
} else if (soapHelper == SOAP11Helper.INSTANCE && bodyPresent) {
- elementType = AxiomElement.class;
+ return null;
} else {
throw new SOAPProcessingException("Disallowed element found inside Envelope : {"
+ namespaceURI + "}" + localName);
@@ -122,7 +126,7 @@ public final class SOAPModel implements Model {
// this is a headerblock
try {
- elementType = soapHelper.getHeaderBlockClass();
+ return soapHelper.getHeaderBlockType().create(nodeFactory);
} catch (SOAPProcessingException e) {
throw new SOAPProcessingException("Can not create SOAPHeader block",
getReceiverFaultCode(), e);
@@ -132,21 +136,20 @@ public final class SOAPModel implements Model {
localName.equals(SOAPConstants.BODY_FAULT_LOCAL_NAME) &&
soapHelper.getEnvelopeURI().equals(namespaceURI)) {
// this is a SOAP fault
- elementType = soapHelper.getFaultClass();
processingFault = true;
if (soapHelper == SOAP12Helper.INSTANCE) {
builderHelper = new SOAP12BuilderHelper();
} else if (soapHelper == SOAP11Helper.INSTANCE) {
builderHelper = new SOAP11BuilderHelper();
}
+ return soapHelper.getFaultType().create(nodeFactory);
} else if (elementLevel > 3 && processingFault) {
- elementType = builderHelper.handleEvent((OMElement)parent, elementLevel, namespaceURI, localName);
+ return builderHelper.handleEvent((OMElement)parent, elementLevel, namespaceURI, localName).create(nodeFactory);
} else {
// this is neither of above. Just create an element
- elementType = AxiomElement.class;
+ return null;
}
- return elementType;
}
private String getSenderFaultCode() {
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP11Factory.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP11Factory.java
index f35f295..8e5149e 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP11Factory.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP11Factory.java
@@ -18,8 +18,8 @@
*/
package org.apache.axiom.soap.impl.factory;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFault;
import org.apache.axiom.soap.SOAPFaultCode;
@@ -32,7 +32,7 @@ import org.apache.axiom.soap.impl.intf.SOAPHelper;
import org.apache.axiom.soap.impl.intf.soap11.SOAP11Helper;
public class SOAP11Factory extends SOAPFactoryImpl {
- public SOAP11Factory(OMMetaFactory metaFactory, NodeFactory nodeFactory) {
+ public SOAP11Factory(OMMetaFactory metaFactory, AxiomNodeFactory nodeFactory) {
super(metaFactory, nodeFactory);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP12Factory.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP12Factory.java
index b68a0e2..07d54a1 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP12Factory.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAP12Factory.java
@@ -18,8 +18,8 @@
*/
package org.apache.axiom.soap.impl.factory;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFault;
@@ -31,14 +31,10 @@ import org.apache.axiom.soap.SOAPFaultSubCode;
import org.apache.axiom.soap.SOAPFaultText;
import org.apache.axiom.soap.SOAPFaultValue;
import org.apache.axiom.soap.impl.intf.SOAPHelper;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultNode;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultSubCode;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultText;
-import org.apache.axiom.soap.impl.intf.soap12.AxiomSOAP12FaultValue;
import org.apache.axiom.soap.impl.intf.soap12.SOAP12Helper;
public class SOAP12Factory extends SOAPFactoryImpl {
- public SOAP12Factory(OMMetaFactory metaFactory, NodeFactory nodeFactory) {
+ public SOAP12Factory(OMMetaFactory metaFactory, AxiomNodeFactory nodeFactory) {
super(metaFactory, nodeFactory);
}
@@ -48,7 +44,7 @@ public class SOAP12Factory extends SOAPFactoryImpl {
}
public final SOAPFaultValue internalCreateSOAPFaultValue(SOAPFaultClassifier parent) {
- return createSOAPElement(AxiomSOAP12FaultValue.class, parent, SOAP12Constants.QNAME_FAULT_VALUE);
+ return createSOAPElement(AxiomNodeFactory::createSOAP12FaultValue, parent, SOAP12Constants.QNAME_FAULT_VALUE);
}
@Override
@@ -67,7 +63,7 @@ public class SOAP12Factory extends SOAPFactoryImpl {
}
private SOAPFaultSubCode internalCreateSOAPFaultSubCode(SOAPFaultClassifier parent) {
- return createSOAPElement(AxiomSOAP12FaultSubCode.class, parent, SOAP12Constants.QNAME_FAULT_SUBCODE);
+ return createSOAPElement(AxiomNodeFactory::createSOAP12FaultSubCode, parent, SOAP12Constants.QNAME_FAULT_SUBCODE);
}
@Override
@@ -87,7 +83,7 @@ public class SOAP12Factory extends SOAPFactoryImpl {
@Override
public final SOAPFaultText createSOAPFaultText(SOAPFaultReason parent) {
- return createSOAPElement(AxiomSOAP12FaultText.class, parent, SOAP12Constants.QNAME_FAULT_TEXT);
+ return createSOAPElement(AxiomNodeFactory::createSOAP12FaultText, parent, SOAP12Constants.QNAME_FAULT_TEXT);
}
@Override
@@ -97,7 +93,7 @@ public class SOAP12Factory extends SOAPFactoryImpl {
@Override
public final SOAPFaultNode createSOAPFaultNode(SOAPFault parent) {
- return createSOAPElement(AxiomSOAP12FaultNode.class, parent, SOAP12Constants.QNAME_FAULT_NODE);
+ return createSOAPElement(AxiomNodeFactory::createSOAP12FaultNode, parent, SOAP12Constants.QNAME_FAULT_NODE);
}
@Override
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java
index 95f76c9..0f0e549 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/factory/SOAPFactoryImpl.java
@@ -20,7 +20,6 @@ package org.apache.axiom.soap.impl.factory;
import javax.xml.namespace.QName;
-import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMMetaFactory;
@@ -28,6 +27,8 @@ import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.common.factory.OMFactoryImpl;
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.om.impl.intf.Sequence;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -49,7 +50,7 @@ import org.apache.axiom.soap.impl.intf.SOAPHelper;
public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFactory {
private static final Sequence envelopeSequence = new Sequence(SOAPHeader.class, SOAPBody.class);
- public SOAPFactoryImpl(OMMetaFactory metaFactory, NodeFactory nodeFactory) {
+ public SOAPFactoryImpl(OMMetaFactory metaFactory, AxiomNodeFactory nodeFactory) {
super(metaFactory, nodeFactory);
}
@@ -70,12 +71,12 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
return getSOAPHelper().getNamespace();
}
- protected final <T extends AxiomSOAPElement> T createSOAPElement(Class<T> type, OMElement parent, QName qname) {
+ protected final <T extends AxiomSOAPElement> T createSOAPElement(AxiomElementType<T> type, OMElement parent, QName qname) {
return createSOAPElement(type, parent, qname, null, -1);
}
- protected final <T extends AxiomSOAPElement> T createSOAPElement(Class<T> type, OMElement parent, QName qname, Sequence sequence, int pos) {
- T element = nodeFactory.createNode(type);
+ protected final <T extends AxiomSOAPElement> T createSOAPElement(AxiomElementType<T> type, OMElement parent, QName qname, Sequence sequence, int pos) {
+ T element = type.create(nodeFactory);
if (parent != null) {
if (sequence != null) {
((AxiomElement)parent).insertChild(sequence, pos, element, false);
@@ -95,7 +96,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPMessage createSOAPMessage() {
- AxiomSOAPMessage message = nodeFactory.createNode(AxiomSOAPMessage.class);
+ AxiomSOAPMessage message = nodeFactory.createSOAPMessage();
message.initSOAPFactory(this);
return message;
}
@@ -107,13 +108,13 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPEnvelope createSOAPEnvelope(OMNamespace ns) {
- return createAxiomElement(getSOAPHelper().getEnvelopeClass(), null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, ns);
+ return createAxiomElement(getSOAPHelper().getEnvelopeType(), null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, ns);
}
@Override
public final SOAPHeader createSOAPHeader(SOAPEnvelope parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getHeaderClass(), parent, helper.getHeaderQName(), envelopeSequence, 0);
+ return createSOAPElement(helper.getHeaderType(), parent, helper.getHeaderQName(), envelopeSequence, 0);
}
@Override
@@ -123,37 +124,37 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns, SOAPHeader parent) {
- return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), parent, localName, ns);
+ return createAxiomElement(getSOAPHelper().getHeaderBlockType(), parent, localName, ns);
}
@Override
public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns) {
- return createAxiomElement(getSOAPHelper().getHeaderBlockClass(), null, localName, ns);
+ return createAxiomElement(getSOAPHelper().getHeaderBlockType(), null, localName, ns);
}
@Override
public final SOAPHeaderBlock createSOAPHeaderBlock(OMDataSource source) {
- AxiomSOAPHeaderBlock element = nodeFactory.createNode(getSOAPHelper().getHeaderBlockClass());
+ AxiomSOAPHeaderBlock element = getSOAPHelper().getHeaderBlockType().create(nodeFactory);
element.init(source);
return element;
}
@Override
public final SOAPHeaderBlock createSOAPHeaderBlock(String localName, OMNamespace ns, OMDataSource ds) {
- AxiomSOAPHeaderBlock element = nodeFactory.createNode(getSOAPHelper().getHeaderBlockClass());
+ AxiomSOAPHeaderBlock element = getSOAPHelper().getHeaderBlockType().create(nodeFactory);
element.init(localName, ns, ds);
return element;
}
@Override
public final SOAPHeaderBlock createSOAPHeaderBlock(OMElement element) {
- return importElement(element, getSOAPHelper().getHeaderBlockClass());
+ return importElement(element, getSOAPHelper().getHeaderBlockType());
}
@Override
public final SOAPBody createSOAPBody(SOAPEnvelope parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getBodyClass(), parent, helper.getBodyQName(), envelopeSequence, 1);
+ return createSOAPElement(helper.getBodyType(), parent, helper.getBodyQName(), envelopeSequence, 1);
}
@Override
@@ -164,7 +165,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPFault createSOAPFault(SOAPBody parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getFaultClass(), parent, helper.getFaultQName());
+ return createSOAPElement(helper.getFaultType(), parent, helper.getFaultQName());
}
@Override
@@ -182,7 +183,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPFaultCode createSOAPFaultCode(SOAPFault parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getFaultCodeClass(), parent, helper.getFaultCodeQName());
+ return createSOAPElement(helper.getFaultCodeType(), parent, helper.getFaultCodeQName());
}
@Override
@@ -193,7 +194,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPFaultReason createSOAPFaultReason(SOAPFault parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getFaultReasonClass(), parent, helper.getFaultReasonQName());
+ return createSOAPElement(helper.getFaultReasonType(), parent, helper.getFaultReasonQName());
}
@Override
@@ -204,7 +205,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPFaultRole createSOAPFaultRole(SOAPFault parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getFaultRoleClass(), parent, helper.getFaultRoleQName());
+ return createSOAPElement(helper.getFaultRoleType(), parent, helper.getFaultRoleQName());
}
@Override
@@ -215,7 +216,7 @@ public abstract class SOAPFactoryImpl extends OMFactoryImpl implements SOAPFacto
@Override
public final SOAPFaultDetail createSOAPFaultDetail(SOAPFault parent) {
SOAPHelper helper = getSOAPHelper();
- return createSOAPElement(helper.getFaultDetailClass(), parent, helper.getFaultDetailQName());
+ return createSOAPElement(helper.getFaultDetailType(), parent, helper.getFaultDetailQName());
}
@Override
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/SOAPHelper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/SOAPHelper.java
index 161c33f..660691d 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/SOAPHelper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/SOAPHelper.java
@@ -23,6 +23,7 @@ import javax.xml.namespace.QName;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.intf.factory.AxiomElementType;
import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPVersion;
@@ -36,52 +37,52 @@ public abstract class SOAPHelper {
private final SOAPVersion version;
private final OMNamespace namespace;
private final String specName;
- private final Class<? extends AxiomSOAPEnvelope> envelopeClass;
- private final Class<? extends AxiomSOAPHeader> headerClass;
+ private final AxiomElementType<? extends AxiomSOAPEnvelope> envelopeType;
+ private final AxiomElementType<? extends AxiomSOAPHeader> headerType;
private final QName headerQName;
- private final Class<? extends AxiomSOAPHeaderBlock> headerBlockClass;
- private final Class<? extends AxiomSOAPBody> bodyClass;
+ private final AxiomElementType<? extends AxiomSOAPHeaderBlock> headerBlockType;
+ private final AxiomElementType<? extends AxiomSOAPBody> bodyType;
private final QName bodyQName;
- private final Class<? extends AxiomSOAPFault> faultClass;
+ private final AxiomElementType<? extends AxiomSOAPFault> faultType;
private final QName faultQName;
- private final Class<? extends AxiomSOAPFaultCode> faultCodeClass;
- private final Class<? extends AxiomSOAPFaultReason> faultReasonClass;
- private final Class<? extends AxiomSOAPFaultRole> faultRoleClass;
- private final Class<? extends AxiomSOAPFaultDetail> faultDetailClass;
+ private final AxiomElementType<? extends AxiomSOAPFaultCode> faultCodeType;
+ private final AxiomElementType<? extends AxiomSOAPFaultReason> faultReasonType;
+ private final AxiomElementType<? extends AxiomSOAPFaultRole> faultRoleType;
+ private final AxiomElementType<? extends AxiomSOAPFaultDetail> faultDetailType;
private final QName mustUnderstandAttributeQName;
private final QName roleAttributeQName;
private final QName relayAttributeQName;
protected SOAPHelper(SOAPVersion version, String specName,
- Class<? extends AxiomSOAPEnvelope> envelopeClass,
- Class<? extends AxiomSOAPHeader> headerClass,
- Class<? extends AxiomSOAPHeaderBlock> headerBlockClass,
- Class<? extends AxiomSOAPBody> bodyClass,
- Class<? extends AxiomSOAPFault> faultClass,
- Class<? extends AxiomSOAPFaultCode> faultCodeClass,
- Class<? extends AxiomSOAPFaultReason> faultReasonClass,
- Class<? extends AxiomSOAPFaultRole> faultRoleClass,
- Class<? extends AxiomSOAPFaultDetail> faultDetailClass,
+ AxiomElementType<? extends AxiomSOAPEnvelope> envelopeType,
+ AxiomElementType<? extends AxiomSOAPHeader> headerType,
+ AxiomElementType<? extends AxiomSOAPHeaderBlock> headerBlockType,
+ AxiomElementType<? extends AxiomSOAPBody> bodyType,
+ AxiomElementType<? extends AxiomSOAPFault> faultType,
+ AxiomElementType<? extends AxiomSOAPFaultCode> faultCodeType,
+ AxiomElementType<? extends AxiomSOAPFaultReason> faultReasonType,
+ AxiomElementType<? extends AxiomSOAPFaultRole> faultRoleType,
+ AxiomElementType<? extends AxiomSOAPFaultDetail> faultDetailType,
String roleAttributeLocalName, String relayAttributeLocalName) {
this.version = version;
namespace = new OMNamespaceImpl(version.getEnvelopeURI(),
SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX);
this.specName = specName;
- this.envelopeClass = envelopeClass;
- this.headerClass = headerClass;
+ this.envelopeType = envelopeType;
+ this.headerType = headerType;
headerQName = new QName(version.getEnvelopeURI(), SOAPConstants.HEADER_LOCAL_NAME,
SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX);
- this.headerBlockClass = headerBlockClass;
- this.bodyClass = bodyClass;
+ this.headerBlockType = headerBlockType;
+ this.bodyType = bodyType;
bodyQName = new QName(version.getEnvelopeURI(), SOAPConstants.BODY_LOCAL_NAME,
SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX);
- this.faultClass = faultClass;
+ this.faultType = faultType;
faultQName = new QName(version.getEnvelopeURI(), SOAPConstants.SOAPFAULT_LOCAL_NAME,
SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX);
- this.faultCodeClass = faultCodeClass;
- this.faultReasonClass = faultReasonClass;
- this.faultRoleClass = faultRoleClass;
- this.faultDetailClass = faultDetailClass;
+ this.faultCodeType = faultCodeType;
+ this.faultReasonType = faultReasonType;
+ this.faultRoleType = faultRoleType;
+ this.faultDetailType = faultDetailType;
mustUnderstandAttributeQName = new QName(
version.getEnvelopeURI(), SOAPConstants.ATTR_MUSTUNDERSTAND, SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX);
roleAttributeQName = new QName(
@@ -108,64 +109,64 @@ public abstract class SOAPHelper {
return specName;
}
- public final Class<? extends AxiomSOAPEnvelope> getEnvelopeClass() {
- return envelopeClass;
+ public final AxiomElementType<? extends AxiomSOAPEnvelope> getEnvelopeType() {
+ return envelopeType;
}
- public final Class<? extends AxiomSOAPHeader> getHeaderClass() {
- return headerClass;
+ public final AxiomElementType<? extends AxiomSOAPHeader> getHeaderType() {
+ return headerType;
}
public final QName getHeaderQName() {
return headerQName;
}
- public final Class<? extends AxiomSOAPHeaderBlock> getHeaderBlockClass() {
- return headerBlockClass;
+ public final AxiomElementType<? extends AxiomSOAPHeaderBlock> getHeaderBlockType() {
+ return headerBlockType;
}
- public final Class<? extends AxiomSOAPBody> getBodyClass() {
- return bodyClass;
+ public final AxiomElementType<? extends AxiomSOAPBody> getBodyType() {
+ return bodyType;
}
public final QName getBodyQName() {
return bodyQName;
}
- public final Class<? extends AxiomSOAPFault> getFaultClass() {
- return faultClass;
+ public final AxiomElementType<? extends AxiomSOAPFault> getFaultType() {
+ return faultType;
}
public final QName getFaultQName() {
return faultQName;
}
- public final Class<? extends AxiomSOAPFaultCode> getFaultCodeClass() {
- return faultCodeClass;
+ public final AxiomElementType<? extends AxiomSOAPFaultCode> getFaultCodeType() {
+ return faultCodeType;
}
public final QName getFaultCodeQName() {
return version.getFaultCodeQName();
}
- public final Class<? extends AxiomSOAPFaultReason> getFaultReasonClass() {
- return faultReasonClass;
+ public final AxiomElementType<? extends AxiomSOAPFaultReason> getFaultReasonType() {
+ return faultReasonType;
}
public final QName getFaultReasonQName() {
return version.getFaultReasonQName();
}
- public final Class<? extends AxiomSOAPFaultRole> getFaultRoleClass() {
- return faultRoleClass;
+ public final AxiomElementType<? extends AxiomSOAPFaultRole> getFaultRoleType() {
+ return faultRoleType;
}
public final QName getFaultRoleQName() {
return version.getFaultRoleQName();
}
- public final Class<? extends AxiomSOAPFaultDetail> getFaultDetailClass() {
- return faultDetailClass;
+ public final AxiomElementType<? extends AxiomSOAPFaultDetail> getFaultDetailType() {
+ return faultDetailType;
}
public final QName getFaultDetailQName() {
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap11/SOAP11Helper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap11/SOAP11Helper.java
index 86ba94f..25f6800 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap11/SOAP11Helper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap11/SOAP11Helper.java
@@ -19,6 +19,7 @@
package org.apache.axiom.soap.impl.intf.soap11;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPVersion;
@@ -29,15 +30,15 @@ public final class SOAP11Helper extends SOAPHelper {
private SOAP11Helper() {
super(SOAPVersion.SOAP11, "SOAP 1.1",
- AxiomSOAP11Envelope.class,
- AxiomSOAP11Header.class,
- AxiomSOAP11HeaderBlock.class,
- AxiomSOAP11Body.class,
- AxiomSOAP11Fault.class,
- AxiomSOAP11FaultCode.class,
- AxiomSOAP11FaultReason.class,
- AxiomSOAP11FaultRole.class,
- AxiomSOAP11FaultDetail.class,
+ AxiomNodeFactory::createSOAP11Envelope,
+ AxiomNodeFactory::createSOAP11Header,
+ AxiomNodeFactory::createSOAP11HeaderBlock,
+ AxiomNodeFactory::createSOAP11Body,
+ AxiomNodeFactory::createSOAP11Fault,
+ AxiomNodeFactory::createSOAP11FaultCode,
+ AxiomNodeFactory::createSOAP11FaultReason,
+ AxiomNodeFactory::createSOAP11FaultRole,
+ AxiomNodeFactory::createSOAP11FaultDetail,
SOAP11Constants.ATTR_ACTOR, null);
}
diff --git a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap12/SOAP12Helper.java b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap12/SOAP12Helper.java
index 74a75ba..14b07cf 100644
--- a/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap12/SOAP12Helper.java
+++ b/mixins/om-mixins/src/main/java/org/apache/axiom/soap/impl/intf/soap12/SOAP12Helper.java
@@ -19,6 +19,7 @@
package org.apache.axiom.soap.impl.intf.soap12;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.impl.intf.factory.AxiomNodeFactory;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPVersion;
@@ -29,15 +30,15 @@ public final class SOAP12Helper extends SOAPHelper {
private SOAP12Helper() {
super(SOAPVersion.SOAP12, "SOAP 1.2",
- AxiomSOAP12Envelope.class,
- AxiomSOAP12Header.class,
- AxiomSOAP12HeaderBlock.class,
- AxiomSOAP12Body.class,
- AxiomSOAP12Fault.class,
- AxiomSOAP12FaultCode.class,
- AxiomSOAP12FaultReason.class,
- AxiomSOAP12FaultRole.class,
- AxiomSOAP12FaultDetail.class,
+ AxiomNodeFactory::createSOAP12Envelope,
+ AxiomNodeFactory::createSOAP12Header,
+ AxiomNodeFactory::createSOAP12HeaderBlock,
+ AxiomNodeFactory::createSOAP12Body,
+ AxiomNodeFactory::createSOAP12Fault,
+ AxiomNodeFactory::createSOAP12FaultCode,
+ AxiomNodeFactory::createSOAP12FaultReason,
+ AxiomNodeFactory::createSOAP12FaultRole,
+ AxiomNodeFactory::createSOAP12FaultDetail,
SOAP12Constants.SOAP_ROLE, SOAP12Constants.SOAP_RELAY);
}