org.apache.ode.bpel.iapi

## Interface MessageExchange

- All Known Subinterfaces:
    MyRoleMessageExchange, PartnerRoleMessageExchange
  All Known Implementing Classes:
    BrokeredMyRoleMessageExchangeImpl, MyRoleMessageExchangeImpl, PartnerRoleMessageExchangeImpl

      public interface MessageExchange

  A representation of a communication (message-exchange) between the BPEL BPEL engine and an external "partner".

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `MessageExchange.FailureType` Enumeration of the types of failures.
    `static class` | `MessageExchange.MessageExchangePattern` Enumeration of message exchange patterns.
    `static class` | `MessageExchange.Status` Enumeration of the possible states for the message exchange.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `PROPERTY_SEP_MYROLE_SESSIONID`
    `static java.lang.String` | `PROPERTY_SEP_PARTNERROLE_EPR`
    `static java.lang.String` | `PROPERTY_SEP_PARTNERROLE_SESSIONID`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `Message` | `createMessage(javax.xml.namespace.QName msgType)` Create a message associated with this exchange.
    `EndpointReference` | `getEndpointReference()` Get a reference to the end-point targeted by this message exchange.
    `javax.xml.namespace.QName` | `getFault()` Get the fault type.
    `java.lang.String` | `getFaultExplanation()`
    `Message` | `getFaultResponse()` Get the fault resposne message.
    `java.lang.String` | `getMessageExchangeId()` Get the message exchange identifier.
    `MessageExchange.MessageExchangePattern` | `getMessageExchangePattern()` Return the type of message-exchange that resulted form this invocation (request only/request-respone).
    `javax.wsdl.Operation` | `getOperation()` Get the operation description for this message exchange.
    `java.lang.String` | `getOperationName()` Get the name of the operation (WSDL 1.1) / message exchange (WSDL 1.2?).
    `javax.wsdl.PortType` | `getPortType()` Get the port type description for this message exchange.
    `java.lang.String` | `getProperty(java.lang.String key)` Get a message exchange property.
    `java.util.Set<java.lang.String>` | `getPropertyNames()` Get a set containing the names of the defined properties.
    `Message` | `getRequest()` Get the request message.
    `Message` | `getResponse()` Get the response message.
    `MessageExchange.Status` | `getStatus()` Get the message exchange status.
    `boolean` | `isTransactionPropagated()`
    `void` | `release()` Should be called by the external partner when it's done with the message exchange.
    `void` | `setProperty(java.lang.String key, java.lang.String value)` Set a message exchange property.

- - ### Field Detail

    - #### PROPERTY_SEP_MYROLE_SESSIONID

          static final java.lang.String PROPERTY_SEP_MYROLE_SESSIONID

      See Also:
        Constant Field Values

    - #### PROPERTY_SEP_PARTNERROLE_SESSIONID

          static final java.lang.String PROPERTY_SEP_PARTNERROLE_SESSIONID

      See Also:
        Constant Field Values

    - #### PROPERTY_SEP_PARTNERROLE_EPR

          static final java.lang.String PROPERTY_SEP_PARTNERROLE_EPR

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getMessageExchangeId

          java.lang.String getMessageExchangeId()
                                         throws BpelEngineException

      Get the message exchange identifier. This identifier should be globally unique as the BPEL engine may keep identifiers for extended periods of time.
      Returns:
        unique message exchange identifier
      Throws:
        `BpelEngineException`

    - #### getOperationName

          java.lang.String getOperationName()
                                     throws BpelEngineException

      Get the name of the operation (WSDL 1.1) / message exchange (WSDL 1.2?).
      Returns:
        name of the operation (WSDL 1.1) /message exchange (WSDL 1.2?).
      Throws:
        `BpelEngineException`

    - #### getEndpointReference

          EndpointReference getEndpointReference()
                                          throws BpelEngineException

      Get a reference to the end-point targeted by this message exchange.
      Returns:
        end-point reference for this message exchange
      Throws:
        `BpelEngineException`

    - #### getMessageExchangePattern

          MessageExchange.MessageExchangePattern getMessageExchangePattern()

      Return the type of message-exchange that resulted form this invocation (request only/request-respone). If a `MessageExchange.MessageExchangePattern.REQUEST_RESPONSE` message-exchange was created, then the caller should expect a response in the future.
      Returns:
        type of message exchange created by the invocation

    - #### createMessage

          Message createMessage(javax.xml.namespace.QName msgType)

      Create a message associated with this exchange.
      Parameters:
        `msgType` - message type
      Returns:
        a new `Message`

    - #### isTransactionPropagated

          boolean isTransactionPropagated()
                                   throws BpelEngineException

      Throws:
        `BpelEngineException`

    - #### getStatus

          MessageExchange.Status getStatus()

      Get the message exchange status.
      Returns:

    - #### getRequest

          Message getRequest()

      Get the request message.
      Returns:
        request message

    - #### getResponse

          Message getResponse()

      Get the response message.
      Returns:
        response message (or null if not avaiable)

    - #### getFault

          javax.xml.namespace.QName getFault()

      Get the fault type.
      Returns:
        fault type, or `null` if not available/applicable.

    - #### getFaultExplanation

          java.lang.String getFaultExplanation()

    - #### getFaultResponse

          Message getFaultResponse()

      Get the fault resposne message.
      Returns:
        fault response, or `null` if not available/applicable.

    - #### getOperation

          javax.wsdl.Operation getOperation()

      Get the operation description for this message exchange. It is possible that the description cannot be resolved, for example if the EPR is unknown or if the operation does not exist. TODO: How to get rid of the WSDL4j dependency?
      Returns:
        WSDL operation description or `null` if not availble

    - #### getPortType

          javax.wsdl.PortType getPortType()

      Get the port type description for this message exchange. It is possible that the description cannot be resolved, for example if the EPR is unknown or if the operation does not exist. TODO: How to get rid of the WSDL4j dependency?
      Returns:
        WSDL port type description or `null` if not available.

    - #### setProperty

          void setProperty(java.lang.String key,
                           java.lang.String value)

      Set a message exchange property. Message exchange properties are not interpreted by the engine--they exist to enable the integration layer to persist information about the exchange.
      Parameters:
        `key` - property key
        `value` - property value

    - #### getProperty

          java.lang.String getProperty(java.lang.String key)

      Get a message exchange property.
      Parameters:
        `key` - property key
      Returns:
        property value

    - #### getPropertyNames

          java.util.Set<java.lang.String> getPropertyNames()

      Get a set containing the names of the defined properties.
      Returns:
        set of property names.

    - #### release

          void release()

      Should be called by the external partner when it's done with the message exchange. Ncessary for a better resource management and proper mex cleanup.