All docs This doc
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

The following section includes a sample proxy, and its fault handler sequence is shown below.

Note: This will not be working at its state; therefore, it needs to be customized as per the requirement.

Sample Proxy
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Marketo_sampleProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
  <target>
    <inSequence onError="faultHandlerSeq">      
      <init>        
      </init>      
      <filter source="$axis2:HTTP_SC" regex="^[^2][0-9][0-9]">
            <then>
               <switch source="$axis2:HTTP_SC">
                  <case regex="401">
				  <!--Fill with your error code value and expression-->
                     <property name="ERROR_CODE" value=""/>           
           			 <property name="ERROR_MESSAGE" value | expression />
                  </case>
                  <case regex="422">
                     <property name="ERROR_CODE" value=""/>           
         			 <property name="ERROR_MESSAGE" value | expression/>
                  </case>
                  <case regex="404">
                     <property name="ERROR_CODE" value=""/>           
          			 <property name="ERROR_MESSAGE" value | expression/>
                  </case>
          		  <case regex="403">
                     <property name="ERROR_CODE" value=""/>           
          			 <property name="ERROR_MESSAGE" value | expression/>
                  </case>
                  <case regex="400">
                     <property name="ERROR_CODE" value=""/>           
          	         <property name="ERROR_MESSAGE" value | expression/>
                  </case>
                  <case regex="500">
                     <property name="ERROR_CODE" value=""/>  
           			<property name="ERROR_MESSAGE" value | expression/>
                  </case>
                  <default> 
             		 <property name="ERROR_CODE" expression="$axis2:HTTP_SC"/>
                     <property name="ERROR_MESSAGE" value | expression/>
                  </default>
               </switch>
               <sequence key="faultHandlerSeq" />
            </then>
         </filter>
      <respond />
    </inSequence>
    <outSequence>
     <send></send>
    </outSequence>
  </target>
</proxy>
faultHandlerSeq
<sequence xmlns="http://ws.apache.org/ns/synapse" name="faultHandlerSeq">
<property xmlns:ns="http://org.apache.synapse/xsd" name="contentTypeValue" expression="get-property('transport', 'Content-Type')"></property>
   <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('contentTypeValue') = 'application/json' or get-property('contentTypeValue') = 'text/json'">
      <then>         
          <payloadFactory media-type="json">
               <format> {"error_code":"$1", "error_message":"$2"} 
		  </format>
                  <args>
                     <arg expression="get-property('ERROR_CODE')" evaluator="xml"></arg>
                     <arg expression="get-property('ERROR_MESSAGE')" evaluator="xml"></arg>
                  </args>
               </payloadFactory>
               <property name="messageType" value="application/json" scope="axis2"></property>
        </then>
      </filter>
      <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('contentTypeValue') = 'application/xml' or get-property('contentTypeValue') = 'text/xml'">
          <then>
          <payloadFactory media-type="xml">
                  <format>
                     <error_info>
                        <error_code>$1</error_code>
                        <error_message>$2</error_message>
                     </error_info>
                  </format>
                  <args>
                     <arg expression="get-property('ERROR_CODE')" evaluator="xml"></arg>
                     <arg expression="get-property('ERROR_MESSAGE')" evaluator="xml"></arg>
                  </args>
               </payloadFactory>
               <property name="messageType" value="text/xml" scope="axis2"></property> 
        </then>                             
   </filter>
   <respond></respond>
</sequence> 
  • No labels