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 2015/08/30 22:15:22 UTC
svn commit: r1700156 - in /webservices/axiom/trunk:
aspects/core-aspects/src/main/java/org/apache/axiom/core/
aspects/dom-aspects/src/main/java/org/apache/axiom/dom/
aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/
implementations/axio...
Author: veithen
Date: Sun Aug 30 20:15:21 2015
New Revision: 1700156
URL: http://svn.apache.org/r1700156
Log:
Improve the consistency of the NodeFactory interface.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java Sun Aug 30 20:15:21 2015
@@ -72,8 +72,6 @@ public interface AttributeMatcher {
*
* @param nodeFactory
* the node factory the should be used to create the attribute
- * @param document
- * the document in which the attribute is created
* @param namespaceURI
* see above
* @param name
@@ -84,7 +82,7 @@ public interface AttributeMatcher {
* see above
* @return
*/
- CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value);
+ CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value);
/**
* Update an existing attribute. The values of the <code>prefix</code> and <code>value</code>
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj Sun Aug 30 20:15:21 2015
@@ -118,8 +118,7 @@ public aspect CoreElementSupport {
attr = attr.coreGetNextAttribute();
}
if (attr == null) {
- CoreDocument document = coreGetOwnerDocument(false);
- CoreAttribute newAttr = matcher.createAttribute(coreGetNodeFactory(), document, namespaceURI, name, prefix, value);
+ CoreAttribute newAttr = matcher.createAttribute(coreGetNodeFactory(), namespaceURI, name, prefix, value);
if (previousAttr == null) {
internalAppendAttribute(newAttr);
} else {
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java Sun Aug 30 20:15:21 2015
@@ -29,4 +29,6 @@ public interface CoreNamespaceDeclaratio
* namespace
*/
String coreGetDeclaredPrefix();
+
+ void coreSetDeclaredNamespace(String prefix, String namespaceURI);
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java Sun Aug 30 20:15:21 2015
@@ -84,8 +84,7 @@ public final class NSAwareAttributeMatch
return ((CoreNSAwareAttribute)attr).coreGetLocalName();
}
- // TODO: get rid of the CoreDocument argument here
- public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
+ public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
CoreNSAwareAttribute attr = nodeFactory.createNSAwareAttribute();
attr.coreSetName(namespaceURI, name, prefix);
attr.coreSetCharacterData(value, null);
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java Sun Aug 30 20:15:21 2015
@@ -49,8 +49,10 @@ public final class NamespaceDeclarationM
}
}
- public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
- return nodeFactory.createNamespaceDeclaration(document, name, value);
+ public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
+ CoreNamespaceDeclaration decl = nodeFactory.createNamespaceDeclaration();
+ decl.coreSetDeclaredNamespace(name, value);
+ return decl;
}
public String getNamespaceURI(CoreAttribute attr) {
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java Sun Aug 30 20:15:21 2015
@@ -24,9 +24,9 @@ public interface NodeFactory {
CoreCharacterDataNode createCharacterDataNode();
CoreCDATASection createCDATASection();
<T extends CoreNSAwareElement> T createNSAwareElement(Class<T> type);
- CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value, String type);
+ CoreNSUnawareAttribute createNSUnawareAttribute();
CoreNSAwareAttribute createNSAwareAttribute();
- CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document, String prefix, String namespaceURI);
+ CoreNamespaceDeclaration createNamespaceDeclaration();
CoreProcessingInstruction createProcessingInstruction();
CoreEntityReference createEntityReference();
CoreComment createComment();
Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj Sun Aug 30 20:15:21 2015
@@ -151,7 +151,11 @@ public aspect DOMDocumentSupport {
public final Attr DOMDocument.createAttribute(String name) {
NSUtil.validateName(name);
- return (DOMAttribute)coreGetNodeFactory().createAttribute(this, name, "", "CDATA");
+ DOMNSUnawareAttribute attr = (DOMNSUnawareAttribute)coreGetNodeFactory().createNSUnawareAttribute();
+ attr.coreSetOwnerDocument(this);
+ attr.coreSetName(name);
+ attr.coreSetType("CDATA");
+ return attr;
}
public final Attr DOMDocument.createAttributeNS(String namespaceURI, String qualifiedName) {
@@ -166,7 +170,10 @@ public aspect DOMDocumentSupport {
localName = qualifiedName.substring(i+1);
}
if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
- return (DOMAttribute)coreGetNodeFactory().createNamespaceDeclaration(this, NSUtil.getDeclaredPrefix(localName, prefix), null);
+ DOMNamespaceDeclaration decl = (DOMNamespaceDeclaration)coreGetNodeFactory().createNamespaceDeclaration();
+ decl.coreSetOwnerDocument(this);
+ decl.coreSetDeclaredNamespace(NSUtil.getDeclaredPrefix(localName, prefix), "");
+ return decl;
} else {
namespaceURI = NSUtil.normalizeNamespaceURI(namespaceURI);
NSUtil.validateAttributeName(namespaceURI, localName, prefix);
@@ -235,7 +242,12 @@ public aspect DOMDocumentSupport {
return node;
case NS_AWARE_ATTRIBUTE_NODE:
if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
- return (DOMAttribute)coreGetNodeFactory().createNamespaceDeclaration(this, NSUtil.getDeclaredPrefix(localName, prefix), ((DOMNSAwareAttribute)node).getValue());
+ DOMNamespaceDeclaration decl = (DOMNamespaceDeclaration)coreGetNodeFactory().createNamespaceDeclaration();
+ decl.coreSetOwnerDocument(this);
+ // TODO: we should have a generic method to move the content over to the new node
+ decl.coreSetDeclaredNamespace(NSUtil.getDeclaredPrefix(localName, prefix), ((DOMNSAwareAttribute)node).getValue());
+ // TODO: what about replacing the node in the tree??
+ return decl;
} else {
NSUtil.validateAttributeName(namespaceURI, localName, prefix);
((DOMNSAwareAttribute)node).coreSetName(namespaceURI, localName, prefix);
Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java Sun Aug 30 20:15:21 2015
@@ -22,6 +22,7 @@ import org.apache.axiom.core.AttributeMa
import org.apache.axiom.core.ClonePolicy;
import org.apache.axiom.core.CoreAttribute;
import org.apache.axiom.core.CoreDocument;
+import org.apache.axiom.core.CoreNSUnawareAttribute;
import org.apache.axiom.core.CoreNode;
import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.core.DetachPolicy;
@@ -70,8 +71,12 @@ public final class Policies {
return ((DOMAttribute)attr).getName();
}
- public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
- return nodeFactory.createAttribute(document, name, value, null);
+ public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
+ CoreNSUnawareAttribute attr = nodeFactory.createNSUnawareAttribute();
+ attr.coreSetName(name);
+ attr.coreSetCharacterData(value, null);
+ // TODO: set type?
+ return attr;
}
public void update(CoreAttribute attr, String prefix, String value) {
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj Sun Aug 30 20:15:21 2015
@@ -35,6 +35,10 @@ public aspect AxiomNamespaceDeclarationS
return declaredNamespace;
}
+ public final void AxiomNamespaceDeclaration.coreSetDeclaredNamespace(String prefix, String namespaceURI) {
+ setDeclaredNamespace(new OMNamespaceImpl(namespaceURI, prefix));
+ }
+
public final void AxiomNamespaceDeclaration.setDeclaredNamespace(OMNamespace declaredNamespace) {
this.declaredNamespace = declaredNamespace;
coreSetCharacterData(declaredNamespace.getNamespaceURI(), Policies.DETACH_POLICY);
Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java Sun Aug 30 20:15:21 2015
@@ -25,8 +25,8 @@ import org.apache.axiom.om.OMCloneOption
import org.apache.axiom.om.OMFactory;
public class NSUnawareAttribute extends AttrImpl implements DOMNSUnawareAttribute {
- public NSUnawareAttribute(DocumentImpl ownerDocument, OMFactory factory) {
- super(ownerDocument, factory);
+ public NSUnawareAttribute(OMFactory factory) {
+ super(null, factory);
}
public final NodeFactory coreGetNodeFactory() {
Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java Sun Aug 30 20:15:21 2015
@@ -22,19 +22,13 @@ import org.apache.axiom.core.ClonePolicy
import org.apache.axiom.dom.DOMNamespaceDeclaration;
import org.apache.axiom.om.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.common.AxiomNamespaceDeclaration;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
public final class NamespaceDeclaration extends AttrImpl implements DOMNamespaceDeclaration, AxiomNamespaceDeclaration {
- private NamespaceDeclaration(OMFactory factory) {
+ public NamespaceDeclaration(OMFactory factory) {
super(null, factory);
}
-
- public NamespaceDeclaration(DocumentImpl ownerDocument, OMNamespace namespace, OMFactory factory) {
- super(ownerDocument, factory);
- setDeclaredNamespace(namespace);
- }
@Override
final ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java Sun Aug 30 20:15:21 2015
@@ -49,7 +49,6 @@ import org.apache.axiom.om.impl.builder.
import org.apache.axiom.om.impl.common.AxiomElement;
import org.apache.axiom.om.impl.common.AxiomNamespaceDeclaration;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
-import org.apache.axiom.om.impl.common.Policies;
import org.apache.axiom.om.impl.common.factory.AxiomNodeFactory;
import org.apache.axiom.om.impl.dom.CDATASectionImpl;
import org.apache.axiom.om.impl.dom.CommentImpl;
@@ -295,25 +294,22 @@ public class OMDOMFactory implements Axi
return type.cast(element);
}
- public final CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value, String type) {
- NSUnawareAttribute attr = new NSUnawareAttribute((DocumentImpl)document, this);
- attr.coreSetName(name);
- attr.coreSetCharacterData(value, Policies.DETACH_POLICY);
-// attr.coreSetType(type);
- return attr;
+ public final CoreNSUnawareAttribute createNSUnawareAttribute() {
+ return new NSUnawareAttribute(this);
}
public final CoreNSAwareAttribute createNSAwareAttribute() {
return new NSAwareAttribute(this);
}
- public final CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document,
- String prefix, String namespaceURI) {
- return new NamespaceDeclaration((DocumentImpl)document, new OMNamespaceImpl(namespaceURI == null ? "" : namespaceURI, prefix), this);
+ public final CoreNamespaceDeclaration createNamespaceDeclaration() {
+ return new NamespaceDeclaration(this);
}
public final AxiomNamespaceDeclaration createNamespaceDeclaration(OMNamespace namespace) {
- return new NamespaceDeclaration(null, namespace, this);
+ NamespaceDeclaration decl = new NamespaceDeclaration(this);
+ decl.setDeclaredNamespace(namespace);
+ return decl;
}
public final CoreProcessingInstruction createProcessingInstruction() {
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java Sun Aug 30 20:15:21 2015
@@ -300,8 +300,7 @@ public class OMLinkedListImplFactory imp
return type.cast(element);
}
- public CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value,
- String type) {
+ public CoreNSUnawareAttribute createNSUnawareAttribute() {
// TODO
throw new UnsupportedOperationException();
}
@@ -310,8 +309,7 @@ public class OMLinkedListImplFactory imp
return new OMAttributeImpl(this);
}
- public final CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document,
- String prefix, String namespaceURI) {
+ public final CoreNamespaceDeclaration createNamespaceDeclaration() {
// TODO
throw new UnsupportedOperationException();
}