Author: asankha
Date: Mon Apr 23 01:28:22 2007
New Revision: 531376

URL: http://svn.apache.org/viewvc?view=rev&rev=531376
Log:
fix sample # 5
Enhance error message for NIO level transport errors
Fix property mediator to properly send back response soap messages when marked 
as a RESPONSE on the synapse MC

Modified:
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
    
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
    webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_4.xml
    webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_5.xml
    webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
 Mon Apr 23 01:28:22 2007
@@ -111,7 +111,7 @@
                 }
                 // set an error code to the message context, so that error 
sequences can filter
                 // using that property to determine the cause of error
-                synapseOutMsgCtx.setProperty("error-code", 
Constants.SENDING_FAULT);
+                synapseOutMsgCtx.setProperty(Constants.ERROR_CODE, 
Constants.SENDING_FAULT);
 
                 ((FaultHandler) 
faultStack.pop()).handleFault(synapseOutMsgCtx, e);
             }

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/TimeoutHandler.java
 Mon Apr 23 01:28:22 2007
@@ -81,7 +81,7 @@
 
                             // add an error code to the message context, so 
that error sequences
                             // can identify the cause of error
-                            msgContext.setProperty("error-code", 
Constants.TIME_OUT);
+                            msgContext.setProperty(Constants.ERROR_CODE, 
Constants.TIME_OUT);
 
                             Stack faultStack = msgContext.getFaultStack();
 

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/PropertyMediator.java
 Mon Apr 23 01:28:22 2007
@@ -83,6 +83,14 @@
             if (scope == null) {
                 //Setting property into the  Synapse Context
                 smc.setProperty(name, resultValue);
+
+                // do not commit response by default in the server process
+                if (Constants.RESPONSE.equals(name)) {
+                    org.apache.axis2.context.MessageContext axisMsgCtx =
+                    ((Axis2MessageContext) smc).getAxis2MessageContext();
+                        axisMsgCtx.getOperationContext().setProperty(
+                            org.apache.axis2.Constants.RESPONSE_WRITTEN, 
"SKIP");
+                }
             } else if (Constants.SCOPE_DEFAULT.equals(scope)) {
                 //Setting property into the  Synapse Context
                 smc.setProperty(name, resultValue);

Modified: 
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- 
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/nhttp/src/org/apache/axis2/transport/nhttp/HttpCoreNIOSender.java
 Mon Apr 23 01:28:22 2007
@@ -33,6 +33,7 @@
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
@@ -405,8 +406,12 @@
                         // this fault is NOT caused by the endpoint while 
processing. so we have to
                         // inform that this is a sending error (e.g. endpoint 
failure) and handle it
                         // differently at the message receiver.
-                        MessageContext nioFaultMessageContext = new AxisEngine
-                            
(mc.getConfigurationContext()).createFaultMessageContext(mc, 
request.getException());
+
+                        Exception exception = request.getException();
+                        MessageContext nioFaultMessageContext =
+                            MessageContextBuilder.createFaultMessageContext(
+                                /** this is not a mistake I do NOT want 
getMessage()*/
+                                mc, new AxisFault(exception.toString(), 
exception));
                         nioFaultMessageContext.setProperty("sending_fault", 
Boolean.TRUE);
                         mr.receive(nioFaultMessageContext);
                         

Modified: 
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_4.xml
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_4.xml?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_4.xml 
(original)
+++ webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_4.xml 
Mon Apr 23 01:28:22 2007
@@ -35,10 +35,6 @@
             <property name="message" 
expression="get-property('ERROR_MESSAGE')"/>
             <!--<property name="detail" 
expression="get-property('ERROR_DETAIL')"/>-->
         </log>
-        <makefault>
-            <code value="tns:Receiver" 
xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/>
-            <reason expression="get-property('ERROR_MESSAGE')"/>
-        </makefault>
         <drop/>
     </sequence>
 

