Author: veithen
Date: Sat May 28 18:43:42 2016
New Revision: 1745919

URL: http://svn.apache.org/viewvc?rev=1745919&view=rev
Log:
Use the proper Axiom API to resolve QNames.

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
    
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/HeaderMediatorConfigurationTest.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java?rev=1745919&r1=1745918&r2=1745919&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
 Sat May 28 18:43:42 2016
@@ -106,19 +106,14 @@ public class FaultMediatorFactory extend
 
             if (value != null) {
                 String strValue = value.getAttributeValue();
-                String prefix = null;
-                String name = null;
-                if (strValue.indexOf(":") != -1) {
-                    prefix = strValue.substring(0, strValue.indexOf(":"));
-                    name = strValue.substring(strValue.indexOf(":")+1);
-                } else {
+                QName qname = code.resolveQName(strValue);
+                if (qname == null) {
+                    handleException("Invalid QName '" + strValue + "' in code 
attribute");
+                } else if (qname.getNamespaceURI().isEmpty()) {
                     handleException("A QName is expected for fault code as 
prefix:name");
+                } else {
+                    faultMediator.setFaultCodeValue(qname);
                 }
-                String namespaceURI = 
OMElementUtils.getNameSpaceWithPrefix(prefix, code);
-                if (namespaceURI == null) {
-                    handleException("Invalid namespace prefix '" + prefix + "' 
in code attribute");
-                }
-                faultMediator.setFaultCodeValue(new QName(namespaceURI, name, 
prefix));
             } else if (expression != null) {
                 try {
                     faultMediator.setFaultCodeExpr(

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java?rev=1745919&r1=1745918&r2=1745919&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
 Sat May 28 18:43:42 2016
@@ -139,20 +139,14 @@ public class HeaderMediatorFactory exten
 
     private void setSOAPHeader(HeaderMediator headerMediator, OMElement elem, 
OMAttribute name) {
         String nameAtt = name.getAttributeValue();
-        int colonPos = nameAtt.indexOf(":");
-        if (colonPos != -1) {
-            // has a NS prefix.. find it and the NS it maps into
-            String prefix = nameAtt.substring(0, colonPos);
-            String namespaceURI = 
OMElementUtils.getNameSpaceWithPrefix(prefix, elem);
-            if (namespaceURI == null) {
-                handleException("Invalid namespace prefix '" + prefix + "' in 
name attribute");
-            } else {
-                headerMediator.setQName(new QName(namespaceURI, 
nameAtt.substring(colonPos+1),
-                                                  prefix));
-            }
-        } else {
+        QName qname = elem.resolveQName(nameAtt);
+        if (qname == null) {
+            handleException("Invalid QName '" + nameAtt + "' in name 
attribute");
+        } else if (qname.getNamespaceURI().isEmpty()) {
             handleException("Invalid SOAP header: " + nameAtt + " specified at 
the " +
-                            "header mediator. All SOAP headers must be 
namespace qualified.");
+                    "header mediator. All SOAP headers must be namespace 
qualified.");
+        } else {
+            headerMediator.setQName(qname);
         }
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java?rev=1745919&r1=1745918&r2=1745919&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
 Sat May 28 18:43:42 2016
@@ -19,11 +19,9 @@
 
 package org.apache.synapse.config.xml;
 
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.SynapseException;
 import org.jaxen.JaxenException;
 import org.jaxen.XPath;
@@ -34,39 +32,6 @@ import java.util.Iterator;
  * Holds Axiom utility methods used by Synapse
  */
 public class OMElementUtils {
-
-    private static final Log log = LogFactory.getLog(OMElementUtils.class);
-
-    /**
-     * Return the namespace with the given prefix, using the given element
-     * @param prefix the prefix looked up
-     * @param elem the source element to use
-     * @return the namespace which maps to the prefix or null
-     */
-    public static String getNameSpaceWithPrefix(String prefix, OMElement elem) 
{
-        if (prefix == null || elem == null) {
-            log.warn("Searching for null NS prefix and/or using null 
OMElement");
-            return null;
-        }
-        
-        OMElement currentElem = elem;
-        while (true) {
-            Iterator iter = currentElem.getAllDeclaredNamespaces();
-            while (iter.hasNext()) {
-                OMNamespace ns = (OMNamespace) iter.next();
-                if (prefix.equals(ns.getPrefix())) {
-                    return ns.getNamespaceURI();     
-                }
-            }
-            OMContainer parent = currentElem.getParent();
-            if (parent != null && parent instanceof OMElement) {
-                currentElem = (OMElement)parent;
-            } else {
-                return null;
-            }
-        }
-    }
-
     /**
      * Add the namespace declarations of a given {@link OMElement} to the 
namespace
      * context of an XPath expression. Typically this method is used with an 
XPath

Modified: 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/HeaderMediatorConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/HeaderMediatorConfigurationTest.java?rev=1745919&r1=1745918&r2=1745919&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/HeaderMediatorConfigurationTest.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/HeaderMediatorConfigurationTest.java
 Sat May 28 18:43:42 2016
@@ -31,7 +31,7 @@ public class HeaderMediatorConfiguration
 
     public void testNamespaceUnqualifiedScenarioOne() {
         try {
-            String inputXml = "<header 
xmlns=\"http://ws.apache.org/ns/synapse\"; name=\"MyHeader\" 
value=\"MyValue\"/>";
+            String inputXml = "<s:header 
xmlns:s=\"http://ws.apache.org/ns/synapse\"; name=\"MyHeader\" 
value=\"MyValue\"/>";
             HeaderMediatorFactory fac = new HeaderMediatorFactory();
             fac.createMediator(AXIOMUtil.stringToOM(inputXml), new 
Properties());
             fail("HeaderMediator created with namespace unqualified SOAP 
header");
@@ -42,7 +42,7 @@ public class HeaderMediatorConfiguration
         }
 
         try {
-            String inputXml = "<header 
xmlns=\"http://ws.apache.org/ns/synapse\"; name=\"MyHeader\" 
action=\"remove\"/>";
+            String inputXml = "<s:header 
xmlns:s=\"http://ws.apache.org/ns/synapse\"; name=\"MyHeader\" 
action=\"remove\"/>";
             HeaderMediatorFactory fac = new HeaderMediatorFactory();
             fac.createMediator(AXIOMUtil.stringToOM(inputXml), new 
Properties());
             fail("HeaderMediator created with namespace unqualified SOAP 
header");


Reply via email to