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.7. The resolveEndpoint()
Method
public final class ExchangeHelper { ... @SuppressWarnings({"unchecked" }) public static <E extends Exchange> Endpoint<E> resolveEndpoint(E 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.8 shows how to create a new file endpoint from
an exchange instance exchange
Example 2.8. 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).