Author: veithen
Date: Sun Nov 15 18:46:29 2015
New Revision: 1714486
URL: http://svn.apache.org/viewvc?rev=1714486&view=rev
Log:
Integrate the strict namespace lookup flag into Semantics.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.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/Semantics.java
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
(original)
+++
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
Sun Nov 15 18:46:29 2015
@@ -127,17 +127,14 @@ public interface CoreElement extends Cor
* @param prefix
* The prefix to look for. If this parameter is the empty
string, then the URI of the
* default namespace will be returned.
- * @param strict
- * If this parameter is set to <code>true</code>, only
namespace declarations will be
- * taken into account. If set to <code>false</code> the
prefixes of the element and
- * its ancestors are also taken into account (limited to
instanced of
- * {@link CoreNSAwareElement}), even if no explicit namespace
declarations exists for
- * these prefixes.
+ * @param semantics
+ * The API semantics to use.
* @return the namespace URI or <code>null</code> if the prefix is not
bound; if the prefix is
* the empty string and no default namespace declaration exists,
then an empty string is
* returned
+ * @see Semantics#isUseStrictNamespaceLookup()
*/
- String coreLookupNamespaceURI(String prefix, boolean strict);
+ String coreLookupNamespaceURI(String prefix, Semantics semantics);
/**
* Find a prefix associated to the given namespace URI. Default namespaces
are not taken into
@@ -146,17 +143,14 @@ public interface CoreElement extends Cor
* @param namespaceURI
* The namespace URI to look for. This parameter must not be
<code>null</code> (XML
* forbids to bind a prefix to the null namespace).
- * @param strict
- * If this parameter is set to <code>true</code>, only
namespace declarations will be
- * taken into account. If set to <code>false</code> the
prefixes of the element and
- * its ancestors are also taken into account (limited to
instanced of
- * {@link CoreNSAwareElement}), even if no explicit namespace
declarations exists for
- * these prefixes.
+ * @param semantics
+ * The API semantics to use.
* @return a prefix bound to the given namespace URI or <code>null</code>
if none is found
* @throws IllegalArgumentException
* if <code>namespaceURI</code> is <code>null</code>
+ * @see Semantics#isUseStrictNamespaceLookup()
*/
// TODO: wrong Javadoc: null vs. empty string
// TODO: we can support default namespaces!
- String coreLookupPrefix(String namespaceURI, boolean strict);
+ String coreLookupPrefix(String namespaceURI, Semantics semantics);
}
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=1714486&r1=1714485&r2=1714486&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 Nov 15 18:46:29 2015
@@ -135,8 +135,8 @@ public aspect CoreElementSupport {
public abstract String CoreElement.getImplicitNamespaceURI(String prefix);
- public final String CoreElement.coreLookupNamespaceURI(String prefix,
boolean strict) {
- if (!strict) {
+ public final String CoreElement.coreLookupNamespaceURI(String prefix,
Semantics semantics) {
+ if (!semantics.isUseStrictNamespaceLookup()) {
String namespaceURI = getImplicitNamespaceURI(prefix);
if (namespaceURI != null) {
return namespaceURI;
@@ -152,7 +152,7 @@ public aspect CoreElementSupport {
}
CoreElement parentElement = coreGetParentElement();
if (parentElement != null) {
- return parentElement.coreLookupNamespaceURI(prefix, strict);
+ return parentElement.coreLookupNamespaceURI(prefix, semantics);
} else if (prefix.length() == 0) {
return "";
} else {
@@ -162,11 +162,11 @@ public aspect CoreElementSupport {
public abstract String CoreElement.getImplicitPrefix(String namespaceURI);
- public final String CoreElement.coreLookupPrefix(String namespaceURI,
boolean strict) {
+ public final String CoreElement.coreLookupPrefix(String namespaceURI,
Semantics semantics) {
if (namespaceURI == null) {
throw new IllegalArgumentException("namespaceURI must not be
null");
}
- if (!strict) {
+ if (!semantics.isUseStrictNamespaceLookup()) {
String prefix = getImplicitPrefix(namespaceURI);
if (prefix != null) {
return prefix;
@@ -182,10 +182,10 @@ public aspect CoreElementSupport {
}
CoreElement parentElement = coreGetParentElement();
if (parentElement != null) {
- String prefix = parentElement.coreLookupPrefix(namespaceURI,
strict);
+ String prefix = parentElement.coreLookupPrefix(namespaceURI,
semantics);
// 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) {
+ if (!semantics.isUseStrictNamespaceLookup() &&
getImplicitNamespaceURI(prefix) != null) {
return null;
}
for (CoreAttribute attr = coreGetFirstAttribute(); attr != null;
attr = attr.coreGetNextAttribute()) {
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
(original)
+++
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
Sun Nov 15 18:46:29 2015
@@ -23,4 +23,14 @@ package org.apache.axiom.core;
*/
public interface Semantics {
DetachPolicy getDetachPolicy();
+
+ /**
+ * Determine how namespace lookups are performed.
+ *
+ * @return {@code true} if only namespace declarations are taken into
account. {@code false} if
+ * the prefixes of the element and its ancestors are also taken
into account (limited to
+ * instanced of {@link CoreNSAwareElement}), even if no explicit
namespace declarations
+ * exists for these prefixes.
+ */
+ boolean isUseStrictNamespaceLookup();
}
Modified:
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
(original)
+++
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
Sun Nov 15 18:46:29 2015
@@ -41,7 +41,7 @@ public aspect DOMNodeSupport {
} else if (prefix.length() == 0) {
return null;
}
- String namespaceURI = context.coreLookupNamespaceURI(prefix, false);
+ String namespaceURI = context.coreLookupNamespaceURI(prefix,
DOMSemantics.INSTANCE);
return namespaceURI == null || namespaceURI.length() == 0 ? null :
namespaceURI;
}
@@ -53,7 +53,7 @@ public aspect DOMNodeSupport {
if (namespaceURI == null) {
return null;
} else {
- String prefix = context.coreLookupPrefix(namespaceURI, false);
+ String prefix = context.coreLookupPrefix(namespaceURI,
DOMSemantics.INSTANCE);
return prefix == null || prefix.length() == 0 ? null : prefix;
}
}
@@ -66,7 +66,7 @@ public aspect DOMNodeSupport {
if (namespaceURI == null) {
namespaceURI = "";
}
- return namespaceURI.equals(context.coreLookupNamespaceURI("", false));
+ return namespaceURI.equals(context.coreLookupNamespaceURI("",
DOMSemantics.INSTANCE));
}
public final Node DOMNode.cloneNode(boolean deep) {
Modified:
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
(original)
+++
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
Sun Nov 15 18:46:29 2015
@@ -39,6 +39,10 @@ public final class DOMSemantics implemen
return DetachPolicy.SAME_DOCUMENT;
}
+ public boolean isUseStrictNamespaceLookup() {
+ return false;
+ }
+
/**
* {@link AttributeMatcher} implementation that matches attributes based
on their name, i.e.
* based on the prefix and local name for namespace aware attributes.
Parameters are defined as
Modified:
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
(original)
+++
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
Sun Nov 15 18:46:29 2015
@@ -32,5 +32,9 @@ public final class FOMSemantics implemen
return DetachPolicy.NEW_DOCUMENT;
}
+ public boolean isUseStrictNamespaceLookup() {
+ return true;
+ }
+
public static final AttributeMatcher ATTRIBUTE_MATCHER = new
NSAwareAttributeMatcher(INSTANCE, false, false);
}
Modified:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java?rev=1714486&r1=1714485&r2=1714486&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
(original)
+++
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
Sun Nov 15 18:46:29 2015
@@ -41,6 +41,10 @@ public final class AxiomSemantics implem
return DetachPolicy.NEW_DOCUMENT;
}
+ public boolean isUseStrictNamespaceLookup() {
+ return true;
+ }
+
public static final AttributeMatcher ATTRIBUTE_MATCHER = new
NSAwareAttributeMatcher(
INSTANCE,
false, // Axiom doesn't support namespace unaware attributes