Rewrite Mediator

URL rewrite mediator is used to modify and transform the URL values available in the message

Properties

By default the mediator will take the 'To' header of the message and apply the provided rewrite rules on it. Alternatively one can specify a property name in the 'inProperty' attribute, in which case the mediator will take the value of the specified property as the input URL. Similarly the mediator by default sets the transformed URL as the 'To' header of the message. Alternatively you can use the 'outProperty' attribute to instruct the mediator to set the resulting URL as a property.

  • In Property
  • >Out Property

Rules

The rewrite mediator applies URL transformations by evaluating a set of rules on the message. Rules are specified using the 'rewriterule' element. Rules are evaluated in the order they are specified. A rule can consist of an optional condition and one or more rewrite actions. If the condition is provided it will be evaluated first. If it evaluates to 'true' all the specified rewrite actions will be executed. Otherwise the set of actions will be skipped. If no condition is specified, the provided rewrite actions will be always executed. The condition should be wrapped in a 'condition' element within the 'rule' element. Rewrite actions are specified using 'action' elements.

  1. Condition:- A rule can consist of an optional condition. If the condition is provided it will be evaluated first
  2. Action:- It states which type of action should be executed on the URL. This defaults to 'set' value
  3. Fragment:- This attribute can be used to specify the URL fragment on which the action should be executed. If not specified this will be taken as 'full' URL, which is the complete URL
  4. Value/Expression:- The value to 'set', 'append' or 'prepend' must be specified using either the 'value' attribute or the 'xpath' attribute. One of these two attributes are always needed unless the value of the 'type' attribute is set to 'remove'
  5. Regex:- When user set action to 'replace' an additional 'regex' attribute must be specified which indicates the portion that should be replaced with the given value.

Syntax

<rewrite [inProperty="string"] [outProperty="string"]>
  <rewriterule>
      <condition>
         ...
      </condition>?
      <action [type="append|prepend|replace|remove|set"] [value="string"]
          [xpath="xpath"] [fragment="protocol|host|port|path|query|ref|user|full"] [regex="regex"]>+
   </rewriterule>+
</rewrite>

UI Configuration

Rewrite Mediator

Figure1: Rewrite Mediator

Properties

  • In Property :
  • By default 'rewrite' mediator will take the 'To' header of the message and will apply the provided rewrite rules on it. If user specify a 'inProperty' attribute, the mediator will take the value of the specified property as the input URL.

  • Out Property :
  • Similarly the mediator by default sets the transformed URL as the 'To' header of the message. Alternatively user can use the 'outProperty' attribute to instruct the mediator to set the resulting URL as a property.

Rules

The rewrite mediator applies URL transformations by evaluating a set of rules on the message

Rewriterule Mediator

Figure2: Rules

  • Condition:- A rule can consist of an optional condition. If the condition is provided it will be evaluated first
  • Action:- It states which type of action should be executed on the URL. This defaults to 'set' value
  • Fragment:- This attribute can be used to specify the URL fragment on which the action should be executed
  • Value/Expression:- The value to 'set', 'append' or 'prepend' must be specified using either the 'value' attribute or the 'xpath' attribute. One of these two attributes are always needed unless the value of the 'type' attribute is set to 'remove'
  • Regex:- When user set action to 'replace' an additional 'regex' attribute must be specified which indicates the portion that should be replaced with the given value.

Example

 <rewrite>
	<rewriterule>
		<action type="replace" regex="soap" value="services" fragment="path" />
	</rewriterule>
</rewrite>

For instance; if our request is as follows,

"ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy1"

the address URL of the request contains the context 'soap'. In ESB server all the services are deployed under a context named 'services' by default. So,'To' header will be re written by replacing the 'soap' context with 'services'. Hence the requests will be delivered to the server successfully.