You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by gd...@apache.org on 2006/04/13 14:16:04 UTC

svn commit: r393790 - in /incubator/synapse/trunk/java: modules/core/src/org/apache/synapse/mediators/builtin/axis2/ modules/core/src/org/apache/synapse/mediators/filters/ modules/core/src/org/apache/synapse/xml/ repository/conf/

Author: gdaniels
Date: Thu Apr 13 05:15:58 2006
New Revision: 393790

URL: http://svn.apache.org/viewcvs?rev=393790&view=rev
Log:
* Fix synapse.xml so the demo works (correct regexp)

* Check log.isDebugEnabled() before logging each result of RegexMediator (saves a little time)

* Add ability to specify <faultCode> and <reason> in the FaultMediator configuration.  Will improve this (and connect it up to the actual fault generation) as soon as I figure out how to easily configure AXIOM SOAP faults.

Modified:
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
    incubator/synapse/trunk/java/repository/conf/synapse.xml

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java?rev=393790&r1=393789&r2=393790&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java Thu Apr 13 05:15:58 2006
@@ -28,47 +28,71 @@
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMDocument;
 
+import javax.xml.namespace.QName;
+
 /**
  * <p/> This returns a fault in response to this message
  */
 public class FaultMediator implements Mediator{
 
-	private Log log = LogFactory.getLog(getClass());
-
-	public boolean mediate(SynapseMessage smc) {
-		log.debug("process");
-
-		SOAPEnvelope envelop = smc.getEnvelope();
-		SOAPFactory factory;
-		if (envelop != null) {
-			if (envelop.getNamespace().getName().equals(
-					SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
-				factory = OMAbstractFactory.getSOAP12Factory();
-			} else {
-				factory = OMAbstractFactory.getSOAP11Factory();
-			}
-
-		} else {
-			factory = OMAbstractFactory.getSOAP11Factory();
-		}
-		try {
-			OMDocument soapFaultDocument = factory.createOMDocument();
-			SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope();
-			soapFaultDocument.addChild(faultEnvelope);
-			smc.setEnvelope(faultEnvelope);
-		} catch (Exception e) {
-			throw new SynapseException(e);
-		}
-		smc.setResponse(true);
-
-		// Flipping the headers
-		EndpointReference tempEPR = smc.getTo();
-		smc.setTo(smc.getReplyTo());
-		smc.setReplyTo(tempEPR);
+    private Log log = LogFactory.getLog(getClass());
 
-		smc.getSynapseEnvironment().injectMessage(smc);
+    private QName faultCode;
+    private String reason;
 
-		return false;
-	}
+    public boolean mediate(SynapseMessage smc) {
+        log.debug("process");
 
+        SOAPEnvelope envelop = smc.getEnvelope();
+        SOAPFactory factory;
+        if (envelop != null) {
+            if (envelop.getNamespace().getName().equals(
+                    SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+                factory = OMAbstractFactory.getSOAP12Factory();
+            } else {
+                factory = OMAbstractFactory.getSOAP11Factory();
+            }
+
+        } else {
+            factory = OMAbstractFactory.getSOAP11Factory();
+        }
+        try {
+            // TODO : Figure out how to easily gen the correct fault
+
+            // Replace this
+            OMDocument soapFaultDocument = factory.createOMDocument();
+            SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope();
+            soapFaultDocument.addChild(faultEnvelope);
+
+            smc.setEnvelope(faultEnvelope);
+        } catch (Exception e) {
+            throw new SynapseException(e);
+        }
+        smc.setResponse(true);
+
+        // Flipping the headers
+        EndpointReference tempEPR = smc.getTo();
+        smc.setTo(smc.getReplyTo());
+        smc.setReplyTo(tempEPR);
+
+        smc.getSynapseEnvironment().injectMessage(smc);
+
+        return false;
+    }
+
+    public QName getFaultCode() {
+        return faultCode;
+    }
+
+    public void setFaultCode(QName faultCode) {
+        this.faultCode = faultCode;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
 }

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java?rev=393790&r1=393789&r2=393790&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java Thu Apr 13 05:15:58 2006
@@ -74,7 +74,8 @@
 			log.debug("trying to process with empty pattern");
 			return true;
 		}
-		String toMatch = null;
+
+        String toMatch;
 		if (property != null) {
 			toMatch = smc.getProperty(property).toString();
 		} else {
@@ -84,11 +85,18 @@
 		if (toMatch==null) return false;  
 
 		if (pattern.matcher(toMatch).matches()) {
-			log.debug("Regex pattern " + pattern.toString() + " matched "
-					+ toMatch);
+            if (log.isDebugEnabled()) {
+                log.debug("Regex pattern " + pattern.pattern() + " matched "
+                        + toMatch);
+            }
             return true;
 		}
-		return false;
+
+        if (log.isDebugEnabled()) {
+            log.debug("Regex pattern '" + pattern.pattern() +
+                    "' failed to match '" + toMatch);
+        }
+        return false;
 	}
 
 }

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java?rev=393790&r1=393789&r2=393790&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java Thu Apr 13 05:15:58 2006
@@ -33,16 +33,27 @@
     private static final QName HEADER_Q = new QName(
             Constants.SYNAPSE_NAMESPACE, "fault");
 
-
-
+    private static final QName FAULTCODE = new QName(
+            Constants.SYNAPSE_NAMESPACE, "faultCode");
+    private static final QName REASON = new QName(
+            Constants.SYNAPSE_NAMESPACE, "reason");
 
     public Mediator createMediator(SynapseEnvironment se, OMElement el) {
         FaultMediator fp = new FaultMediator();
+
+        OMElement code = el.getFirstChildWithName(FAULTCODE);
+        if (code != null) {
+            fp.setFaultCode(code.getTextAsQName());
+        }
+        OMElement reason = el.getFirstChildWithName(REASON);
+        if (reason != null) {
+            fp.setReason(reason.getText());
+        }
         super.setNameOnMediator(se, el, fp);
         return fp;
     }
 
-        public QName getTagQName() {
+    public QName getTagQName() {
         return HEADER_Q;
     }
 

Modified: incubator/synapse/trunk/java/repository/conf/synapse.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/repository/conf/synapse.xml?rev=393790&r1=393789&r2=393790&view=diff
==============================================================================
--- incubator/synapse/trunk/java/repository/conf/synapse.xml (original)
+++ incubator/synapse/trunk/java/repository/conf/synapse.xml Thu Apr 13 05:15:58 2006
@@ -6,7 +6,7 @@
 	<log/>
 	
     <!-- Check if the URL matches the stockquote gateway/dumb case -->
-	<regex message-address="to" pattern="/StockQuote.*">
+	<regex message-address="to" pattern=".*/StockQuote.*">
 		<ref ref="stockquote"/>				
 	</regex>	
 	
@@ -26,7 +26,9 @@
             <!-- check if the symbol is MSFT -->
             <xpath expr="//*[wsx:symbol='MSFT']" xmlns:wsx="http://www.webserviceX.NET/">
                 <!-- if it is throw a fault -->
-                <fault/>
+                <fault>
+                    <reason>Isn't there a Windows API for that?</reason>
+                </fault>
             </xpath>
         </stage>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org


Re: svn commit: r393790 - in /incubator/synapse/trunk/java: modules/core/src/org/apache/synapse/mediators/builtin/axis2/ modules/core/src/org/apache/synapse/mediators/filters/ modules/core/src/org/apache/synapse/xml/ repository/conf/

Posted by Sanjiva Weerawarana <sa...@opensource.lk>.
On Thu, 2006-04-13 at 14:00 +0100, Paul Fremantle wrote:
> Hi Glen
> 
> Thanks for this.... looks good. I just posted a proposal to clean up
> the synapse.xml (and => the mediators). One of the proposals was for
> the fault mediator.
> http://wiki.apache.org/incubator/Synapse/SynapseXMLFormat
> 
>     <fault version="soap11|soap12">
>       <code value="literal" | source-property=""/>
>       <reason>
> 
>       <node>
>       <role>
>       <detail>
>     </fault>
> 
> I guess there also ought to be an "auto" version which uses the
> current SOAP version (as the mediator does today). 

Can we not say that if @version is not given then the "current" version
is used?

Sanjiva.


---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org


Re: svn commit: r393790 - in /incubator/synapse/trunk/java: modules/core/src/org/apache/synapse/mediators/builtin/axis2/ modules/core/src/org/apache/synapse/mediators/filters/ modules/core/src/org/apache/synapse/xml/ repository/conf/

Posted by Paul Fremantle <pz...@gmail.com>.
Hi Glen

Thanks for this.... looks good. I just posted a proposal to clean up the
synapse.xml (and => the mediators). One of the proposals was for the fault
mediator. http://wiki.apache.org/incubator/Synapse/SynapseXMLFormat

    <fault version="soap11|soap12">
      <code value="literal" | source-property=""/>
      <reason>
      <node>
      <role>
      <detail>
    </fault>


I guess there also ought to be an "auto" version which uses the current SOAP
version (as the mediator does today).

Paul

On 4/13/06, gdaniels@apache.org <gd...@apache.org> wrote:
>
> Author: gdaniels
> Date: Thu Apr 13 05:15:58 2006
> New Revision: 393790
>
> URL: http://svn.apache.org/viewcvs?rev=393790&view=rev
> Log:
> * Fix synapse.xml so the demo works (correct regexp)
>
> * Check log.isDebugEnabled() before logging each result of RegexMediator
> (saves a little time)
>
> * Add ability to specify <faultCode> and <reason> in the FaultMediator
> configuration.  Will improve this (and connect it up to the actual fault
> generation) as soon as I figure out how to easily configure AXIOM SOAP
> faults.
>
> Modified:
>
>     incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
>
>     incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
>
>     incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
>     incubator/synapse/trunk/java/repository/conf/synapse.xml
>
> Modified:
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
> URL:
> http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java?rev=393790&r1=393789&r2=393790&view=diff
>
> ==============================================================================
> ---
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
> (original)
> +++
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/axis2/FaultMediator.java
> Thu Apr 13 05:15:58 2006
> @@ -28,47 +28,71 @@
> import org.apache.axiom.om.OMAbstractFactory;
> import org.apache.axiom.om.OMDocument;
>
> +import javax.xml.namespace.QName;
> +
> /**
>   * <p/> This returns a fault in response to this message
>   */
> public class FaultMediator implements Mediator{
>
> -       private Log log = LogFactory.getLog(getClass());
> -
> -       public boolean mediate(SynapseMessage smc) {
> -               log.debug("process");
> -
> -               SOAPEnvelope envelop = smc.getEnvelope();
> -               SOAPFactory factory;
> -               if (envelop != null) {
> -                       if (envelop.getNamespace().getName().equals(
> -
> SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
> -                               factory =
> OMAbstractFactory.getSOAP12Factory();
> -                       } else {
> -                               factory =
> OMAbstractFactory.getSOAP11Factory();
> -                       }
> -
> -               } else {
> -                       factory = OMAbstractFactory.getSOAP11Factory();
> -               }
> -               try {
> -                       OMDocument soapFaultDocument =
> factory.createOMDocument();
> -                       SOAPEnvelope faultEnvelope =
> factory.getDefaultFaultEnvelope();
> -                       soapFaultDocument.addChild(faultEnvelope);
> -                       smc.setEnvelope(faultEnvelope);
> -               } catch (Exception e) {
> -                       throw new SynapseException(e);
> -               }
> -               smc.setResponse(true);
> -
> -               // Flipping the headers
> -               EndpointReference tempEPR = smc.getTo();
> -               smc.setTo(smc.getReplyTo());
> -               smc.setReplyTo(tempEPR);
> +    private Log log = LogFactory.getLog(getClass());
>
> -               smc.getSynapseEnvironment().injectMessage(smc);
> +    private QName faultCode;
> +    private String reason;
>
> -               return false;
> -       }
> +    public boolean mediate(SynapseMessage smc) {
> +        log.debug("process");
>
> +        SOAPEnvelope envelop = smc.getEnvelope();
> +        SOAPFactory factory;
> +        if (envelop != null) {
> +            if (envelop.getNamespace().getName().equals(
> +                    SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
> +                factory = OMAbstractFactory.getSOAP12Factory();
> +            } else {
> +                factory = OMAbstractFactory.getSOAP11Factory();
> +            }
> +
> +        } else {
> +            factory = OMAbstractFactory.getSOAP11Factory();
> +        }
> +        try {
> +            // TODO : Figure out how to easily gen the correct fault
> +
> +            // Replace this
> +            OMDocument soapFaultDocument = factory.createOMDocument();
> +            SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope
> ();
> +            soapFaultDocument.addChild(faultEnvelope);
> +
> +            smc.setEnvelope(faultEnvelope);
> +        } catch (Exception e) {
> +            throw new SynapseException(e);
> +        }
> +        smc.setResponse(true);
> +
> +        // Flipping the headers
> +        EndpointReference tempEPR = smc.getTo();
> +        smc.setTo(smc.getReplyTo());
> +        smc.setReplyTo(tempEPR);
> +
> +        smc.getSynapseEnvironment().injectMessage(smc);
> +
> +        return false;
> +    }
> +
> +    public QName getFaultCode() {
> +        return faultCode;
> +    }
> +
> +    public void setFaultCode(QName faultCode) {
> +        this.faultCode = faultCode;
> +    }
> +
> +    public String getReason() {
> +        return reason;
> +    }
> +
> +    public void setReason(String reason) {
> +        this.reason = reason;
> +    }
> }
>
> Modified:
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
> URL:
> http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java?rev=393790&r1=393789&r2=393790&view=diff
>
> ==============================================================================
> ---
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
> (original)
> +++
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/RegexMediator.java
> Thu Apr 13 05:15:58 2006
> @@ -74,7 +74,8 @@
>                         log.debug("trying to process with empty pattern");
>                         return true;
>                 }
> -               String toMatch = null;
> +
> +        String toMatch;
>                 if (property != null) {
>                         toMatch = smc.getProperty(property).toString();
>                 } else {
> @@ -84,11 +85,18 @@
>                 if (toMatch==null) return false;
>
>                 if (pattern.matcher(toMatch).matches()) {
> -                       log.debug("Regex pattern " + pattern.toString() +
> " matched "
> -                                       + toMatch);
> +            if (log.isDebugEnabled()) {
> +                log.debug("Regex pattern " + pattern.pattern() + "
> matched "
> +                        + toMatch);
> +            }
>              return true;
>                 }
> -               return false;
> +
> +        if (log.isDebugEnabled()) {
> +            log.debug("Regex pattern '" + pattern.pattern() +
> +                    "' failed to match '" + toMatch);
> +        }
> +        return false;
>         }
>
> }
>
> Modified:
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
> URL:
> http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java?rev=393790&r1=393789&r2=393790&view=diff
>
> ==============================================================================
> ---
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
> (original)
> +++
> incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/xml/FaultMediatorFactory.java
> Thu Apr 13 05:15:58 2006
> @@ -33,16 +33,27 @@
>      private static final QName HEADER_Q = new QName(
>              Constants.SYNAPSE_NAMESPACE, "fault");
>
> -
> -
> +    private static final QName FAULTCODE = new QName(
> +            Constants.SYNAPSE_NAMESPACE, "faultCode");
> +    private static final QName REASON = new QName(
> +            Constants.SYNAPSE_NAMESPACE, "reason");
>
>      public Mediator createMediator(SynapseEnvironment se, OMElement el) {
>          FaultMediator fp = new FaultMediator();
> +
> +        OMElement code = el.getFirstChildWithName(FAULTCODE);
> +        if (code != null) {
> +            fp.setFaultCode(code.getTextAsQName());
> +        }
> +        OMElement reason = el.getFirstChildWithName(REASON);
> +        if (reason != null) {
> +            fp.setReason(reason.getText());
> +        }
>          super.setNameOnMediator(se, el, fp);
>          return fp;
>      }
>
> -        public QName getTagQName() {
> +    public QName getTagQName() {
>          return HEADER_Q;
>      }
>
>
> Modified: incubator/synapse/trunk/java/repository/conf/synapse.xml
> URL:
> http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/repository/conf/synapse.xml?rev=393790&r1=393789&r2=393790&view=diff
>
> ==============================================================================
> --- incubator/synapse/trunk/java/repository/conf/synapse.xml (original)
> +++ incubator/synapse/trunk/java/repository/conf/synapse.xml Thu Apr 13
> 05:15:58 2006
> @@ -6,7 +6,7 @@
>         <log/>
>
>      <!-- Check if the URL matches the stockquote gateway/dumb case -->
> -       <regex message-address="to" pattern="/StockQuote.*">
> +       <regex message-address="to" pattern=".*/StockQuote.*">
>                 <ref ref="stockquote"/>
>         </regex>
>
> @@ -26,7 +26,9 @@
>              <!-- check if the symbol is MSFT -->
>              <xpath expr="//*[wsx:symbol='MSFT']" xmlns:wsx="
> http://www.webserviceX.NET/">
>                  <!-- if it is throw a fault -->
> -                <fault/>
> +                <fault>
> +                    <reason>Isn't there a Windows API for that?</reason>
> +                </fault>
>              </xpath>
>          </stage>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: synapse-dev-help@ws.apache.org
>
>


--
Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair

http://bloglines.com/blog/paulfremantle
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com