Modified: 
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_5.xml
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_5.xml?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_5.xml 
(original)
+++ webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_5.xml 
Mon Apr 23 01:28:22 2007
@@ -1,9 +1,7 @@
 <!-- introduction to error handling -->
 <definitions xmlns="http://ws.apache.org/ns/synapse";>
 
-    <!-- the default fault handling sequence used by Synapse - named 'fault' 
-->
     <sequence name="myFaultHandler">
-        <!-- create a custom fault message -->
         <makefault>
             <code value="tns:Receiver" 
xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/>
             <reason expression="get-property('ERROR_MESSAGE')"/>
@@ -14,31 +12,19 @@
         <send/>
     </sequence>
 
-    <!-- default message handling sequence used by Synapse - named 'main' -->
     <sequence name="main" onError="myFaultHandler">
         <in>
             <switch source="//m0:getQuote/m0:request/m0:symbol"
                     xmlns:m0="http://services.samples/xsd";>
-                <case regex="IBM">
-                    <send>
-                        <endpoint name="simple">
-                            <address 
uri="http://localhost:9000/soap/SimpleStockQuoteService"/>
-                        </endpoint>
-                    </send>
-                </case>
                 <case regex="MSFT">
-                    <send>
-                        <endpoint name="bogusHost">
+                    <send><endpoint name="bogusHost">
                             <address 
uri="http://bogus:9000/soap/NonExistentStockQuoteService"/>
-                        </endpoint>
-                    </send>
+                    </endpoint></send>
                 </case>
                 <case regex="SUN">
-                    <send>
-                        <endpoint name="bogusPort">
+                    <send><endpoint name="bogusPort">
                             <address 
uri="http://localhost:9009/soap/NonExistentStockQuoteService"/>
-                        </endpoint>
-                    </send>
+                    </endpoint></send>
                 </case>
             </switch>
             <drop/>

Modified: webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html?view=diff&rev=531376&r1=531375&r2=531376
==============================================================================
--- webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html 
(original)
+++ webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html Mon 
Apr 23 01:28:22 2007
@@ -138,7 +138,7 @@
 <ol>
   <li>Smart Client mode</li>
   <pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/
-  </pre>
+ </pre>
   <li>Using Synapse as a HTTP Proxy</li>
   <pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dprxurl=http://localhost:8080/</pre>
   <pre></pre>
@@ -316,8 +316,7 @@
             &lt;send/&gt;
         &lt;/out&gt;
     &lt;/sequence&gt;
-&lt;/definitions&gt;
- </pre>
+&lt;/definitions&gt;</pre>
 
 <p><strong>Objective: Illustrates local registry entry definitions, reusable
 endpoints and sequences</strong></p>
@@ -427,8 +426,7 @@
 Synapse cannot find an error handler, it looks up for a sequence named
 'fault'. Thus the 'fault' sequence can be seen executing, and writing the
 generic error message into the logs. </p>
-<pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT
-</pre>
+<pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</pre>
 <pre>[HttpServerWorker-1] DEBUG SendMediator - Send mediator :: mediate() 
 [HttpServerWorker-1] ERROR IndirectEndpoint - Reference to non-existent 
endpoint for key : bogus 
 [HttpServerWorker-1] DEBUG MediatorFaultHandler - MediatorFaultHandler :: 
handleFault 
@@ -440,8 +438,7 @@
 invoked, and it specifies 'sunErrorHandler' as its error handler. Hence when
 the send fails, now you could see the proper error handler invocation and the
 custom error message as follows:</p>
