Author: indika
Date: Wed Dec 19 02:36:19 2007
New Revision: 605507

URL: http://svn.apache.org/viewvc?rev=605507&view=rev
Log:
commiting patch of Andreas Veithen - to allow use of  NS declaration in any 
parent element of current element ,with in current element for header + falut 
mediator

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

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java?rev=605507&r1=605506&r2=605507&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
 Wed Dec 19 02:36:19 2007
@@ -93,9 +93,13 @@
                     log.error(msg);
                     throw new SynapseException(msg);
                 }
-                faultMediator.setFaultCodeValue(
-                    new QName(OMElementUtils.getNameSpaceWithPrefix(prefix, 
code), name, prefix));
-                
+                String namespaceURI = 
OMElementUtils.getNameSpaceWithPrefix(prefix, code);
+                if (namespaceURI == null) {
+                    String msg = "Invalid namespace prefix '" + prefix + "' in 
code attribute";
+                    log.error(msg);
+                    throw new SynapseException(msg);
+                }
+                faultMediator.setFaultCodeValue(new QName(namespaceURI, name, 
prefix));
             } else if (expression != null) {
                 try {
                     AXIOMXPath xp = new 
AXIOMXPath(expression.getAttributeValue());

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java?rev=605507&r1=605506&r2=605507&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/HeaderMediatorFactory.java
 Wed Dec 19 02:36:19 2007
@@ -21,7 +21,6 @@
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.xpath.AXIOMXPath;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -31,7 +30,6 @@
 import org.jaxen.JaxenException;
 
 import javax.xml.namespace.QName;
-import java.util.Iterator;
 
 /**
  * This builds a Header Mediator parsing the XML configuration supplied
@@ -69,13 +67,13 @@
             if (colonPos != -1) {
                 // has a NS prefix.. find it and the NS it maps into
                 String prefix = nameAtt.substring(0, colonPos);
-                Iterator it = elem.getAllDeclaredNamespaces();
-                while (it.hasNext()) {
-                    OMNamespace n = (OMNamespace) it.next();
-                    if (prefix.equals(n.getPrefix())) {
-                        headerMediator.setQName(
-                            new QName(n.getNamespaceURI(), 
nameAtt.substring(colonPos+1), prefix));
-                    }
+                String namespaceURI = 
OMElementUtils.getNameSpaceWithPrefix(prefix, elem);
+                if (namespaceURI == null) {
+                    String msg = "Invalid namespace prefix '" + prefix + "' in 
name attribute";
+                    log.error(msg);
+                    throw new SynapseException(msg);
+                } else {
+                       headerMediator.setQName(new QName(namespaceURI, 
nameAtt.substring(colonPos+1), prefix));
                 }
             } else {
                 // no prefix

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java?rev=605507&r1=605506&r2=605507&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/OMElementUtils.java
 Wed Dec 19 02:36:19 2007
@@ -51,15 +51,23 @@
             log.warn("Searching for null NS prefix and/or using null 
OMElement");
             return null;
         }
-
-        Iterator iter = elem.getAllDeclaredNamespaces();
-        while (iter.hasNext()) {
-            OMNamespace ns = (OMNamespace) iter.next();
-            if (prefix.equals(ns.getPrefix())) {
-                return ns.getNamespaceURI();     
+        
+        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;
             }
         }
-        return null;
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to