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/06/20 20:20:01 UTC
svn commit: r1686660 - in /webservices/axiom/branches/attrs-aspects/aspects:
core-aspects/src/main/java/org/apache/axiom/core/
dom-aspects/src/main/java/org/apache/axiom/dom/
Author: veithen
Date: Sat Jun 20 18:20:00 2015
New Revision: 1686660
URL: http://svn.apache.org/r1686660
Log:
Use the namespace URI/prefix lookup methods in core-aspects.
Modified:
webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj
webservices/axiom/branches/attrs-aspects/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
Modified: webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj?rev=1686660&r1=1686659&r2=1686660&view=diff
==============================================================================
--- webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj (original)
+++ webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj Sat Jun 20 18:20:00 2015
@@ -229,6 +229,9 @@ public aspect CoreElementSupport {
String prefix = parentElement.coreLookupPrefix(namespaceURI, strict);
// The prefix declared on one of the ancestors may be masked by another
// namespace declaration on this element (or one of its descendants).
+ if (!strict && getImplicitNamespaceURI(prefix) != null) {
+ return null;
+ }
for (CoreAttribute attr = coreGetFirstAttribute(); attr != null; attr = attr.coreGetNextAttribute()) {
if (attr instanceof CoreNamespaceDeclaration) {
CoreNamespaceDeclaration decl = (CoreNamespaceDeclaration)attr;
Modified: webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj?rev=1686660&r1=1686659&r2=1686660&view=diff
==============================================================================
--- webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj (original)
+++ webservices/axiom/branches/attrs-aspects/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj Sat Jun 20 18:20:00 2015
@@ -20,12 +20,10 @@ package org.apache.axiom.core;
public aspect CoreNSAwareElementSupport {
public final String CoreNSAwareElement.getImplicitNamespaceURI(String prefix) {
- // TODO
- throw new UnsupportedOperationException();
+ return prefix.equals(coreGetPrefix()) ? coreGetNamespaceURI() : null;
}
public final String CoreNSAwareElement.getImplicitPrefix(String namespaceURI) {
- // TODO
- throw new UnsupportedOperationException();
+ return namespaceURI.equals(coreGetNamespaceURI()) ? coreGetPrefix() : null;
}
}
Modified: webservices/axiom/branches/attrs-aspects/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/attrs-aspects/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj?rev=1686660&r1=1686659&r2=1686660&view=diff
==============================================================================
--- webservices/axiom/branches/attrs-aspects/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj (original)
+++ webservices/axiom/branches/attrs-aspects/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj Sat Jun 20 18:20:00 2015
@@ -26,7 +26,6 @@ import org.apache.axiom.core.CoreNSAware
import org.apache.axiom.core.CoreNamespaceDeclaration;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.TypeInfo;
@@ -53,72 +52,23 @@ public aspect DOMElementSupport {
throw new UnsupportedOperationException();
}
- public final String DOMElement.lookupNamespaceURI(String specifiedPrefix) {
- String namespace = this.getNamespaceURI();
- String prefix = this.getPrefix();
- // First check for namespaces implicitly defined by the namespace prefix/URI of the element
- if (prefix == null && specifiedPrefix == null
- || prefix != null && prefix.equals(specifiedPrefix)) {
- return namespace;
- }
- // looking in attributes
- if (this.hasAttributes()) {
- NamedNodeMap map = this.getAttributes();
- int length = map.getLength();
- for (int i = 0; i < length; i++) {
- Node attr = map.item(i);
- namespace = attr.getNamespaceURI();
- if (namespace != null && namespace.equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
- // At this point we know that either the prefix of the attribute is null and
- // the local name is "xmlns" or the prefix is "xmlns" and the local name is the
- // namespace prefix declared by the namespace declaration. We check that constraint
- // when the attribute is created.
- String attrPrefix = attr.getPrefix();
- if ((specifiedPrefix == null && attrPrefix == null)
- || (specifiedPrefix != null && attrPrefix != null
- && attr.getLocalName().equals(specifiedPrefix))) {
- String value = attr.getNodeValue();
- return value.length() > 0 ? value : null;
- }
- }
- }
+ public final String DOMElement.lookupNamespaceURI(String prefix) {
+ if (prefix == null) {
+ prefix = "";
+ } else if (prefix.length() == 0) {
+ return null;
}
- // looking in ancestor
- DOMParentNode parent = (DOMParentNode)coreGetParent();
- return parent instanceof Element ? parent.lookupNamespaceURI(specifiedPrefix) : null;
+ String namespaceURI = coreLookupNamespaceURI(prefix, false);
+ return namespaceURI == null || namespaceURI.length() == 0 ? null : namespaceURI;
}
public final String DOMElement.lookupPrefix(String namespaceURI) {
- return lookupPrefix(namespaceURI, this);
- }
-
- private final String DOMElement.lookupPrefix(String namespaceURI, Element originalElement) {
- if (namespaceURI == null || namespaceURI.length() == 0) {
+ if (namespaceURI == null) {
return null;
+ } else {
+ String prefix = coreLookupPrefix(namespaceURI, false);
+ return prefix == null || prefix.length() == 0 ? null : prefix;
}
- if (namespaceURI.equals(getNamespaceURI())) {
- String prefix = getPrefix();
- if (namespaceURI.equals(originalElement.lookupNamespaceURI(prefix))) {
- return prefix;
- }
- }
- if (this.hasAttributes()) {
- NamedNodeMap map = this.getAttributes();
- int length = map.getLength();
- for (int i = 0; i < length; i++) {
- Node attr = map.item(i);
- String attrPrefix = attr.getPrefix();
- if (attrPrefix != null && attrPrefix.equals(XMLConstants.XMLNS_ATTRIBUTE)
- && attr.getNodeValue().equals(namespaceURI)) {
- String prefix = attr.getLocalName();
- if (namespaceURI.equals(originalElement.lookupNamespaceURI(prefix))) {
- return prefix;
- }
- }
- }
- }
- DOMParentNode parent = (DOMParentNode)coreGetParent();
- return parent instanceof Element ? ((DOMElement)parent).lookupPrefix(namespaceURI, originalElement) : null;
}
public final boolean DOMElement.hasAttributes() {