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


Reply via email to