Skip to content

Property mediator

The Property mediator is used to define configuration settings that control how an integration behaves. These properties manage transport settings, security configurations, or mediator-specific parameters that influence message processing. The Property mediator allows you to set or remove these properties, ensuring they are available within the mediation flow.

Note

With the introduction of the Variable mediator in WSO2 MI 4.4.0 onwards, it is now recommended to use the Property mediator only for managing configuration-related properties within a mediation flow. To store data for future use, the Variable mediator should be used instead.

Syntax

<property name="string" [action="set"|"remove"] [type="STRING"|"INTEGER"|"BOOLEAN"|"DOUBLE"|"FLOAT"|"LONG"|"SHORT"|"OM"|"JSON"] 
        (value="string" | expression="expression") [scope="default"|"transport"|"axis2"|"axis2-client"|"operation"|"registry"|"system"|"env"|"file"] 
        [pattern="regex" [group="integer"]]></property>

Configuration

The parameters available to configure the property mediator are as follows:

Parameter Name Description
Property Name

A name for the property.

You can provide a static value or a dynamic value for the property name. A dynamic property name can be retrieved by using an expression.

Note that the expression should be contained within curly brackets ({}) as well as double quotations (""). See the examples given below.

  • property name="{get-property('propertyName')}"
  • property name="{$ctx:propertyName}"
  • property name="{json-eval({$ctx:propertyName})}"

For names of the generic properties that come by default, see Generic Properties.

Property Action

The action to be performed for the property.

  • Set: If this is selected, the property will be set in the message.
  • Remove: If this is selected, the property will be removed from the message.
Property Data Type

The data type for the property. Property mediator will handle the property as a property of selected type. Available values are as follows:

  • STRING
  • INTEGER
  • BOOLEAN
  • DOUBLE
  • FLOAT
  • LONG
  • SHORT
  • OM

  • JSON

Note

  • STRING is the default type.
  • The OM type is used to set XML property values on the message context. This is useful when the expression associated with the property mediator evaluates to an XML node during mediation. When the OM type is used, the XML is converted to an AXIOM OMElement before it is assigned to a property.
  • The JSON type is used to set JSON values on the message context. It is recommended to use the JSON data type (rather than the STRING data type) for JSON payloads.
  • Note that when the JSON is just a string, you need to add quotes around them. This is due to the restrictions in RFC.
  • Example 1: Creating a property with a JSON string by giving the value.
    <property name="Greeting" value=""Hello World"" type="JSON"/>

    Example 2 : Creating a property with a JSON object via expression evaluation.
    <property name="studentObject" expression="json-eval($.student)" type="JSON"/>

    Property Value You can give either value or an expression.
    • Value: the property value is entered as a constant in this parameter.
    • Expression: the expression which determines the property value should be entered in this parameter.
    Pattern This parameter is used to enter a regular expression that will be evaluated against the value of the property or the result of the expression.
    Group The number (index) of the matching item is evaluated using the regular expression entered in the Pattern parameter.
    Scope

    The scope at which the property will be set to or removed from. Possible values are as follows.

    • Synapse: This is the default scope. The properties set in this scope last as long as the transaction (request-response) exists.
    • Transport: The properties set in this scope will be considered transport headers. For example, if it is required to send an HTTP header named 'CustomHeader' with an outgoing request, you can use the property mediator configuration with this scope.
    • Axis2: Properties set in this scope are available only either throughout the request flow or the response flow for which the property is defined.
    • Registry: This scope is used to retrieve properties within the registry.
    • System: This scope is used to retrieve Java system properties.
    • Environment: This scope is used to retrieve environment variables.
    • File: This scope is used to retrieve properties defined in the `file.properties` configuration file.
    • Operation: This scope is used to retrieve a property in the operation context level.
    • axis2-client: This is similar to the Synapse scope. The difference between the two scopes is that the axis2-client scope can be accessed inside the mediate() method of a mediator via a custom mediator created using the Class mediator.

    For a detailed explanation of each scope, see scopes documentation.

    Examples

    Send a fault message based on the Accept http header

    In this configuration, a response is sent to the client based on the Accept header. The PayloadFactory mediator transforms the message contents. Then a Property mediator sets the message type based on the Accept header using the $ctx:accept expression. The message is then sent back to the client via the Respond mediator.

    <payloadFactory media-type="xml">
        <format>
            <m:getQuote xmlns:m="http://services.samples">
                <m:request>
                    <m:symbol>Error</m:symbol>
                </m:request>
            </m:getQuote>
        </format>
    </payloadFactory>
    <property name="messageType" expression="$ctx:accept" scope="axis2"/>
    <respond/>
    

    Set the HTTP status code

    The Property mediator can be used to set the HTTP status code for responses. In the example below, the status code is set to 500.

    <property name="HTTP_SC" value="500" scope="axis2"/>