You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by in...@apache.org on 2007/12/19 11:36:21 UTC

svn commit: r605507 - in /webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml: FaultMediatorFactory.java HeaderMediatorFactory.java OMElementUtils.java

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: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org