-<pre>
-ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=SUN
+<pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=SUN
 
 [HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator 
&lt;sunSequence&gt; :: mediate() 
 [HttpServerWorker-1] DEBUG SequenceMediator - Setting the onError handler for 
the sequence 
@@ -452,10 +449,71 @@
 [HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator 
&lt;sunErrorHandler&gt; :: mediate() 
 [HttpServerWorker-1] DEBUG AbstractListMediator - Implicit Sequence 
&lt;SequenceMediator&gt; :: mediate() 
 [HttpServerWorker-1] DEBUG LogMediator - Log mediator :: mediate() 
-[HttpServerWorker-1] INFO  LogMediator - text = An unexpected error occured 
for stock SUN, message = Reference to non-existent endpoint for key : sunPort
-</pre>
+[HttpServerWorker-1] INFO  LogMediator - text = An unexpected error occured 
for stock SUN, message = Reference to non-existent endpoint for key : 
sunPort</pre>
+
+<h2>Sample 5:</h2>
+<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
+
+    &lt;sequence name="myFaultHandler"&gt;
+        &lt;makefault&gt;
+            &lt;code value="tns:Receiver" 
xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
+            &lt;reason expression="get-property('ERROR_MESSAGE')"/&gt;
+        &lt;/makefault&gt;
+
+        &lt;property name="RESPONSE" value="true"/&gt;
+        &lt;header name="To" expression="get-property('ReplyTo')"/&gt;
+        &lt;send/&gt;
+    &lt;/sequence&gt;
+
+    &lt;sequence name="main" onError="myFaultHandler"&gt;
+        &lt;in&gt;
+            &lt;switch source="//m0:getQuote/m0:request/m0:symbol"
+                    xmlns:m0="http://services.samples/xsd"&gt;
+                &lt;case regex="MSFT"&gt;
+                    &lt;send&gt;&lt;endpoint name="bogusHost"&gt;
+                            &lt;address 
uri="http://bogus:9000/soap/NonExistentStockQuoteService"/&gt;
+                    &lt;/endpoint&gt;&lt;/send&gt;
+                &lt;/case&gt;
+                &lt;case regex="SUN"&gt;
+                    &lt;send&gt;&lt;endpoint name="bogusPort"&gt;
+                            &lt;address 
uri="http://localhost:9009/soap/NonExistentStockQuoteService"/&gt;
+                    &lt;/endpoint&gt;&lt;/send&gt;
+                &lt;/case&gt;
+            &lt;/switch&gt;
+            &lt;drop/&gt;
+        &lt;/in&gt;
+
+        &lt;out&gt;
+            &lt;send/&gt;
+        &lt;/out&gt;
+    &lt;/sequence&gt;
+
+&lt;/definitions&gt;</pre>
+
+<p><strong>Objective: Makefault mediator and sending back error responses
+</strong></p>
+
+<p><strong>Pre-Requisites:</strong><br>
+Start the Synapse configuration numbered 4: i.e. synapse -sample 5<br>
+Start the Axis2 server and deploy the SimpleStockQuoteService if not already
+done</p>
+
+<p>When the MSFT stock quote is requested, an unknown host exception would be
+caused, and a connection refuxed exception would be caused for the SUN stock.
+This information is captured and returned back to the original client as a
+SOAP fault in this example.</p>
+<pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</pre>
+
+<p>Returns:</p>
+<pre>&lt;soapenv:Fault 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;faultcode&gt;soapenv:Client&lt;/faultcode&gt;&lt;faultstring&gt;java.net.UnknownHostException:
 bogus&lt;/faultstring&gt;&lt;detail /&gt;&lt;/soapenv:Fault&gt;</pre>
+
+<p>And</p>
+<pre>ant stockquote 
-Daddurl=http://localhost:9000/soap/SimpleStockQuoteService 
-Dtrpurl=http://localhost:8080/ -Dsymbol=SUN</pre>
+
+<p>Returns:</p>
+<pre>&lt;soapenv:Fault 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;faultcode&gt;soapenv:Client&lt;/faultcode&gt;&lt;faultstring&gt;java.net.ConnectException:
 Connection refused&lt;/faultstring&gt;&lt;detail 
/&gt;&lt;/soapenv:Fault&gt;</pre>
 
-<h2><a name="Sample6">Sample 5:</a></h2>
+<h2><a name="Sample6">Sample 6:</a></h2>
 <pre>&lt;synapse xmlns="http://ws.apache.org/ns/synapse"&gt;
 
     &lt;!-- illustration of various mediators : header, in and out mediators 
--&gt;



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

Reply via email to