The org.apache.camel.util.ExchangeHelper
class is a Fuse Mediation Router utility class that
provides methods that are useful when implementing a processor.
The static resolveEndpoint()
method is one of the most useful
methods in the ExchangeHelper
class. You use it inside a processor to
create new Endpoint
instances on the fly.
Example 2.6. The resolveEndpoint()
Method
public final class ExchangeHelper { ... @SuppressWarnings({"unchecked" }) public static Endpoint resolveEndpoint(Exchange exchange, Object value) throws NoSuchEndpointException { ... } ... }
The first argument to resolveEndpoint()
is an
exchange instance, and the second argument is usually an endpoint URI string. Example 2.7 shows how to create a new file endpoint
from an exchange instance exchange
Example 2.7. Creating a File Endpoint
Endpoint file_endp = ExchangeHelper.resolveEndpoint(exchange, "file://tmp/messages/in.xml");
The ExchangeHelper
class provides several static methods of the
form getMandatory
, which
wrap the corresponding BeanProperty
()get
methods on the BeanProperty
()Exchange
class. The difference between them is that
the original get
accessors
return BeanProperty
()null
, if the corresponding property is unavailable, and the
getMandatory
wrapper
methods throw a Java exception. The following wrapper methods are implemented in the
BeanProperty
()ExchangeHelper
class:
public final class ExchangeHelper { ... public static <T> T getMandatoryProperty(Exchange exchange, String propertyName, Class<T> type) throws NoSuchPropertyException { ... } public static <T> T getMandatoryHeader(Exchange exchange, String propertyName, Class<T> type) throws NoSuchHeaderException { ... } public static Object getMandatoryInBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryInBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } public static Object getMandatoryOutBody(Exchange exchange) throws InvalidPayloadException { ... } public static <T> T getMandatoryOutBody(Exchange exchange, Class<T> type) throws InvalidPayloadException { ... } ... }
Several different exchange patterns are compatible with holding an
In message. Several different exchange patterns are also compatible
with holding an Out message. To provide a quick way of checking whether
or not an exchange object is capable of holding an In message or an
Out message, the ExchangeHelper
class provides
the following
methods:
public final class ExchangeHelper { ... public static boolean isInCapable(Exchange exchange) { ... } public static boolean isOutCapable(Exchange exchange) { ... } ... }
If you want to find out the MIME content type of the exchange's In
message, you can access it by calling the
ExchangeHelper.getContentType(exchange)
method. To implement
this, the ExchangeHelper
object looks up the value of the
In message's Content-Type
header—this method
relies on the underlying component to populate the header
value).