| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.camel; |
| |
| import java.util.Map; |
| |
| import org.apache.camel.spi.Synchronization; |
| import org.apache.camel.spi.UnitOfWork; |
| |
| /** |
| * The base message exchange interface providing access to the request, response |
| * and fault {@link Message} instances. Different providers such as JMS, JBI, |
| * CXF and HTTP can provide their own derived API to expose the underlying |
| * transport semantics to avoid the leaky abstractions of generic APIs. |
| * |
| * @version $Revision$ |
| */ |
| public interface Exchange { |
| |
| String AUTHENTICATION = "CamelAuthentication"; |
| String ACCEPT_CONTENT_TYPE = "CamelAcceptContentType"; |
| @Deprecated |
| String AGGREGATED_INDEX = "CamelAggregatedIndex"; |
| String AGGREGATED_SIZE = "CamelAggregatedSize"; |
| String AGGREGATED_COMPLETED_BY = "CamelAggregatedCompletedBy"; |
| String AGGREGATED_CORRELATION_KEY = "CamelAggregatedCorrelationKey"; |
| String ASYNC_WAIT = "CamelAsyncWait"; |
| |
| String BATCH_INDEX = "CamelBatchIndex"; |
| String BATCH_SIZE = "CamelBatchSize"; |
| String BATCH_COMPLETE = "CamelBatchComplete"; |
| |
| String BEAN_METHOD_NAME = "CamelBeanMethodName"; |
| String BEAN_MULTI_PARAMETER_ARRAY = "CamelBeanMultiParameterArray"; |
| |
| String BINDING = "CamelBinding"; |
| |
| String CHARSET_NAME = "CamelCharsetName"; |
| String CONTENT_ENCODING = "Content-Encoding"; |
| String CONTENT_TYPE = "Content-Type"; |
| String CORRELATION_ID = "CamelCorrelationId"; |
| |
| String DATASET_INDEX = "CamelDataSetIndex"; |
| String DEFAULT_CHARSET_PROPERTY = "org.apache.camel.default.charset"; |
| |
| String DISABLE_HTTP_STREAM_CACHE = "CamelDisableHttpStreamCache"; |
| |
| String EXCEPTION_CAUGHT = "CamelExceptionCaught"; |
| String ERRORHANDLER_HANDLED = "CamelErrorHandlerHandled"; |
| String FAILURE_HANDLED = "CamelFailureHandled"; |
| String FAILURE_ENDPOINT = "CamelFailureEndpoint"; |
| |
| String FILTER_NON_XML_CHARS = "CamelFilterNonXmlChars"; |
| |
| String FILE_LOCAL_WORK_PATH = "CamelFileLocalWorkPath"; |
| String FILE_NAME = "CamelFileName"; |
| String FILE_NAME_ONLY = "CamelFileNameOnly"; |
| String FILE_NAME_PRODUCED = "CamelFileNameProduced"; |
| String FILE_PATH = "CamelFilePath"; |
| String FILE_PARENT = "CamelFileParent"; |
| String FILE_LAST_MODIFIED = "CamelFileLastModified"; |
| |
| String GROUPED_EXCHANGE = "CamelGroupedExchange"; |
| |
| String HTTP_BASE_URI = "CamelHttpBaseUri"; |
| String HTTP_CHARACTER_ENCODING = "CamelHttpCharacterEncoding"; |
| String HTTP_METHOD = "CamelHttpMethod"; |
| String HTTP_PATH = "CamelHttpPath"; |
| String HTTP_QUERY = "CamelHttpQuery"; |
| String HTTP_RESPONSE_CODE = "CamelHttpResponseCode"; |
| String HTTP_URI = "CamelHttpUri"; |
| String HTTP_URL = "CamelHttpUrl"; |
| String HTTP_CHUNKED = "CamelHttpChunked"; |
| String HTTP_SERVLET_REQUEST = "CamelHttpServletRequest"; |
| String HTTP_SERVLET_RESPONSE = "CamelHttpServletResponse"; |
| |
| String INTERCEPTED_ENDPOINT = "CamelInterceptedEndpoint"; |
| String TO_ENDPOINT = "CamelToEndpoint"; |
| |
| String LOG_DEBUG_BODY_MAX_CHARS = "CamelLogDebugBodyMaxChars"; |
| String LOG_DEBUG_BODY_STREAMS = "CamelLogDebugStreams"; |
| String LOOP_INDEX = "CamelLoopIndex"; |
| String LOOP_SIZE = "CamelLoopSize"; |
| |
| String MAXIMUM_CACHE_POOL_SIZE = "CamelMaximumCachePoolSize"; |
| String MULTICAST_INDEX = "CamelMulticastIndex"; |
| |
| String ON_COMPLETION = "CamelOnCompletion"; |
| |
| String ROUTE_STOP = "CamelRouteStop"; |
| String REDELIVERED = "CamelRedelivered"; |
| String REDELIVERY_COUNTER = "CamelRedeliveryCounter"; |
| String REDELIVERY_EXHAUSTED = "CamelRedeliveryExhausted"; |
| String ROLLBACK_ONLY = "CamelRollbackOnly"; |
| String ROLLBACK_ONLY_LAST = "CamelRollbackOnlyLast"; |
| |
| String SKIP_GZIP_ENCODING = "CamelSkipGzipEncoding"; |
| |
| String SOAP_ACTION = "CamelSoapAction"; |
| String SPLIT_INDEX = "CamelSplitIndex"; |
| String SPLIT_SIZE = "CamelSplitSize"; |
| |
| String TRANSACTED = "CamelTransacted"; |
| String TRANSFER_ENCODING = "Transfer-Encoding"; |
| String TRACE_EVENT = "CamelTraceEvent"; |
| String TRACE_EVENT_NODE_ID = "CamelTraceEventNodeId"; |
| String TRACE_EVENT_TIMESTAMP = "CamelTraceEventTimestamp"; |
| String TRACE_EVENT_EXCHANGE = "CamelTraceEventExchange"; |
| |
| String TIMER_FIRED_TIME = "CamelTimerFiredTime"; |
| String TIMER_NAME = "CamelTimerName"; |
| String TIMER_PERIOD = "CamelTimerPeriod"; |
| String TIMER_TIME = "CamelTimerTime"; |
| |
| String XSLT_FILE_NAME = "CamelXsltFileName"; |
| |
| /** |
| * Returns the {@link ExchangePattern} (MEP) of this exchange. |
| * |
| * @return the message exchange pattern of this exchange |
| */ |
| ExchangePattern getPattern(); |
| |
| /** |
| * Allows the {@link ExchangePattern} (MEP) of this exchange to be customized. |
| * |
| * This typically won't be required as an exchange can be created with a specific MEP |
| * by calling {@link Endpoint#createExchange(ExchangePattern)} but it is here just in case |
| * it is needed. |
| * |
| * @param pattern the pattern |
| */ |
| void setPattern(ExchangePattern pattern); |
| |
| /** |
| * Returns a property associated with this exchange by name |
| * |
| * @param name the name of the property |
| * @return the value of the given property or <tt>null</tt> if there is no property for |
| * the given name |
| */ |
| Object getProperty(String name); |
| |
| /** |
| * Returns a property associated with this exchange by name |
| * |
| * @param name the name of the property |
| * @param defaultValue the default value to return if property was absent |
| * @return the value of the given property or <tt>defaultValue</tt> if there is no |
| * property for the given name |
| */ |
| Object getProperty(String name, Object defaultValue); |
| |
| /** |
| * Returns a property associated with this exchange by name and specifying |
| * the type required |
| * |
| * @param name the name of the property |
| * @param type the type of the property |
| * @return the value of the given property or <tt>null</tt> if there is no property for |
| * the given name or <tt>null</tt> if it cannot be converted to the given type |
| */ |
| <T> T getProperty(String name, Class<T> type); |
| |
| /** |
| * Returns a property associated with this exchange by name and specifying |
| * the type required |
| * |
| * @param name the name of the property |
| * @param defaultValue the default value to return if property was absent |
| * @param type the type of the property |
| * @return the value of the given property or <tt>defaultValue</tt> if there is no property for |
| * the given name or <tt>null</tt> if it cannot be converted to the given type |
| */ |
| <T> T getProperty(String name, Object defaultValue, Class<T> type); |
| |
| /** |
| * Sets a property on the exchange |
| * |
| * @param name of the property |
| * @param value to associate with the name |
| */ |
| void setProperty(String name, Object value); |
| |
| /** |
| * Removes the given property on the exchange |
| * |
| * @param name of the property |
| * @return the old value of the property |
| */ |
| Object removeProperty(String name); |
| |
| /** |
| * Returns all of the properties associated with the exchange |
| * |
| * @return all the headers in a Map |
| */ |
| Map<String, Object> getProperties(); |
| |
| /** |
| * Returns whether any properties has been set |
| * |
| * @return <tt>true</tt> if any properties has been set |
| */ |
| boolean hasProperties(); |
| |
| /** |
| * Returns the inbound request message |
| * |
| * @return the message |
| */ |
| Message getIn(); |
| |
| /** |
| * Returns the inbound request message as the given type |
| * |
| * @param type the given type |
| * @return the message as the given type or <tt>null</tt> if not possible to covert to given type |
| */ |
| <T> T getIn(Class<T> type); |
| |
| /** |
| * Sets the inbound message instance |
| * |
| * @param in the inbound message |
| */ |
| void setIn(Message in); |
| |
| /** |
| * Returns the outbound message, lazily creating one if one has not already |
| * been associated with this exchange. |
| * <p/> |
| * If you want to test whether an OUT message have been set or not, use the {@link #hasOut()} method. |
| * |
| * @return the response |
| */ |
| Message getOut(); |
| |
| /** |
| * Returns the outbound request message as the given type |
| * |
| * @param type the given type |
| * @return the message as the given type or <tt>null</tt> if not possible to covert to given type |
| */ |
| <T> T getOut(Class<T> type); |
| |
| /** |
| * Returns whether an OUT message has been set or not. |
| * |
| * @return <tt>true</tt> if an OUT message exists, <tt>false</tt> otherwise. |
| */ |
| boolean hasOut(); |
| |
| /** |
| * Sets the outbound message |
| * |
| * @param out the outbound message |
| */ |
| void setOut(Message out); |
| |
| /** |
| * Returns the exception associated with this exchange |
| * |
| * @return the exception (or null if no faults) |
| */ |
| Exception getException(); |
| |
| /** |
| * Returns the exception associated with this exchange. |
| * <p/> |
| * Is used to get the caused exception that typically have been wrapped in some sort |
| * of Camel wrapper exception |
| * <p/> |
| * The strategy is to look in the exception hierarchy to find the first given cause that matches the type. |
| * Will start from the bottom (the real cause) and walk upwards. |
| * |
| * @param type the exception type |
| * @return the exception (or <tt>null</tt> if no caused exception matched) |
| */ |
| <T> T getException(Class<T> type); |
| |
| /** |
| * Sets the exception associated with this exchange |
| * |
| * @param e the caused exception |
| */ |
| void setException(Exception e); |
| |
| /** |
| * Returns true if this exchange failed due to either an exception or fault |
| * |
| * @return true if this exchange failed due to either an exception or fault |
| * @see Exchange#getException() |
| * @see Message#setFault(boolean) |
| * @see Message#isFault() |
| */ |
| boolean isFailed(); |
| |
| /** |
| * Returns true if this exchange is transacted |
| */ |
| boolean isTransacted(); |
| |
| /** |
| * Returns true if this exchange is marked for rollback |
| */ |
| boolean isRollbackOnly(); |
| |
| /** |
| * Returns the container so that a processor can resolve endpoints from URIs |
| * |
| * @return the container which owns this exchange |
| */ |
| CamelContext getContext(); |
| |
| /** |
| * Creates a copy of the current message exchange so that it can be |
| * forwarded to another destination |
| */ |
| Exchange copy(); |
| |
| /** |
| * Returns the endpoint which originated this message exchange if a consumer on an endpoint created the message exchange |
| * otherwise this property will be null |
| */ |
| Endpoint getFromEndpoint(); |
| |
| /** |
| * Sets the endpoint which originated this message exchange. This method |
| * should typically only be called by {@link org.apache.camel.Endpoint} implementations |
| * |
| * @param fromEndpoint the endpoint which is originating this message exchange |
| */ |
| void setFromEndpoint(Endpoint fromEndpoint); |
| |
| /** |
| * Returns the unit of work that this exchange belongs to; which may map to |
| * zero, one or more physical transactions |
| */ |
| UnitOfWork getUnitOfWork(); |
| |
| /** |
| * Sets the unit of work that this exchange belongs to; which may map to |
| * zero, one or more physical transactions |
| */ |
| void setUnitOfWork(UnitOfWork unitOfWork); |
| |
| /** |
| * Returns the exchange id (unique) |
| */ |
| String getExchangeId(); |
| |
| /** |
| * Set the exchange id |
| */ |
| void setExchangeId(String id); |
| |
| /** |
| * Adds a {@link org.apache.camel.spi.Synchronization} to be invoked as callback when |
| * this exchange is completed. |
| * |
| * @param onCompletion the callback to invoke on completion of this exchange |
| */ |
| void addOnCompletion(Synchronization onCompletion); |
| |
| /** |
| * Handover all the on completions from this exchange to the target exchange. |
| * |
| * @param target the target exchange |
| */ |
| void handoverCompletions(Exchange target); |
| |
| } |