This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-13788
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c5a28f71c8229dc04569f6188c5252baf527e507
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Jul 25 14:01:05 2019 +0200

    CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
---
 .../src/main/java/org/apache/camel/Exchange.java   |  8 +++
 .../org/apache/camel/converter/CamelConverter.java |  8 +--
 .../camel/impl/engine/DefaultConsumerTemplate.java |  8 +--
 .../impl/engine/DefaultFluentProducerTemplate.java |  2 +-
 .../impl/engine/DefaultStreamCachingStrategy.java  |  2 +-
 .../apache/camel/impl/engine/MDCUnitOfWork.java    |  2 +-
 .../impl/transformer/ProcessorTransformer.java     |  2 +-
 .../language/simple/SimpleExpressionBuilder.java   |  2 +-
 .../camel/processor/CamelInternalProcessor.java    |  7 +--
 .../org/apache/camel/processor/ContractAdvice.java |  2 +-
 .../camel/processor/ConvertBodyProcessor.java      |  3 +-
 .../camel/processor/MethodCallProcessor.java       |  3 +-
 .../java/org/apache/camel/processor/Pipeline.java  |  5 +-
 .../org/apache/camel/processor/PipelineHelper.java | 24 +--------
 .../org/apache/camel/processor/PollEnricher.java   | 24 ++-------
 .../camel/processor/RemoveHeaderProcessor.java     |  3 +-
 .../camel/processor/RemoveHeadersProcessor.java    |  3 +-
 .../apache/camel/processor/RestBindingAdvice.java  | 24 ++++-----
 .../org/apache/camel/processor/RoutingSlip.java    |  7 +--
 .../apache/camel/processor/SetBodyProcessor.java   |  3 +-
 .../apache/camel/processor/SetHeaderProcessor.java |  3 +-
 .../org/apache/camel/processor/SortProcessor.java  |  9 +---
 .../apache/camel/processor/TransformProcessor.java |  3 +-
 .../apache/camel/processor/WireTapProcessor.java   |  2 +-
 .../processor/interceptor/BacklogDebugger.java     | 59 +++++-----------------
 .../org/apache/camel/builder/ExpressionClause.java |  5 ++
 .../test/java/org/apache/camel/TestSupport.java    |  2 +
 .../apache/camel/builder/ExceptionBuilderTest.java |  2 +-
 .../ExceptionBuilderWithHandledExceptionTest.java  |  2 +-
 .../camel/component/bean/BeanPipelineTest.java     |  4 +-
 .../camel/component/bean/MyServiceProxyTest.java   |  2 +-
 .../camel/component/direct/DirectNoToTypeTest.java |  2 +-
 .../directvm/DirectVmHeaderFilterStrategyTest.java |  4 +-
 .../file/FileConsumerFailureHandledTest.java       |  2 +-
 .../camel/component/file/ToFileRouteTest.java      |  4 +-
 .../log/DefaultExchangeFormatterTest.java          | 22 +-------
 .../component/rest/FromRestGetContentTypeTest.java |  4 +-
 .../rest/FromRestGetCorsAllowCredentialsTest.java  | 20 ++++----
 .../component/rest/FromRestGetCorsCustomTest.java  |  8 +--
 .../camel/component/rest/FromRestGetCorsTest.java  |  8 +--
 .../rest/FromRestGetHttpErrorCodeTest.java         |  4 +-
 .../rest/RestProducerBindingProcessorTest.java     |  4 +-
 .../component/seda/SedaAsyncProducerTest.java      |  4 +-
 .../vm/VmWaitForTaskIfReplyExpectedTest.java       |  2 +-
 .../apache/camel/converter/CamelConverterTest.java |  4 +-
 .../camel/impl/DefaultConsumerTemplateTest.java    |  2 +-
 .../impl/DefaultProducerTemplateAsyncTest.java     | 14 ++---
 .../impl/PojoProduceInterceptEndpointTest.java     |  2 +-
 .../impl/transformer/TransformerRouteTest.java     |  8 +--
 .../camel/impl/validator/ValidatorRouteTest.java   |  4 +-
 .../org/apache/camel/issues/DavidSiefertTest.java  |  2 +-
 .../issues/DoCatchCaughExceptionIssueTest.java     |  2 +-
 .../camel/issues/SetHeaderInDoCatchIssueTest.java  |  4 +-
 .../camel/language/FileLanguageExtSingleTest.java  |  2 +-
 .../processor/BodyOutAggregatingStrategy.java      |  2 +-
 .../FailOverLoadBalancerSetFaultTest.java          |  4 +-
 .../org/apache/camel/processor/MDCResetTest.java   |  4 +-
 .../MultiCastParallelAndStreamCachingTest.java     |  8 +--
 .../MultiCastStreamCachingInSubRouteTest.java      |  2 +-
 .../org/apache/camel/processor/MyNormalizer.java   |  4 +-
 .../processor/NewProcessorAndServiceTest.java      |  2 +-
 .../camel/processor/PipelineConcurrentTest.java    |  2 +-
 .../apache/camel/processor/PipelineMEPTest.java    |  2 +-
 .../org/apache/camel/processor/PipelineTest.java   | 12 ++---
 .../camel/processor/SimpleProcessorTest.java       |  2 +-
 .../processor/SimpleProcessorTraceableTest.java    |  2 +-
 .../org/apache/camel/processor/SimulatorTest.java  |  2 +-
 .../SplitterStreamCachingInSubRouteTest.java       |  2 +-
 .../org/apache/camel/processor/SplitterTest.java   |  8 +--
 .../aggregator/AggregateLostGroupIssueTest.java    |  4 +-
 .../aggregator/AggregatorExceptionHandleTest.java  |  2 +-
 .../async/AsyncEndpointRecipientList3Test.java     |  2 +-
 .../async/AsyncEndpointRecipientList4Test.java     |  2 +-
 .../async/AsyncEndpointRecipientListBean3Test.java |  2 +-
 .../async/AsyncEndpointRecipientListBean4Test.java |  2 +-
 .../AsyncEndpointRecipientListParallel3Test.java   |  2 +-
 .../AsyncEndpointRecipientListParallel4Test.java   |  2 +-
 .../async/AsyncEndpointRoutingSlip3Test.java       |  2 +-
 .../async/AsyncEndpointRoutingSlipBean3Test.java   |  2 +-
 ...syncEndpointRoutingSlipBeanNonBlockingTest.java |  2 +-
 .../camel/processor/async/MyAsyncProducer.java     |  4 +-
 .../camel/processor/enricher/EnricherRefTest.java  |  2 +-
 .../camel/processor/enricher/PollEnricherTest.java |  2 +-
 .../CustomExceptionPolicyStrategyTest.java         |  2 +-
 ...ltExceptionPolicyStrategyUsingOnlyWhenTest.java |  2 +-
 ...efaultExceptionPolicyStrategyUsingWhenTest.java |  2 +-
 .../OnExceptionUseOriginalMessageTest.java         |  2 +-
 .../processor/routingslip/RoutingSlipPOJOTest.java |  2 +-
 .../management/mbean/ManagedBrowsableEndpoint.java | 11 ++--
 .../management/ManagedInlinedProcessorTest.java    |  2 +-
 .../camel/support/DefaultExchangeHolder.java       |  1 +
 .../support/DefaultScheduledPollConsumer.java      | 10 +---
 .../org/apache/camel/support/ExchangeHelper.java   |  6 +--
 .../camel/support/builder/ExpressionBuilder.java   |  6 +++
 .../support/component/AbstractApiProducer.java     |  4 +-
 .../processor/DefaultExchangeFormatter.java        | 46 -----------------
 96 files changed, 193 insertions(+), 360 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java 
b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
index 35b5551..99a2f16 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
@@ -417,7 +417,9 @@ public interface Exchange {
      *
      * @return the response
      * @see #getIn()
+     * @deprecated use {@link #getMessage()}
      */
+    @Deprecated
     Message getOut();
 
     /**
@@ -435,21 +437,27 @@ public interface Exchange {
      * @param type the given type
      * @return the message as the given type or <tt>null</tt> if not possible 
to covert to given type
      * @see #getIn(Class)
+     * @deprecated use {@link #getMessage(Class)}
      */
+    @Deprecated
     <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.
+     * @deprecated use {@link #getMessage()}
      */
+    @Deprecated
     boolean hasOut();
 
     /**
      * Sets the outbound message
      *
      * @param out the outbound message
+     * @deprecated use {@link #setMessage(Message)}
      */
+    @Deprecated
     void setOut(Message out);
 
     /**
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
index c774a7b..1459406 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/converter/CamelConverter.java
@@ -39,9 +39,7 @@ public final class CamelConverter {
     public static Processor toProcessor(final Predicate predicate) {
         return exchange -> {
             boolean answer = predicate.matches(exchange);
-            Message out = exchange.getOut();
-            out.copyFrom(exchange.getIn());
-            out.setBody(answer);
+            exchange.getMessage().setBody(answer);
         };
 
     }
@@ -50,9 +48,7 @@ public final class CamelConverter {
     public static Processor toProcessor(final Expression expression) {
         return exchange -> {
             Object answer = expression.evaluate(exchange, Object.class);
-            Message out = exchange.getOut();
-            out.copyFrom(exchange.getIn());
-            out.setBody(answer);
+            exchange.getMessage().setBody(answer);
         };
     }
 
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java
index 187712a..b18e702 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultConsumerTemplate.java
@@ -234,13 +234,7 @@ public class DefaultConsumerTemplate extends 
ServiceSupport implements ConsumerT
             }
 
             // okay no fault then return the response
-            if (result.hasOut()) {
-                // use OUT as the response
-                answer = result.getOut().getBody();
-            } else {
-                // use IN as the response
-                answer = result.getIn().getBody();
-            }
+            answer = result.getMessage().getBody();
         }
         return answer;
     }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
index 23266ce..0d8c579 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultFluentProducerTemplate.java
@@ -245,7 +245,7 @@ public class DefaultFluentProducerTemplate extends 
ServiceSupport implements Flu
             result = (T)template().request(target, processorSupplier.get());
         } else if (type == Message.class) {
             Exchange exchange = template().request(target, 
processorSupplier.get());
-            result = exchange.hasOut() ? (T)exchange.getOut() : 
(T)exchange.getIn();
+            result = (T)exchange.getMessage();
         } else {
             Exchange exchange = template().send(
                 target,
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
index e04c6e5..03db5a6 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultStreamCachingStrategy.java
@@ -175,7 +175,7 @@ public class DefaultStreamCachingStrategy extends 
ServiceSupport implements Came
     }
 
     public StreamCache cache(Exchange exchange) {
-        Message message = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
+        Message message = exchange.getMessage();
         StreamCache cache = message.getBody(StreamCache.class);
         if (cache != null) {
             if (log.isTraceEnabled()) {
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
index d34e170..5a4b719 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/MDCUnitOfWork.java
@@ -56,7 +56,7 @@ public class MDCUnitOfWork extends DefaultUnitOfWork {
 
         // must add exchange and message id in constructor
         MDC.put(MDC_EXCHANGE_ID, exchange.getExchangeId());
-        String msgId = exchange.hasOut() ? exchange.getOut().getMessageId() : 
exchange.getIn().getMessageId();
+        String msgId = exchange.getMessage().getMessageId();
         MDC.put(MDC_MESSAGE_ID, msgId);
         // the camel context id is from exchange
         MDC.put(MDC_CAMEL_CONTEXT_ID, exchange.getContext().getName());
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/transformer/ProcessorTransformer.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/transformer/ProcessorTransformer.java
index c627f9f..4d1d80a 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/transformer/ProcessorTransformer.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/transformer/ProcessorTransformer.java
@@ -65,7 +65,7 @@ public class ProcessorTransformer extends Transformer {
         transformExchange.setIn(message);
         transformExchange.setProperties(exchange.getProperties());
         processor.process(transformExchange);
-        Message answer = transformExchange.hasOut() ? 
transformExchange.getOut() : transformExchange.getIn();
+        Message answer = transformExchange.getMessage();
         
         if (to.isJavaType()) {
             Object answerBody = answer.getBody();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
 
b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index 9a0cc77..21bfceb 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -432,7 +432,7 @@ public final class SimpleExpressionBuilder {
                     }
                 } else if (command.startsWith("out.header.")) {
                     String key = command.substring(command.lastIndexOf('.') + 
1);
-                    date = exchange.getOut().getHeader(key, Date.class);
+                    date = exchange.getMessage().getHeader(key, Date.class);
                     if (date == null) {
                         throw new IllegalArgumentException("Cannot find 
java.util.Date object at command: " + command);
                     }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index 78753e1..f23aea3 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -722,12 +722,7 @@ public class CamelInternalProcessor extends 
DelegateAsyncProcessor {
 
         @Override
         public void after(Exchange exchange, StreamCache sc) throws Exception {
-            Object body;
-            if (exchange.hasOut()) {
-                body = exchange.getOut().getBody();
-            } else {
-                body = exchange.getIn().getBody();
-            }
+            Object body = exchange.getMessage().getBody();
             if (body instanceof StreamCache) {
                 // reset so the cache is ready to be reused after processing
                 ((StreamCache) body).reset();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
index 435cee9..8035f55 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/ContractAdvice.java
@@ -88,7 +88,7 @@ public class ContractAdvice implements 
CamelInternalProcessorAdvice {
             return;
         }
 
-        Message target = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
+        Message target = exchange.getMessage();
         if (!(target instanceof DataTypeAware)) {
             return;
         }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
index 7872758..298662a 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/ConvertBodyProcessor.java
@@ -66,8 +66,7 @@ public class ConvertBodyProcessor extends ServiceSupport 
implements AsyncProcess
     }
 
     public void process(Exchange exchange) throws Exception {
-        boolean out = exchange.hasOut();
-        Message old = out ? exchange.getOut() : exchange.getIn();
+        Message old = exchange.getMessage();
 
         if (old.getBody() == null) {
             // only convert if there is a body
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/MethodCallProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/MethodCallProcessor.java
index f1f1986..ba0bdb1 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/MethodCallProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/MethodCallProcessor.java
@@ -52,8 +52,7 @@ public class MethodCallProcessor extends 
AsyncProcessorSupport implements Tracea
             // if null/empty response its due to void / no-response, then dont 
change the body
             if (newBody != null) {
 
-                boolean out = exchange.hasOut();
-                Message old = out ? exchange.getOut() : exchange.getIn();
+                Message old = exchange.getMessage();
 
                 // create a new message container so we do not drag 
specialized message objects along
                 // but that is only needed if the old message is a specialized 
message
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/Pipeline.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/Pipeline.java
index 9ffe248..315f9df 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/Pipeline.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/Pipeline.java
@@ -95,10 +95,7 @@ public class Pipeline extends AsyncProcessorSupport 
implements Navigate<Processo
                 && (first || continueProcessing(exchange, "so breaking out of 
pipeline", log))) {
 
             // prepare for next run
-            if (exchange.hasOut()) {
-                exchange.setIn(exchange.getOut());
-                exchange.setOut(null);
-            }
+            ExchangeHelper.prepareOutToIn(exchange);
 
             // get the next processor
             AsyncProcessor processor = processors.next();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java
index 274185f..7ffcbbe 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java
@@ -43,13 +43,11 @@ public final class PipelineHelper {
         // check for error if so we should break out
         boolean exceptionHandled = 
hasExceptionBeenHandledByErrorHandler(exchange);
         if (exchange.isFailed() || exchange.isRollbackOnly() || 
exceptionHandled) {
-            // We need to write a warning message when the exception and fault 
message be set at the same time
-            Message msg = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
             // The Exchange.ERRORHANDLED_HANDLED property is only set if 
satisfactory handling was done
             // by the error handler. It's still an exception, the exchange 
still failed.
             if (log.isDebugEnabled()) {
                 StringBuilder sb = new StringBuilder();
-                sb.append("Message exchange has failed: " + message + " for 
exchange: ").append(exchange);
+                sb.append("Message exchange has failed: 
").append(message).append(" for exchange: ").append(exchange);
                 if (exchange.isRollbackOnly()) {
                     sb.append(" Marked as rollback only.");
                 }
@@ -78,24 +76,4 @@ public final class PipelineHelper {
         return true;
     }
 
-    /**
-     * Strategy method to create the next exchange from the previous exchange.
-     * <p/>
-     * Remember to copy the original exchange id otherwise correlation of ids 
in the log is a problem
-     *
-     * @param previousExchange the previous exchange
-     * @return a new exchange
-     */
-    public static Exchange createNextExchange(Exchange previousExchange) {
-        Exchange answer = previousExchange;
-
-        // now lets set the input of the next exchange to the output of the
-        // previous message if it is not null
-        if (answer.hasOut()) {
-            answer.setIn(answer.getOut());
-            answer.setOut(null);
-        }
-        return answer;
-    }
-
 }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/PollEnricher.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/PollEnricher.java
index e384f20..676f049 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/PollEnricher.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/PollEnricher.java
@@ -288,34 +288,18 @@ public class PollEnricher extends AsyncProcessorSupport 
implements IdAware, Came
 
                 // preserve the redelivery stats
                 if (redeliveried != null) {
-                    if (exchange.hasOut()) {
-                        exchange.getOut().setHeader(Exchange.REDELIVERED, 
redeliveried);
-                    } else {
-                        exchange.getIn().setHeader(Exchange.REDELIVERED, 
redeliveried);
-                    }
+                    exchange.getMessage().setHeader(Exchange.REDELIVERED, 
redeliveried);
                 }
                 if (redeliveryCounter != null) {
-                    if (exchange.hasOut()) {
-                        
exchange.getOut().setHeader(Exchange.REDELIVERY_COUNTER, redeliveryCounter);
-                    } else {
-                        
exchange.getIn().setHeader(Exchange.REDELIVERY_COUNTER, redeliveryCounter);
-                    }
+                    
exchange.getMessage().setHeader(Exchange.REDELIVERY_COUNTER, redeliveryCounter);
                 }
                 if (redeliveryMaxCounter != null) {
-                    if (exchange.hasOut()) {
-                        
exchange.getOut().setHeader(Exchange.REDELIVERY_MAX_COUNTER, 
redeliveryMaxCounter);
-                    } else {
-                        
exchange.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER, 
redeliveryMaxCounter);
-                    }
+                    
exchange.getMessage().setHeader(Exchange.REDELIVERY_MAX_COUNTER, 
redeliveryMaxCounter);
                 }
             }
 
             // set header with the uri of the endpoint enriched so we can use 
that for tracing etc
-            if (exchange.hasOut()) {
-                exchange.getOut().setHeader(Exchange.TO_ENDPOINT, 
consumer.getEndpoint().getEndpointUri());
-            } else {
-                exchange.getIn().setHeader(Exchange.TO_ENDPOINT, 
consumer.getEndpoint().getEndpointUri());
-            }
+            exchange.getMessage().setHeader(Exchange.TO_ENDPOINT, 
consumer.getEndpoint().getEndpointUri());
         } catch (Throwable e) {
             exchange.setException(new CamelExchangeException("Error occurred 
during aggregation", exchange, e));
             callback.done(true);
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeaderProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeaderProcessor.java
index 2787aae..9f71e28 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeaderProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeaderProcessor.java
@@ -37,8 +37,7 @@ public class RemoveHeaderProcessor extends 
AsyncProcessorSupport implements Trac
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         try {
-            Message message = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
-            message.removeHeader(headerName);
+            exchange.getMessage().removeHeader(headerName);
         } catch (Exception e) {
             exchange.setException(e);
         }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeadersProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeadersProcessor.java
index 3c8d644..09fb878 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeadersProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/RemoveHeadersProcessor.java
@@ -39,8 +39,7 @@ public class RemoveHeadersProcessor extends 
AsyncProcessorSupport implements Tra
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         try {
-            Message message = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
-            message.removeHeaders(pattern, excludePattern);
+            exchange.getMessage().removeHeaders(pattern, excludePattern);
         } catch (Exception e) {
             exchange.setException(e);
         }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
index 4a7ee4f..409d807 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/RestBindingAdvice.java
@@ -207,7 +207,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
             if (!isValidOrAcceptedContentType(consumes, contentType)) {
                 LOG.trace("Consuming content type does not match contentType 
header {}. Stopping routing.", contentType);
                 // the content-type is not something we can process so its a 
HTTP_ERROR 415
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 415);
+                exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 
415);
                 // stop routing and return
                 exchange.setProperty(Exchange.ROUTE_STOP, true);
                 return;
@@ -217,7 +217,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
             if (!isValidOrAcceptedContentType(produces, accept)) {
                 LOG.trace("Produced content type does not match accept header 
{}. Stopping routing.", contentType);
                 // the response type is not accepted by the client so its a 
HTTP_ERROR 406
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 406);
+                exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 
406);
                 // stop routing and return
                 exchange.setProperty(Exchange.ROUTE_STOP, true);
                 return;
@@ -271,8 +271,8 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
                 }
                 if (body == null) {
                     // this is a bad request, the client did not include a 
message body
-                    exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 
400);
-                    exchange.getOut().setBody("The request body is missing.");
+                    
exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 400);
+                    exchange.getMessage().setBody("The request body is 
missing.");
                     // stop routing and return
                     exchange.setProperty(Exchange.ROUTE_STOP, true);
                     return;
@@ -280,16 +280,16 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
             }
             if (requiredQueryParameters != null && 
!exchange.getIn().getHeaders().keySet().containsAll(requiredQueryParameters)) {
                 // this is a bad request, the client did not include some of 
the required query parameters
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 400);
-                exchange.getOut().setBody("Some of the required query 
parameters are missing.");
+                exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 
400);
+                exchange.getMessage().setBody("Some of the required query 
parameters are missing.");
                 // stop routing and return
                 exchange.setProperty(Exchange.ROUTE_STOP, true);
                 return;
             }
             if (requiredHeaders != null && 
!exchange.getIn().getHeaders().keySet().containsAll(requiredHeaders)) {
                 // this is a bad request, the client did not include some of 
the required http headers
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 400);
-                exchange.getOut().setBody("Some of the required HTTP headers 
are missing.");
+                exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 
400);
+                exchange.getMessage().setBody("Some of the required HTTP 
headers are missing.");
                 // stop routing and return
                 exchange.setProperty(Exchange.ROUTE_STOP, true);
                 return;
@@ -336,7 +336,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
         }
 
         if (skipBindingOnErrorCode) {
-            Integer code = exchange.hasOut() ? 
exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class) : 
exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
+            Integer code = 
exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
             // if there is a custom http error code then skip binding
             if (code != null && code >= 300) {
                 return;
@@ -402,7 +402,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
         }
 
         // is the body empty
-        if ((exchange.hasOut() && exchange.getOut().getBody() == null) || 
(!exchange.hasOut() && exchange.getIn().getBody() == null)) {
+        if (exchange.getMessage().getBody() == null) {
             return;
         }
 
@@ -441,7 +441,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
     }
 
     private void setOutputDataType(Exchange exchange, DataType type) {
-        Message target = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
+        Message target = exchange.getMessage();
         if (target instanceof DataTypeAware) {
             ((DataTypeAware)target).setDataType(type);
         }
@@ -474,7 +474,7 @@ public class RestBindingAdvice implements 
CamelInternalProcessorAdvice<Map<Strin
 
     private void setCORSHeaders(Exchange exchange, Map<String, Object> state) {
         // add the CORS headers after routing, but before the consumer writes 
the response
-        Message msg = exchange.hasOut() ? exchange.getOut() : exchange.getIn();
+        Message msg = exchange.getMessage();
 
         // use default value if none has been configured
         String allowOrigin = corsHeaders != null ? 
corsHeaders.get("Access-Control-Allow-Origin") : null;
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
index 348a39e..76d6c33 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/RoutingSlip.java
@@ -452,12 +452,7 @@ public class RoutingSlip extends AsyncProcessorSupport 
implements Traceable, IdA
      * Returns the outbound message if available. Otherwise return the inbound 
message.
      */
     private Message getResultMessage(Exchange exchange) {
-        if (exchange.hasOut()) {
-            return exchange.getOut();
-        } else {
-            // if this endpoint had no out (like a mock endpoint) just take 
the in
-            return exchange.getIn();
-        }
+        return exchange.getMessage();
     }
 
     /**
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
index 7eb9df8..d739f71 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/SetBodyProcessor.java
@@ -48,8 +48,7 @@ public class SetBodyProcessor extends AsyncProcessorSupport 
implements Traceable
                 return true;
             }
 
-            boolean out = exchange.hasOut();
-            Message old = out ? exchange.getOut() : exchange.getIn();
+            Message old = exchange.getMessage();
 
             // create a new message container so we do not drag specialized 
message objects along
             // but that is only needed if the old message is a specialized 
message
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
index 406961c..a40d296 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/SetHeaderProcessor.java
@@ -51,8 +51,7 @@ public class SetHeaderProcessor extends AsyncProcessorSupport 
implements Traceab
                 return true;
             }
 
-            boolean out = exchange.hasOut();
-            Message old = out ? exchange.getOut() : exchange.getIn();
+            Message old = exchange.getMessage();
 
             String key = headerName.evaluate(exchange, String.class);
             old.setHeader(key, newHeader);
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/SortProcessor.java 
b/core/camel-base/src/main/java/org/apache/camel/processor/SortProcessor.java
index b477adb..8aab42e 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/SortProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/SortProcessor.java
@@ -43,18 +43,11 @@ public class SortProcessor<T> extends AsyncProcessorSupport 
implements IdAware,
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         try {
-            Message in = exchange.getIn();
-
             @SuppressWarnings("unchecked")
             List<T> list = expression.evaluate(exchange, List.class);
             list.sort(comparator);
 
-            if (exchange.getPattern().isOutCapable()) {
-                Message out = exchange.getOut();
-                out.copyFromWithNewBody(in, list);
-            } else {
-                in.setBody(list);
-            }
+            exchange.getMessage().setBody(list);
         } catch (Exception e) {
             exchange.setException(e);
         }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/TransformProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/TransformProcessor.java
index c21b137..3199b5c 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/TransformProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/TransformProcessor.java
@@ -49,8 +49,7 @@ public class TransformProcessor extends AsyncProcessorSupport 
implements Traceab
                 return true;
             }
 
-            boolean out = exchange.hasOut();
-            Message old = out ? exchange.getOut() : exchange.getIn();
+            Message old = exchange.getMessage();
 
             // create a new message container so we do not drag specialized 
message objects along
             // but that is only needed if the old message is a specialized 
message
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/WireTapProcessor.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/WireTapProcessor.java
index 395eada..ce795a8 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/WireTapProcessor.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/WireTapProcessor.java
@@ -189,7 +189,7 @@ public class WireTapProcessor extends AsyncProcessorSupport 
implements Traceable
         }
 
         // if the body is a stream cache we must use a copy of the stream in 
the wire tapped exchange
-        Message msg = answer.hasOut() ? answer.getOut() : answer.getIn();
+        Message msg = answer.getMessage();
         if (msg.getBody() instanceof StreamCache) {
             // in parallel processing case, the stream must be copied, 
therefore get the stream
             StreamCache cache = (StreamCache) msg.getBody();
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
 
b/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
index d9a49a0..806c456 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogDebugger.java
@@ -253,12 +253,7 @@ public final class BacklogDebugger extends ServiceSupport {
             if (remove) {
                 removeMessageBodyOnBreakpoint(nodeId);
             } else {
-                Class<?> oldType;
-                if (se.getExchange().hasOut()) {
-                    oldType = se.getExchange().getOut().getBody() != null ? 
se.getExchange().getOut().getBody().getClass() : null;
-                } else {
-                    oldType = se.getExchange().getIn().getBody() != null ? 
se.getExchange().getIn().getBody().getClass() : null;
-                }
+                Class<?> oldType = se.getExchange().getMessage().getBody() != 
null ? se.getExchange().getMessage().getBody().getClass() : null;
                 setMessageBodyOnBreakpoint(nodeId, body, oldType);
             }
         }
@@ -272,19 +267,11 @@ public final class BacklogDebugger extends ServiceSupport 
{
                 removeMessageBodyOnBreakpoint(nodeId);
             } else {
                 logger.log("Breakpoint at node " + nodeId + " is updating 
message body on exchangeId: " + se.getExchange().getExchangeId() + " with new 
body: " + body);
-                if (se.getExchange().hasOut()) {
-                    // preserve type
-                    if (type != null) {
-                        se.getExchange().getOut().setBody(body, type);
-                    } else {
-                        se.getExchange().getOut().setBody(body);
-                    }
+                // preserve type
+                if (type != null) {
+                    se.getExchange().getMessage().setBody(body, type);
                 } else {
-                    if (type != null) {
-                        se.getExchange().getIn().setBody(body, type);
-                    } else {
-                        se.getExchange().getIn().setBody(body);
-                    }
+                    se.getExchange().getMessage().setBody(body);
                 }
             }
         }
@@ -294,23 +281,14 @@ public final class BacklogDebugger extends ServiceSupport 
{
         SuspendedExchange se = suspendedBreakpoints.get(nodeId);
         if (se != null) {
             logger.log("Breakpoint at node " + nodeId + " is removing message 
body on exchangeId: " + se.getExchange().getExchangeId());
-            if (se.getExchange().hasOut()) {
-                se.getExchange().getOut().setBody(null);
-            } else {
-                se.getExchange().getIn().setBody(null);
-            }
+            se.getExchange().getMessage().setBody(null);
         }
     }
 
     public void setMessageHeaderOnBreakpoint(String nodeId, String headerName, 
Object value) throws NoTypeConversionAvailableException {
         SuspendedExchange se = suspendedBreakpoints.get(nodeId);
         if (se != null) {
-            Class<?> oldType;
-            if (se.getExchange().hasOut()) {
-                oldType = se.getExchange().getOut().getHeader(headerName) != 
null ? se.getExchange().getOut().getHeader(headerName).getClass() : null;
-            } else {
-                oldType = se.getExchange().getIn().getHeader(headerName) != 
null ? se.getExchange().getIn().getHeader(headerName).getClass() : null;
-            }
+            Class<?> oldType = 
se.getExchange().getMessage().getHeader(headerName) != null ? 
se.getExchange().getMessage().getHeader(headerName).getClass() : null;
             setMessageHeaderOnBreakpoint(nodeId, headerName, value, oldType);
         }
     }
@@ -319,20 +297,11 @@ public final class BacklogDebugger extends ServiceSupport 
{
         SuspendedExchange se = suspendedBreakpoints.get(nodeId);
         if (se != null) {
             logger.log("Breakpoint at node " + nodeId + " is updating message 
header on exchangeId: " + se.getExchange().getExchangeId() + " with header: " + 
headerName + " and value: " + value);
-            if (se.getExchange().hasOut()) {
-                if (type != null) {
-                    Object convertedValue = 
se.getExchange().getContext().getTypeConverter().mandatoryConvertTo(type, 
se.getExchange(), value);
-                    se.getExchange().getOut().setHeader(headerName, 
convertedValue);
-                } else {
-                    se.getExchange().getOut().setHeader(headerName, value);
-                }
+            if (type != null) {
+                Object convertedValue = 
se.getExchange().getContext().getTypeConverter().mandatoryConvertTo(type, 
se.getExchange(), value);
+                se.getExchange().getMessage().setHeader(headerName, 
convertedValue);
             } else {
-                if (type != null) {
-                    Object convertedValue = 
se.getExchange().getContext().getTypeConverter().mandatoryConvertTo(type, 
se.getExchange(), value);
-                    se.getExchange().getIn().setHeader(headerName, 
convertedValue);
-                } else {
-                    se.getExchange().getIn().setHeader(headerName, value);
-                }
+                se.getExchange().getMessage().setHeader(headerName, value);
             }
         }
     }
@@ -349,11 +318,7 @@ public final class BacklogDebugger extends ServiceSupport {
         SuspendedExchange se = suspendedBreakpoints.get(nodeId);
         if (se != null) {
             logger.log("Breakpoint at node " + nodeId + " is removing message 
header on exchangeId: " + se.getExchange().getExchangeId() + " with header: " + 
headerName);
-            if (se.getExchange().hasOut()) {
-                se.getExchange().getOut().removeHeader(headerName);
-            } else {
-                se.getExchange().getIn().removeHeader(headerName);
-            }
+            se.getExchange().getMessage().removeHeader(headerName);
         }
     }
 
diff --git 
a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java 
b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
index 1f7a354..b5b4d24 100644
--- 
a/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ 
b/core/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -121,6 +121,7 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
     /**
      * A functional expression of an outbound message
      */
+    @Deprecated
     public T outMessage(final Function<Message, Object> function) {
         return delegate.expression(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -212,6 +213,7 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
     /**
      * A functional expression of an outbound message body
      */
+    @Deprecated
     public T outBody(final Function<Object, Object> function) {
         return delegate.expression(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -223,6 +225,7 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
     /**
      * A functional expression of an outbound message body and headers
      */
+    @Deprecated
     public T outBody(final BiFunction<Object, Map<String, Object>, Object> 
function) {
         return delegate.expression(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -243,6 +246,7 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
     /**
      * A functional expression of an outbound message body converted to the 
expected type
      */
+    @Deprecated
     public <B> T outBody(Class<B> expectedType, final Function<B, Object> 
function) {
         return delegate.expression(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -254,6 +258,7 @@ public class ExpressionClause<T> implements Expression, 
Predicate {
     /**
      * A functional expression of an outbound message body converted to the 
expected type and headers
      */
+    @Deprecated
     public <B> T outBody(Class<B> expectedType, final BiFunction<B, 
Map<String, Object>, Object> function) {
         return delegate.expression(new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/TestSupport.java 
b/core/camel-core/src/test/java/org/apache/camel/TestSupport.java
index 0dfe8bf..2ec15e3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/TestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/TestSupport.java
@@ -148,6 +148,7 @@ public abstract class TestSupport extends Assert {
     /**
      * Asserts the Out message on the exchange contains the expected value
      */
+    @Deprecated
     public static Object assertOutMessageHeader(Exchange exchange, String 
name, Object expected) {
         return assertMessageHeader(exchange.getOut(), name, expected);
     }
@@ -181,6 +182,7 @@ public abstract class TestSupport extends Assert {
      * @param expected the expected value of the OUT message
      * @throws InvalidPayloadException is thrown if the payload is not the 
expected class type
      */
+    @Deprecated
     public static void assertOutMessageBodyEquals(Exchange exchange, Object 
expected) throws InvalidPayloadException {
         assertNotNull("Should have a response exchange!", exchange);
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderTest.java
index f594fcf..bbfa215 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderTest.java
@@ -225,7 +225,7 @@ public class ExceptionBuilderTest extends 
ContextTestSupport {
                         } else if ("I am not allowed to access 
this".equals(s)) {
                             throw new IllegalAccessException();
                         }
-                        exchange.getOut().setBody("Hello World");
+                        exchange.getMessage().setBody("Hello World");
                     }
                 }).to("mock:result");
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithHandledExceptionTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithHandledExceptionTest.java
index f1a1c7f..e36669f 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithHandledExceptionTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithHandledExceptionTest.java
@@ -106,7 +106,7 @@ public class ExceptionBuilderWithHandledExceptionTest 
extends ContextTestSupport
                             // specialized IOException
                             throw new ConnectException("Forced for testing - 
cannot connect to remote server");
                         }
-                        exchange.getOut().setBody("Hello World");
+                        exchange.getMessage().setBody("Hello World");
                     }
                 }).to("mock:result");
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
index 5152bca..a401aa9 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/BeanPipelineTest.java
@@ -77,8 +77,8 @@ public class BeanPipelineTest extends ContextTestSupport {
             String body = exchange.getIn().getBody(String.class);
             assertEquals("Hello World", body);
             assertEquals("Claus", exchange.getIn().getHeader("from"));
-            exchange.getOut().setHeader("from", "James");
-            exchange.getOut().setBody("Hello World from James");
+            exchange.getMessage().setHeader("from", "James");
+            exchange.getMessage().setBody("Hello World from James");
         }
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/MyServiceProxyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/MyServiceProxyTest.java
index 869b896..14e6709 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/bean/MyServiceProxyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/bean/MyServiceProxyTest.java
@@ -112,7 +112,7 @@ public class MyServiceProxyTest extends ContextTestSupport {
                         response.id = request.id;
                         response.response = "Hi " + request.request;
                         // we need to setup the body as a response
-                        exchange.getOut().setBody(response);
+                        exchange.getMessage().setBody(response);
                     }
 
                 });
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoToTypeTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoToTypeTest.java
index a344f75..468d710 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoToTypeTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/direct/DirectNoToTypeTest.java
@@ -39,7 +39,7 @@ public class DirectNoToTypeTest extends ContextTestSupport {
                 from("direct:in").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
                         String body = exchange.getIn().getBody(String.class);
-                        exchange.getOut().setBody(body + " World");
+                        exchange.getMessage().setBody(body + " World");
                     }
                 });
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
index 6351054..7e9e6bc 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/directvm/DirectVmHeaderFilterStrategyTest.java
@@ -48,7 +48,7 @@ public class DirectVmHeaderFilterStrategyTest extends 
ContextTestSupport {
         });
         
         assertNull(response.getException());
-        assertNull(response.getOut().getHeader("Header2"));
+        assertNull(response.getMessage().getHeader("Header2"));
         
         response = template.request("direct-vm:start.nofilter", exchange -> {
             exchange.getIn().setBody("Hello World");
@@ -56,7 +56,7 @@ public class DirectVmHeaderFilterStrategyTest extends 
ContextTestSupport {
         });
         
         assertNull(response.getException());
-        assertEquals("Value2", response.getOut().getHeader("Header2", 
String.class));
+        assertEquals("Value2", response.getMessage().getHeader("Header2", 
String.class));
         
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
index d22cec9..49ee054 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
@@ -141,7 +141,7 @@ public class FileConsumerFailureHandledTest extends 
ContextTestSupport {
             } else if ("Dublin".equals(body)) {
                 throw new ValidationException(exchange, "Dublin have good 
beer");
             }
-            exchange.getOut().setBody("Hello " + body);
+            exchange.getMessage().setBody("Hello " + body);
         }
     }
     
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
index 1353d2d..9507318 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/file/ToFileRouteTest.java
@@ -65,11 +65,11 @@ public class ToFileRouteTest extends ContextTestSupport {
             // do some business logic here
 
             // set the output to the file
-            exchange.getOut().setBody(body);
+            exchange.getMessage().setBody(body);
 
             // set the output filename using java code logic, notice that this 
is done by setting
             // a special header property of the out exchange
-            exchange.getOut().setHeader(Exchange.FILE_NAME, "report.txt");
+            exchange.getMessage().setHeader(Exchange.FILE_NAME, "report.txt");
         }
 
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/log/DefaultExchangeFormatterTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/log/DefaultExchangeFormatterTest.java
index 5756b7b..b57f554 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/log/DefaultExchangeFormatterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/log/DefaultExchangeFormatterTest.java
@@ -51,10 +51,6 @@ public class DefaultExchangeFormatterTest extends 
ContextTestSupport {
         template.sendBody("log:org.apache.camel.TEST?showHeaders=true", "Hello 
World");
         template.sendBody("log:org.apache.camel.TEST?showBodyType=true", 
"Hello World");
         template.sendBody("log:org.apache.camel.TEST?showBody=true", "Hello 
World");
-        template.sendBody("log:org.apache.camel.TEST?showOut=true", "Hello 
World");
-        
template.sendBody("log:org.apache.camel.TEST?showOut=true&showHeaders=true", 
"Hello World");
-        
template.sendBody("log:org.apache.camel.TEST?showOut=true&showBodyType=true", 
"Hello World");
-        
template.sendBody("log:org.apache.camel.TEST?showOut=true&showBody=true", 
"Hello World");
         template.sendBody("log:org.apache.camel.TEST?showAll=true", "Hello 
World");
 
         template.sendBody("log:org.apache.camel.TEST?showFuture=true", new 
MyFuture(new Callable<String>() {
@@ -71,8 +67,8 @@ public class DefaultExchangeFormatterTest extends 
ContextTestSupport {
 
     @Test
     public void testSendMessageToLogMultiOptions() throws Exception {
-        
template.sendBody("log:org.apache.camel.TEST?showHeaders=true&showOut=true", 
"Hello World");
-        
template.sendBody("log:org.apache.camel.TEST?showProperties=true&showHeaders=true&showOut=true",
 "Hello World");
+        template.sendBody("log:org.apache.camel.TEST?showHeaders=true", "Hello 
World");
+        
template.sendBody("log:org.apache.camel.TEST?showProperties=true&showHeaders=true",
 "Hello World");
     }
 
     @Test
@@ -103,19 +99,6 @@ public class DefaultExchangeFormatterTest extends 
ContextTestSupport {
     }
 
     @Test
-    public void testSendExchangeWithOut() throws Exception {
-        Endpoint endpoint = 
resolveMandatoryEndpoint("log:org.apache.camel.TEST?showAll=true&multiline=true");
-        Exchange exchange = endpoint.createExchange();
-        exchange.getIn().setBody("Hello World");
-        exchange.getOut().setBody(22);
-
-        Producer producer = endpoint.createProducer();
-        producer.start();
-        producer.process(exchange);
-        producer.stop();
-    }
-
-    @Test
     public void testSendExchangeWithException() throws Exception {
         Endpoint endpoint = 
resolveMandatoryEndpoint("log:org.apache.camel.TEST?showException=true");
         Exchange exchange = endpoint.createExchange();
@@ -189,7 +172,6 @@ public class DefaultExchangeFormatterTest extends 
ContextTestSupport {
         assertFalse(formatter.isShowHeaders());
         assertTrue(formatter.isShowBodyType());
         assertTrue(formatter.isShowBody());
-        assertFalse(formatter.isShowOut());
         assertFalse(formatter.isShowException());
         assertFalse(formatter.isShowCaughtException());
         assertFalse(formatter.isShowStackTrace());
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
index 14425cf..ce96c88 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetContentTypeTest.java
@@ -42,8 +42,8 @@ public class FromRestGetContentTypeTest extends 
ContextTestSupport {
         });
 
         assertNotNull(out);
-        assertEquals("{ \"name\" : \"Donald\" }", out.getOut().getBody());
-        assertEquals("application/json", 
out.getOut().getHeader(Exchange.CONTENT_TYPE));
+        assertEquals("{ \"name\" : \"Donald\" }", out.getMessage().getBody());
+        assertEquals("application/json", 
out.getMessage().getHeader(Exchange.CONTENT_TYPE));
     }
 
     @Override
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
index cc417b3..ea87fe6 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsAllowCredentialsTest.java
@@ -46,11 +46,11 @@ public class FromRestGetCorsAllowCredentialsTest extends 
ContextTestSupport {
         });
         assertNotNull(out);
 
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_ORIGIN, 
out.getOut().getHeader("Access-Control-Allow-Origin"));
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS, 
out.getOut().getHeader("Access-Control-Allow-Methods"));
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS, 
out.getOut().getHeader("Access-Control-Allow-Headers"));
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE, 
out.getOut().getHeader("Access-Control-Max-Age"));
-        assertEquals("true", 
out.getOut().getHeader("Access-Control-Allow-Credentials"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_ORIGIN, 
out.getMessage().getHeader("Access-Control-Allow-Origin"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS, 
out.getMessage().getHeader("Access-Control-Allow-Methods"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS, 
out.getMessage().getHeader("Access-Control-Allow-Headers"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE, 
out.getMessage().getHeader("Access-Control-Max-Age"));
+        assertEquals("true", 
out.getMessage().getHeader("Access-Control-Allow-Credentials"));
 
         assertMockEndpointsSatisfied();
     }
@@ -69,11 +69,11 @@ public class FromRestGetCorsAllowCredentialsTest extends 
ContextTestSupport {
         });
         assertNotNull(out);
 
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS, 
out.getOut().getHeader("Access-Control-Allow-Methods"));
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS, 
out.getOut().getHeader("Access-Control-Allow-Headers"));
-        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE, 
out.getOut().getHeader("Access-Control-Max-Age"));
-        assertEquals("true", 
out.getOut().getHeader("Access-Control-Allow-Credentials"));
-        assertEquals("mydomain", 
out.getOut().getHeader("Access-Control-Allow-Origin"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS, 
out.getMessage().getHeader("Access-Control-Allow-Methods"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS, 
out.getMessage().getHeader("Access-Control-Allow-Headers"));
+        assertEquals(RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE, 
out.getMessage().getHeader("Access-Control-Max-Age"));
+        assertEquals("true", 
out.getMessage().getHeader("Access-Control-Allow-Credentials"));
+        assertEquals("mydomain", 
out.getMessage().getHeader("Access-Control-Allow-Origin"));
 
         assertMockEndpointsSatisfied();
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
index 0db362e..b7c32bf 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsCustomTest.java
@@ -46,10 +46,10 @@ public class FromRestGetCorsCustomTest extends 
ContextTestSupport {
         });
         assertNotNull(out);
 
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Origin"), 
"myserver");
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Methods"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS);
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Headers"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS);
-        assertEquals(out.getOut().getHeader("Access-Control-Max-Age"), "180");
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Origin"), 
"myserver");
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Methods"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS);
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Headers"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS);
+        assertEquals(out.getMessage().getHeader("Access-Control-Max-Age"), 
"180");
 
         assertMockEndpointsSatisfied();
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
index 558de2a..02b46a7 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetCorsTest.java
@@ -46,10 +46,10 @@ public class FromRestGetCorsTest extends ContextTestSupport 
{
         });
         assertNotNull(out);
 
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Origin"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_ORIGIN);
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Methods"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS);
-        assertEquals(out.getOut().getHeader("Access-Control-Allow-Headers"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS);
-        assertEquals(out.getOut().getHeader("Access-Control-Max-Age"), 
RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE);
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Origin"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_ORIGIN);
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Methods"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_METHODS);
+        
assertEquals(out.getMessage().getHeader("Access-Control-Allow-Headers"), 
RestConfiguration.CORS_ACCESS_CONTROL_ALLOW_HEADERS);
+        assertEquals(out.getMessage().getHeader("Access-Control-Max-Age"), 
RestConfiguration.CORS_ACCESS_CONTROL_MAX_AGE);
 
         assertMockEndpointsSatisfied();
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
index db2fd9c..9bbc602 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/FromRestGetHttpErrorCodeTest.java
@@ -44,8 +44,8 @@ public class FromRestGetHttpErrorCodeTest extends 
ContextTestSupport {
             }
         });
         assertNotNull(reply);
-        assertEquals(404, 
reply.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
-        assertEquals("text/plain", 
reply.getOut().getHeader(Exchange.CONTENT_TYPE));
+        assertEquals(404, 
reply.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE));
+        assertEquals("text/plain", 
reply.getMessage().getHeader(Exchange.CONTENT_TYPE));
     }
 
     @Override
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
index ea7a9a1..33b3c8a 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/rest/RestProducerBindingProcessorTest.java
@@ -87,7 +87,7 @@ public class RestProducerBindingProcessorTest {
 
         that.done(false);
 
-        Assert.assertSame(response, exchange.getOut().getBody());
+        Assert.assertSame(response, exchange.getMessage().getBody());
     }
 
     @Test
@@ -121,7 +121,7 @@ public class RestProducerBindingProcessorTest {
 
         that.done(false);
 
-        Assert.assertSame(response, exchange.getOut().getBody());
+        Assert.assertSame(response, exchange.getMessage().getBody());
     }
 
     @Test
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaAsyncProducerTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaAsyncProducerTest.java
index 8ecbeff..ea73cd5 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaAsyncProducerTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaAsyncProducerTest.java
@@ -76,7 +76,7 @@ public class SedaAsyncProducerTest extends ContextTestSupport 
{
 
         assertEquals("Send should occur before processor", "processsend", 
route);
 
-        String response = exchange.getOut().getBody(String.class);
+        String response = exchange.getMessage().getBody(String.class);
         assertEquals("Bye World", response);
     }
 
@@ -92,7 +92,7 @@ public class SedaAsyncProducerTest extends ContextTestSupport 
{
                         public void process(Exchange exchange) throws 
Exception {
                             route = route + "process";
                             // set the response
-                            exchange.getOut().setBody("Bye World");
+                            exchange.getMessage().setBody("Bye World");
                         }
                     })
                     .to("mock:result");
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
index 65ff2e4..0d6441d 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/vm/VmWaitForTaskIfReplyExpectedTest.java
@@ -44,7 +44,7 @@ public class VmWaitForTaskIfReplyExpectedTest extends 
AbstractVmTestSupport {
                 exchange.setPattern(ExchangePattern.InOnly);
             }
         });
-        // we do not expecy a reply and thus do no wait so we just get our own 
input back
+        // we do not expect a reply and thus do no wait so we just get our own 
input back
         assertEquals("Hello World", out.getIn().getBody());
         assertNull(out.getOut().getBody());
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/converter/CamelConverterTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/converter/CamelConverterTest.java
index 77fd21e..b2983e3 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/converter/CamelConverterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/converter/CamelConverterTest.java
@@ -43,7 +43,7 @@ public class CamelConverterTest extends ContextTestSupport {
 
         pro.process(exchange);
 
-        assertEquals("bar", exchange.getOut().getBody());
+        assertEquals("bar", exchange.getMessage().getBody());
     }
 
     @Test
@@ -58,6 +58,6 @@ public class CamelConverterTest extends ContextTestSupport {
 
         pro.process(exchange);
 
-        assertEquals(true, exchange.getOut().getBody());
+        assertEquals(true, exchange.getMessage().getBody());
     }
 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateTest.java
index 4a25364..0c113c6 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultConsumerTemplateTest.java
@@ -320,7 +320,7 @@ public class DefaultConsumerTemplateTest extends 
ContextTestSupport {
     @Test
     public void testReceiveOut() throws Exception {
         Exchange exchange = new DefaultExchange(context);
-        exchange.getOut().setBody("Bye World");
+        exchange.getMessage().setBody("Bye World");
         template.send("seda:foo", exchange);
 
         String out = consumer.receiveBody("seda:foo", String.class);
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
index 8002bbe..6e456f7 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerTemplateAsyncTest.java
@@ -297,7 +297,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         template.asyncCallback("direct:echo", exchange, new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("HelloHello", exchange.getOut().getBody());
+                assertEquals("HelloHello", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
                 latch.countDown();
             }
@@ -347,7 +347,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         Future<Exchange> future = template.asyncCallback("direct:echo", 
exchange, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("HelloHello", exchange.getOut().getBody());
+                assertEquals("HelloHello", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
             }
         });
@@ -358,7 +358,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
 
         assertEquals(7, ORDER.get());
         assertNotNull(reply);
-        assertEquals("HelloHello", reply.getOut().getBody());
+        assertEquals("HelloHello", reply.getMessage().getBody());
     }
 
     @Test
@@ -395,7 +395,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         template.asyncCallbackRequestBody("direct:echo", "Hello", new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("HelloHello", exchange.getOut().getBody());
+                assertEquals("HelloHello", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
                 latch.countDown();
             }
@@ -439,7 +439,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         Future<Object> future = 
template.asyncCallbackRequestBody("direct:echo", "Hello", new 
SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("HelloHello", exchange.getOut().getBody());
+                assertEquals("HelloHello", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
             }
         });
@@ -495,7 +495,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         }, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("HelloHello", exchange.getOut().getBody());
+                assertEquals("HelloHello", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
                 latch.countDown();
             }
@@ -522,7 +522,7 @@ public class DefaultProducerTemplateAsyncTest extends 
ContextTestSupport {
         }, new SynchronizationAdapter() {
             @Override
             public void onDone(Exchange exchange) {
-                assertEquals("ByeBye", exchange.getOut().getBody());
+                assertEquals("ByeBye", exchange.getMessage().getBody());
                 ORDER.addAndGet(2);
                 latch.countDown();
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/PojoProduceInterceptEndpointTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/PojoProduceInterceptEndpointTest.java
index b244e9c..cea9824 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/PojoProduceInterceptEndpointTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/PojoProduceInterceptEndpointTest.java
@@ -103,7 +103,7 @@ public class PojoProduceInterceptEndpointTest extends 
Assert {
             Exchange exchange = producer.getEndpoint().createExchange();
             exchange.getIn().setBody(body);
             producer.process(exchange);
-            return exchange.hasOut() ? exchange.getOut().getBody() : 
exchange.getIn().getBody();
+            return exchange.getMessage().getBody();
         }
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
index 174145f..16d5fc0 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java
@@ -84,7 +84,7 @@ public class TransformerRouteTest extends ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals(AOrderResponse.class, 
answerEx.getOut().getBody().getClass());
+        assertEquals(AOrderResponse.class, 
answerEx.getMessage().getBody().getClass());
         assertMockEndpointsSatisfied();
     }
 
@@ -106,7 +106,7 @@ public class TransformerRouteTest extends 
ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals("{name:XOrderResponse}", 
answerEx.getOut().getBody(String.class));
+        assertEquals("{name:XOrderResponse}", 
answerEx.getMessage().getBody(String.class));
         assertMockEndpointsSatisfied();
     }
 
@@ -128,7 +128,7 @@ public class TransformerRouteTest extends 
ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals("<XOrderResponse/>", 
answerEx.getOut().getBody(String.class));
+        assertEquals("<XOrderResponse/>", 
answerEx.getMessage().getBody(String.class));
         assertMockEndpointsSatisfied();
     }
 
@@ -150,7 +150,7 @@ public class TransformerRouteTest extends 
ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals("name=XOrderResponse", 
answerEx.getOut().getBody(String.class));
+        assertEquals("name=XOrderResponse", 
answerEx.getMessage().getBody(String.class));
         assertMockEndpointsSatisfied();
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
index cc2f7a2..327e825 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/validator/ValidatorRouteTest.java
@@ -66,7 +66,7 @@ public class ValidatorRouteTest extends ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals("<XOrderResponse/>", 
answerEx.getOut().getBody(String.class));
+        assertEquals("<XOrderResponse/>", 
answerEx.getMessage().getBody(String.class));
         assertEquals(MyXmlEndpoint.class, 
answerEx.getProperty(VALIDATOR_INVOKED));
     }
 
@@ -78,7 +78,7 @@ public class ValidatorRouteTest extends ContextTestSupport {
         if (answerEx.getException() != null) {
             throw answerEx.getException();
         }
-        assertEquals("name=XOrderResponse", 
answerEx.getOut().getBody(String.class));
+        assertEquals("name=XOrderResponse", 
answerEx.getMessage().getBody(String.class));
         assertEquals(OtherXOrderResponseValidator.class, 
answerEx.getProperty(VALIDATOR_INVOKED));
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/issues/DavidSiefertTest.java 
b/core/camel-core/src/test/java/org/apache/camel/issues/DavidSiefertTest.java
index 7fafe62..71ee888 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/issues/DavidSiefertTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/issues/DavidSiefertTest.java
@@ -63,7 +63,7 @@ public class DavidSiefertTest extends ContextTestSupport {
         public void process(Exchange exchange) throws Exception {
             exchange.getIn().getBody(String.class);
 
-            Message output = exchange.getOut();
+            Message output = exchange.getMessage();
             output.setHeader("sample.name", "myValue");
             output.setBody(expectedBody);
         }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/issues/DoCatchCaughExceptionIssueTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/issues/DoCatchCaughExceptionIssueTest.java
index f76a8fe..5bc2287 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/issues/DoCatchCaughExceptionIssueTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/issues/DoCatchCaughExceptionIssueTest.java
@@ -48,7 +48,7 @@ public class DoCatchCaughExceptionIssueTest extends 
ContextTestSupport {
                             public void process(Exchange exchange) throws 
Exception {
                                 Exception error = 
exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
                                 assertEquals("Forced by me", 
error.getMessage());
-                                exchange.getOut().setBody(error.getMessage() + 
" but I fixed it");
+                                
exchange.getMessage().setBody(error.getMessage() + " but I fixed it");
                             }
                         })
                     .end();
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
index 327a1f8..49760db 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/issues/SetHeaderInDoCatchIssueTest.java
@@ -45,7 +45,7 @@ public class SetHeaderInDoCatchIssueTest extends 
ContextTestSupport {
             }
         });
 
-        assertEquals("TimeOut", exchange.getOut().getHeader("Status"));
+        assertEquals("TimeOut", exchange.getMessage().getHeader("Status"));
     }
 
     @Test
@@ -56,7 +56,7 @@ public class SetHeaderInDoCatchIssueTest extends 
ContextTestSupport {
             }
         });
 
-        assertEquals("ExceptionGeneral", 
exchange.getOut().getHeader("Status"));
+        assertEquals("ExceptionGeneral", 
exchange.getMessage().getHeader("Status"));
     }
 
     protected JndiRegistry createRegistry() throws Exception {
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageExtSingleTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageExtSingleTest.java
index 07c3ba1..9e08f3b 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageExtSingleTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/language/FileLanguageExtSingleTest.java
@@ -68,7 +68,7 @@ public class FileLanguageExtSingleTest extends 
LanguageTestSupport {
         answer.getIn().setHeader("birthday", cal.getTime());
 
         cal.set(2008, Calendar.AUGUST, 8);
-        answer.getOut().setHeader("special", cal.getTime());
+        answer.getMessage().setHeader("special", cal.getTime());
         return answer;
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/BodyOutAggregatingStrategy.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/BodyOutAggregatingStrategy.java
index 93f9cfe..42962c2 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/BodyOutAggregatingStrategy.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/BodyOutAggregatingStrategy.java
@@ -25,7 +25,7 @@ public class BodyOutAggregatingStrategy implements 
AggregationStrategy {
         if (oldExchange != null) {
             String oldBody = oldExchange.getIn().getBody(String.class);
             String newBody = newExchange.getIn().getBody(String.class);
-            newExchange.getOut().setBody(oldBody + "+" + newBody);
+            newExchange.getMessage().setBody(oldBody + "+" + newBody);
         }
 
         return newExchange;
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/FailOverLoadBalancerSetFaultTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/FailOverLoadBalancerSetFaultTest.java
index 621d2fd..6ec1fd5 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/FailOverLoadBalancerSetFaultTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/FailOverLoadBalancerSetFaultTest.java
@@ -55,7 +55,7 @@ public class FailOverLoadBalancerSetFaultTest extends 
ContextTestSupport {
                         .process(new Processor() {
                             public void process(Exchange exchange) throws 
Exception {
                                 // mutate the message
-                                exchange.getOut().setBody("Hi Camel");
+                                exchange.getMessage().setBody("Hi Camel");
                                 exchange.setException(new IOException("Forced 
exception for test"));
                             }
                         });
@@ -64,7 +64,7 @@ public class FailOverLoadBalancerSetFaultTest extends 
ContextTestSupport {
                         .to("mock:failover2")
                         .process(new Processor() {
                             public void process(Exchange exchange) throws 
Exception {
-                                exchange.getOut().setBody("Bye Camel");
+                                exchange.getMessage().setBody("Bye Camel");
                             }
                         });
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/MDCResetTest.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/MDCResetTest.java
index f51ca79..c34ae62 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/MDCResetTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/MDCResetTest.java
@@ -72,7 +72,7 @@ public class MDCResetTest extends ContextTestSupport {
                                 String body = 
exchange.getIn().getBody(String.class);
                                 // use a producer template to send to b, 
instead of in the route DSL
                                 body = template.requestBody("direct:b", body, 
String.class);
-                                exchange.getOut().setBody(body);
+                                exchange.getMessage().setBody(body);
                             }
                         })
                         .process(new Processor() {
@@ -89,7 +89,7 @@ public class MDCResetTest extends ContextTestSupport {
                                 assertEquals("route-b", 
MDC.get("camel.routeId"));
                                 assertEquals(exchange.getExchangeId(), 
MDC.get("camel.exchangeId"));
 
-                                exchange.getOut().setBody("Good Afternoon 
World");
+                                exchange.getMessage().setBody("Good Afternoon 
World");
                             }
                         })
                         .to("log:bar");
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastParallelAndStreamCachingTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastParallelAndStreamCachingTest.java
index c5788a5..0f82bd4 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastParallelAndStreamCachingTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastParallelAndStreamCachingTest.java
@@ -82,7 +82,7 @@ public class MultiCastParallelAndStreamCachingTest extends 
ContextTestSupport {
             if (body instanceof InputStream) {
                 ByteArrayOutputStream output = new ByteArrayOutputStream();
                 IOHelper.copy((InputStream) body, output);
-                exchange.getOut().setBody(output.toByteArray());
+                exchange.getMessage().setBody(output.toByteArray());
             } else if (body instanceof Reader) {
                 Reader reader = (Reader) body;
                 StringBuilder sb = new StringBuilder();
@@ -90,13 +90,13 @@ public class MultiCastParallelAndStreamCachingTest extends 
ContextTestSupport {
                     sb.append((char) i);
                 }
                 reader.close();
-                exchange.getOut().setBody(sb.toString());
+                exchange.getMessage().setBody(sb.toString());
             } else if (body instanceof StreamSource) {
                 StreamSource ss = (StreamSource) body;
                 if (ss.getInputStream() != null) {
                     ByteArrayOutputStream output = new ByteArrayOutputStream();
                     IOHelper.copy(ss.getInputStream(), output);
-                    exchange.getOut().setBody(output.toByteArray());
+                    exchange.getMessage().setBody(output.toByteArray());
                 } else if (ss.getReader() != null) {
                     Reader reader = ss.getReader();
                     StringBuilder sb = new StringBuilder();
@@ -104,7 +104,7 @@ public class MultiCastParallelAndStreamCachingTest extends 
ContextTestSupport {
                         sb.append((char) i);
                     }
                     reader.close();
-                    exchange.getOut().setBody(sb.toString());
+                    exchange.getMessage().setBody(sb.toString());
                 } else {
                     throw new RuntimeException("StreamSource without 
InputStream and without Reader not supported");
                 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastStreamCachingInSubRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastStreamCachingInSubRouteTest.java
index 5c5626c..c01c743 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastStreamCachingInSubRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/MultiCastStreamCachingInSubRouteTest.java
@@ -91,7 +91,7 @@ public class MultiCastStreamCachingInSubRouteTest extends 
ContextTestSupport {
             cos.write(s.getBytes(Charset.forName("UTF-8")));
             cos.close();
             InputStream is = (InputStream) cos.newStreamCache();
-            exchange.getOut().setBody(is);
+            exchange.getMessage().setBody(is);
 
         }
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/MyNormalizer.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/MyNormalizer.java
index 4c73f82..ade4c0f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/MyNormalizer.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/MyNormalizer.java
@@ -22,11 +22,11 @@ import org.apache.camel.language.xpath.XPath;
 // START SNIPPET: example   
 public class MyNormalizer {
     public void employeeToPerson(Exchange exchange, 
@XPath("/employee/name/text()") String name) {
-        exchange.getOut().setBody(createPerson(name));            
+        exchange.getMessage().setBody(createPerson(name));
     }
 
     public void customerToPerson(Exchange exchange, @XPath("/customer/@name") 
String name) {
-        exchange.getOut().setBody(createPerson(name));
+        exchange.getMessage().setBody(createPerson(name));
     }        
     
     private String createPerson(String name) {
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/NewProcessorAndServiceTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/NewProcessorAndServiceTest.java
index 3c430df..dab55c0 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/NewProcessorAndServiceTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/NewProcessorAndServiceTest.java
@@ -50,7 +50,7 @@ public class NewProcessorAndServiceTest extends 
ContextTestSupport {
         private boolean started;
 
         public void process(Exchange exchange) throws Exception {
-            exchange.getOut().setBody("Bye World");
+            exchange.getMessage().setBody("Bye World");
         }
 
         public void start() {
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineConcurrentTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineConcurrentTest.java
index 8605d6b..1074a68 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineConcurrentTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineConcurrentTest.java
@@ -78,7 +78,7 @@ public class PipelineConcurrentTest extends 
ContextTestSupport {
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             String body = 
exchange.getIn().getBody(String.class);
-                            exchange.getOut().setBody("Bye " + body);
+                            exchange.getMessage().setBody("Bye " + body);
                         }
                     });
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineMEPTest.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineMEPTest.java
index 546cc58..b62e68a 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineMEPTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineMEPTest.java
@@ -89,7 +89,7 @@ public class PipelineMEPTest extends ContextTestSupport {
                 // however the exchange will carry body IN and OUT when the 
route completes, as
                 // we operate on the original exchange in this processor
                 // (= we are the first node in the route after the from 
consumer)
-                exchange.getOut().setBody(number);
+                exchange.getMessage().setBody(number);
             }
         };
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
index 14e1030..a9c34f0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/PipelineTest.java
@@ -60,7 +60,7 @@ public class PipelineTest extends ContextTestSupport {
 
         resultEndpoint.assertIsSatisfied();
 
-        assertEquals("Result body", 4, results.getOut().getBody());
+        assertEquals("Result body", 4, results.getMessage().getBody());
     }
 
     
@@ -72,8 +72,8 @@ public class PipelineTest extends ContextTestSupport {
             }
         });
         
-        assertEquals("Hello World", exchange.getOut().getBody());
-        assertEquals(3, exchange.getOut().getHeader("copy-counter"));        
+        assertEquals("Hello World", exchange.getMessage().getBody());
+        assertEquals(3, exchange.getMessage().getHeader("copy-counter"));
     }
 
     @Test
@@ -84,8 +84,8 @@ public class PipelineTest extends ContextTestSupport {
             }
         });
         
-        assertEquals("headerValue", exchange.getOut().getHeader("header"));
-        assertEquals(3, exchange.getOut().getHeader("copy-counter"));  
+        assertEquals("headerValue", exchange.getMessage().getHeader("header"));
+        assertEquals(3, exchange.getMessage().getHeader("copy-counter"));
     }
     
     @Override
@@ -103,7 +103,7 @@ public class PipelineTest extends ContextTestSupport {
                     number = 0;
                 }
                 number = number + 1;
-                exchange.getOut().setBody(number);
+                exchange.getMessage().setBody(number);
             }
         };
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java
index 862a960..a367fdf 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTest.java
@@ -37,7 +37,7 @@ public class SimpleProcessorTest extends ContextTestSupport {
             public void configure() throws Exception {
                 from("direct:start").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
-                        exchange.getOut().setBody("Bye World");
+                        exchange.getMessage().setBody("Bye World");
                     }
                 });
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java
index 9880823..f88140f 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleProcessorTraceableTest.java
@@ -46,7 +46,7 @@ public class SimpleProcessorTraceableTest extends 
ContextTestSupport {
 
         @Override
         public void process(Exchange exchange) throws Exception {
-            exchange.getOut().setBody("Bye World");
+            exchange.getMessage().setBody("Bye World");
         }
 
         @Override
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
index 34d90c3..7c1fb81 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/SimulatorTest.java
@@ -58,7 +58,7 @@ public class SimulatorTest extends ContextTestSupport {
 
         assertNotNull("Should receive a response!", response);
 
-        String text = response.getOut().getMandatoryBody(String.class);
+        String text = response.getMessage().getMandatoryBody(String.class);
         assertStringContains(text, containedText);
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterStreamCachingInSubRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterStreamCachingInSubRouteTest.java
index f9a3eaf..f3461ed 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterStreamCachingInSubRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterStreamCachingInSubRouteTest.java
@@ -100,7 +100,7 @@ public class SplitterStreamCachingInSubRouteTest extends 
ContextTestSupport {
             cos.close();
             InputStream is = (InputStream) cos.newStreamCache();
 
-            exchange.getOut().setBody(is);
+            exchange.getMessage().setBody(is);
         }
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java 
b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
index d177c77..73fb81f 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
@@ -85,7 +85,7 @@ public class SplitterTest extends ContextTestSupport {
         });
 
         assertMockEndpointsSatisfied();
-        Message out = result.getOut();
+        Message out = result.getMessage();
         assertEquals("Roman", out.getBody());
         assertMessageHeader(out, "foo", "bar");
         assertProperty(result, Exchange.SPLIT_INDEX, 4);
@@ -150,7 +150,7 @@ public class SplitterTest extends ContextTestSupport {
         });
 
         assertMockEndpointsSatisfied();
-        Message out = result.getOut();
+        Message out = result.getMessage();
 
         assertMessageHeader(out, "foo", "bar");
         assertEquals((Integer) 5, result.getProperty("aggregated", 
Integer.class));
@@ -171,7 +171,7 @@ public class SplitterTest extends ContextTestSupport {
         });
 
         assertMockEndpointsSatisfied();
-        Message out = result.getOut();
+        Message out = result.getMessage();
 
         assertMessageHeader(out, "foo", "bar");
         assertEquals((Integer) 5, result.getProperty("aggregated", 
Integer.class));
@@ -192,7 +192,7 @@ public class SplitterTest extends ContextTestSupport {
         });
 
         assertMockEndpointsSatisfied();
-        Message out = result.getOut();
+        Message out = result.getMessage();
 
         assertMessageHeader(out, "foo", "bar");
         // we aggregate parallel and therefore its not thread-safe when 
setting values
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateLostGroupIssueTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateLostGroupIssueTest.java
index 92260b9..8e2de8c 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateLostGroupIssueTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateLostGroupIssueTest.java
@@ -51,8 +51,8 @@ public class AggregateLostGroupIssueTest extends 
ContextTestSupport {
                 from("timer://foo?period=10&delay=0").startupOrder(2)
                         .process(new Processor() {
                             public void process(Exchange exchange) throws 
Exception {
-                                exchange.getOut().setBody(messageIndex++);
-                                exchange.getOut().setHeader("aggregateGroup", 
"group1");
+                                exchange.getMessage().setBody(messageIndex++);
+                                
exchange.getMessage().setHeader("aggregateGroup", "group1");
                             }
                         }).to("direct:aggregator");
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionHandleTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionHandleTest.java
index 4c40821..fbecabf 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionHandleTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionHandleTest.java
@@ -72,7 +72,7 @@ public class AggregatorExceptionHandleTest extends 
ContextTestSupport {
                             if ("Damn".equals(body)) {
                                 throw new IllegalArgumentException("Damn");
                             }
-                            exchange.getOut().setBody("Bye World");
+                            exchange.getMessage().setBody("Bye World");
                         }
                     })
                     .to("mock:result");
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList3Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList3Test.java
index 68d3945..574d103 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList3Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList3Test.java
@@ -62,7 +62,7 @@ public class AsyncEndpointRecipientList3Test extends 
ContextTestSupport {
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadName = Thread.currentThread().getName();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList4Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList4Test.java
index 26607a1..df4a41c 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList4Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientList4Test.java
@@ -62,7 +62,7 @@ public class AsyncEndpointRecipientList4Test extends 
ContextTestSupport {
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadId = Thread.currentThread().getId();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
index ef46d5a..54811c1 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean3Test.java
@@ -69,7 +69,7 @@ public class AsyncEndpointRecipientListBean3Test extends 
ContextTestSupport {
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadName = Thread.currentThread().getName();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
index 4ec1e4c..72b39a6 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListBean4Test.java
@@ -69,7 +69,7 @@ public class AsyncEndpointRecipientListBean4Test extends 
ContextTestSupport {
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadName = Thread.currentThread().getName();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel3Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel3Test.java
index 7e96d8f..04a4867 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel3Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel3Test.java
@@ -62,7 +62,7 @@ public class AsyncEndpointRecipientListParallel3Test extends 
ContextTestSupport
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadName = Thread.currentThread().getName();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel4Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel4Test.java
index 2a0d301..ab683b9 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel4Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRecipientListParallel4Test.java
@@ -62,7 +62,7 @@ public class AsyncEndpointRecipientListParallel4Test extends 
ContextTestSupport
                     .process(new Processor() {
                         public void process(Exchange exchange) throws 
Exception {
                             afterThreadName = Thread.currentThread().getName();
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlip3Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlip3Test.java
index 1f894c8..e7cfffa 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlip3Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlip3Test.java
@@ -64,7 +64,7 @@ public class AsyncEndpointRoutingSlip3Test extends 
ContextTestSupport {
                             afterThreadName = Thread.currentThread().getName();
                             String body = 
exchange.getIn().getBody(String.class);
                             assertEquals("Hi World", body);
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
index 5eae71f..b4813c5 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBean3Test.java
@@ -73,7 +73,7 @@ public class AsyncEndpointRoutingSlipBean3Test extends 
ContextTestSupport {
                             afterThreadName = Thread.currentThread().getName();
                             String body = 
exchange.getIn().getBody(String.class);
                             assertEquals("Hi World", body);
-                            exchange.getOut().setBody("Bye Camel");
+                            exchange.getMessage().setBody("Bye Camel");
                         }
                     })
                     .to("log:after")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
index cf34d94..28b319b 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointRoutingSlipBeanNonBlockingTest.java
@@ -57,7 +57,7 @@ public class AsyncEndpointRoutingSlipBeanNonBlockingTest 
extends ContextTestSupp
         try {
             Future<Boolean> asyncFuture = executorService.submit(new 
ExchangeSubmitter(startEndpoint, asyncSender));
             Assert.assertFalse(asyncFuture.get(5, TimeUnit.SECONDS));
-            innerExchange.getOut().setBody("Bye Camel");
+            innerExchange.getMessage().setBody("Bye Camel");
             innerCallback.done(false);
 
             assertMockEndpointsSatisfied();
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
index 7d7fc46..84d631b 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
@@ -56,9 +56,7 @@ public class MyAsyncProducer extends DefaultAsyncProducer {
                 } else {
                     String reply = getEndpoint().getReply();
                     reply = getEndpoint().isAppend() ? 
exchange.getIn().getBody() + " " + reply : reply;
-                    exchange.getOut().setBody(reply);
-                    // propagate headers
-                    
exchange.getOut().setHeaders(exchange.getIn().getHeaders());
+                    exchange.getMessage().setBody(reply);
                     LOG.info("Setting reply " + reply);
                 }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
index d283898..43b1119 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/EnricherRefTest.java
@@ -42,7 +42,7 @@ public class EnricherRefTest extends ContextTestSupport {
     public void testEnrichRef() throws Exception {
         cool.whenAnyExchangeReceived(new Processor() {
             public void process(Exchange exchange) throws Exception {
-                exchange.getOut().setBody("Bye World");
+                exchange.getMessage().setBody("Bye World");
             }
         });
         cool.expectedBodiesReceived("Hello World");
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherTest.java
index d6ea69b..77f9401 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/enricher/PollEnricherTest.java
@@ -118,7 +118,7 @@ public class PollEnricherTest extends ContextTestSupport {
         });
         assertEquals("bar", exchange.getIn().getHeader("foo"));
         assertEquals("test:blah", exchange.getIn().getBody());
-        assertEquals("seda://foo4", 
exchange.getOut().getHeader(Exchange.TO_ENDPOINT));
+        assertEquals("seda://foo4", 
exchange.getMessage().getHeader(Exchange.TO_ENDPOINT));
         assertNull(exchange.getException());
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/CustomExceptionPolicyStrategyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/CustomExceptionPolicyStrategyTest.java
index a969348..233ce40 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/CustomExceptionPolicyStrategyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/CustomExceptionPolicyStrategyTest.java
@@ -96,7 +96,7 @@ public class CustomExceptionPolicyStrategyTest extends 
ContextTestSupport {
                         if ("Hello Camel".equals(s)) {
                             throw new CamelExchangeException("Forced for 
testing", exchange);
                         }
-                        exchange.getOut().setBody("Hello World");
+                        exchange.getMessage().setBody("Hello World");
                     }
                 }).to("mock:result");
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingOnlyWhenTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingOnlyWhenTest.java
index 0dee651..25a5aee 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingOnlyWhenTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingOnlyWhenTest.java
@@ -81,7 +81,7 @@ public class DefaultExceptionPolicyStrategyUsingOnlyWhenTest 
extends ContextTest
                         if ("Hello Camel".equals(s)) {
                             throw new MyUserException("Forced for testing");
                         }
-                        exchange.getOut().setBody("Hello World");
+                        exchange.getMessage().setBody("Hello World");
                     }
                 }).to("mock:result");
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingWhenTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingWhenTest.java
index c60407f..755847d 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingWhenTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/exceptionpolicy/DefaultExceptionPolicyStrategyUsingWhenTest.java
@@ -101,7 +101,7 @@ public class DefaultExceptionPolicyStrategyUsingWhenTest 
extends ContextTestSupp
                         if ("Hello Camel".equals(s)) {
                             throw new MyUserException("Forced for testing");
                         }
-                        exchange.getOut().setBody("Hello World");
+                        exchange.getMessage().setBody("Hello World");
                     }
                 }).to("mock:result");
             }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionUseOriginalMessageTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionUseOriginalMessageTest.java
index 4ae0b5a..894e6fd 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionUseOriginalMessageTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionUseOriginalMessageTest.java
@@ -90,7 +90,7 @@ public class OnExceptionUseOriginalMessageTest extends 
ContextTestSupport {
                 exchange.getIn().setBody(HELLO_WORLD);
             }
             // set the out message
-            exchange.getOut().setBody("Error body");
+            exchange.getMessage().setBody("Error body");
             throw new IllegalArgumentException("Get a wrong message");
         }
     }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipPOJOTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipPOJOTest.java
index 4f388fc..de9be27 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipPOJOTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/routingslip/RoutingSlipPOJOTest.java
@@ -46,7 +46,7 @@ public class RoutingSlipPOJOTest extends ContextTestSupport {
                 
                 from("direct:b").process(new Processor() {
                     public void process(Exchange exchange) throws Exception {
-                        exchange.getOut().setBody(exchange.getIn().getBody() + 
" is processed!");                        
+                        
exchange.getMessage().setBody(exchange.getIn().getBody() + " is processed!");
                     }
                 });
             }
diff --git 
a/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
 
b/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
index 3454cf9..e64359f 100644
--- 
a/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
+++ 
b/core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedBrowsableEndpoint.java
@@ -75,12 +75,7 @@ public class ManagedBrowsableEndpoint extends 
ManagedEndpoint implements Managed
         }
 
         // must use java type with JMX such as java.lang.String
-        String body;
-        if (exchange.hasOut()) {
-            body = exchange.getOut().getBody(String.class);
-        } else {
-            body = exchange.getIn().getBody(String.class);
-        }
+        String body = exchange.getMessage().getBody(String.class);
 
         return body;
     }
@@ -97,7 +92,7 @@ public class ManagedBrowsableEndpoint extends ManagedEndpoint 
implements Managed
             return null;
         }
 
-        Message msg = exchange.hasOut() ? exchange.getOut() : exchange.getIn();
+        Message msg = exchange.getMessage();
         String xml = MessageHelper.dumpAsXml(msg, includeBody);
 
         return xml;
@@ -129,7 +124,7 @@ public class ManagedBrowsableEndpoint extends 
ManagedEndpoint implements Managed
         sb.append("<messages>");
         for (int i = fromIndex; i < exchanges.size() && i <= toIndex; i++) {
             Exchange exchange = exchanges.get(i);
-            Message msg = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
+            Message msg = exchange.getMessage();
             String xml = MessageHelper.dumpAsXml(msg, includeBody);
             sb.append("\n").append(xml);
         }
diff --git 
a/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
 
b/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
index c346be9..79325c1 100644
--- 
a/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
+++ 
b/core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedInlinedProcessorTest.java
@@ -56,7 +56,7 @@ public class ManagedInlinedProcessorTest extends 
ManagementTestSupport {
             @Override
             public void configure() throws Exception {
                 from("direct:start").routeId("foo")
-                    .process(exchange -> exchange.getOut().setBody("Bye 
World")).id("custom")
+                    .process(exchange -> exchange.getMessage().setBody("Bye 
World")).id("custom")
                     .to("mock:result");
             }
         };
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchangeHolder.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchangeHolder.java
index b3aaead..c3801d6 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchangeHolder.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchangeHolder.java
@@ -219,6 +219,7 @@ public class DefaultExchangeHolder implements Serializable {
         return null;
     }
 
+    @Deprecated
     private Map<String, Object> safeSetOutHeaders(Exchange exchange, boolean 
allowSerializedHeaders) {
         if (exchange.hasOut() && exchange.getOut().hasHeaders()) {
             Map<String, Object> map = checkValidHeaderObjects("out headers", 
exchange, exchange.getOut().getHeaders(), allowSerializedHeaders);
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultScheduledPollConsumer.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultScheduledPollConsumer.java
index 5434c44..4cc3d2f 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultScheduledPollConsumer.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultScheduledPollConsumer.java
@@ -60,14 +60,8 @@ public class DefaultScheduledPollConsumer extends 
ScheduledPollConsumer {
             messagesPolled++;
             log.trace("Polled {} {}", messagesPolled, exchange);
 
-            // if the result of the polled exchange has output we should 
create a new exchange and
-            // use the output as input to the next processor
-            if (exchange.hasOut()) {
-                // lets create a new exchange
-                Exchange newExchange = getEndpoint().createExchange();
-                newExchange.getIn().copyFrom(exchange.getOut());
-                exchange = newExchange;
-            }
+            // prepare for processing where message should be IN
+            ExchangeHelper.prepareOutToIn(exchange);
             getProcessor().process(exchange);
         }
 
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java 
b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
index 093a43d..effe40a 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
@@ -452,7 +452,7 @@ public final class ExchangeHelper {
             // if we are out capable then set out and response as well
             // however only grab OUT if it exists, otherwise reuse IN
             // this prevents side effects to alter the Exchange if we force 
creating an OUT message
-            Message msg = exchange.hasOut() ? exchange.getOut() : 
exchange.getIn();
+            Message msg = exchange.getMessage();
             map.put("out", msg);
             map.put("response", msg);
         }
@@ -806,7 +806,7 @@ public final class ExchangeHelper {
      * @return a log message with both the messageId and exchangeId
      */
     public static String logIds(Exchange exchange) {
-        String msgId = exchange.hasOut() ? exchange.getOut().getMessageId() : 
exchange.getIn().getMessageId();
+        String msgId = exchange.getMessage().getMessageId();
         return "(MessageId: " + msgId + " on ExchangeId: " + 
exchange.getExchangeId()  + ")";
     }
 
@@ -854,7 +854,7 @@ public final class ExchangeHelper {
      * @param outOnly    whether to replace the message as OUT message
      */
     public static void replaceMessage(Exchange exchange, Message newMessage, 
boolean outOnly) {
-        Message old = exchange.hasOut() ? exchange.getOut() : exchange.getIn();
+        Message old = exchange.getMessage();
         if (outOnly || exchange.hasOut()) {
             exchange.setOut(newMessage);
         } else {
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 1c3209a7..20f3ff8 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -174,6 +174,7 @@ public class ExpressionBuilder {
      * @param headerName the name of the header the expression will return
      * @return an expression object which will return the header value
      */
+    @Deprecated
     public static Expression outHeaderExpression(final String headerName) {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -204,6 +205,7 @@ public class ExpressionBuilder {
      * @return an expression object which will return the headers, will be 
<tt>null</tt> if the
      * exchange is not out capable.
      */
+    @Deprecated
     public static Expression outHeadersExpression() {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -866,6 +868,7 @@ public class ExpressionBuilder {
     /**
      * Returns the expression for the out messages body
      */
+    @Deprecated
     public static Expression outBodyExpression() {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -887,6 +890,7 @@ public class ExpressionBuilder {
      * Returns the expression for the exchanges outbound message body converted
      * to the given type
      */
+    @Deprecated
     public static <T> Expression outBodyExpression(final Class<T> type) {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -985,6 +989,7 @@ public class ExpressionBuilder {
     /**
      * Returns the expression for the OUT message
      */
+    @Deprecated
     public static Expression outMessageExpression() {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
@@ -1001,6 +1006,7 @@ public class ExpressionBuilder {
     /**
      * Returns a functional expression for the OUT message
      */
+    @Deprecated
     public static Expression outMessageExpression(final Function<Message, 
Object> function) {
         return new ExpressionAdapter() {
             public Object evaluate(Exchange exchange) {
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiProducer.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiProducer.java
index ab520ae..093df1a 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiProducer.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/component/AbstractApiProducer.java
@@ -85,9 +85,7 @@ public abstract class AbstractApiProducer<E extends Enum<E> & 
ApiName, T>
                     Object result = doInvokeMethod(method, properties);
 
                     // producer returns a single response, even for methods 
with List return types
-                    exchange.getOut().setBody(result);
-                    // copy headers
-                    
exchange.getOut().setHeaders(exchange.getIn().getHeaders());
+                    exchange.getMessage().setBody(result);
 
                     interceptResult(result, exchange);
 
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
index b91dbc9..0952547 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultExchangeFormatter.java
@@ -57,8 +57,6 @@ public class DefaultExchangeFormatter implements 
ExchangeFormatter {
     private boolean showBody = true;
     @UriParam(label = "formatting", defaultValue = "true", description = "Show 
the body Java type.")
     private boolean showBodyType = true;
-    @UriParam(label = "formatting", description = "If the exchange has an out 
message, show the out message.")
-    private boolean showOut;
     @UriParam(label = "formatting", description = "If the exchange has an 
exception, show the exception message (no stacktrace)")
     private boolean showException;
     @UriParam(label = "formatting", description = "f the exchange has a caught 
exception, show the exception message (no stack trace)." 
@@ -169,39 +167,6 @@ public class DefaultExchangeFormatter implements 
ExchangeFormatter {
             }
         }
 
-        if (showAll || showOut) {
-            if (exchange.hasOut()) {
-                Message out = exchange.getOut();
-                if (showAll || showHeaders) {
-                    if (multiline) {
-                        sb.append(SEPARATOR);
-                    }
-                    
sb.append(style("OutHeaders")).append(sortMap(filterHeaderAndProperties(out.getHeaders())));
-                }
-                if (showAll || showBodyType) {
-                    if (multiline) {
-                        sb.append(SEPARATOR);
-                    }
-                    
sb.append(style("OutBodyType")).append(getBodyTypeAsString(out));
-                }
-                if (showAll || showBody) {
-                    if (multiline) {
-                        sb.append(SEPARATOR);
-                    }
-                    String body = getBodyAsString(out);
-                    if (skipBodyLineSeparator) {
-                        body = StringHelper.replaceAll(body, LS, "");
-                    }
-                    sb.append(style("OutBody")).append(body);
-                }
-            } else {
-                if (multiline) {
-                    sb.append(SEPARATOR);
-                }
-                sb.append(style("Out: null"));
-            }
-        }
-
         if (maxChars > 0) {
             StringBuilder answer = new StringBuilder();
             for (String s : sb.toString().split(SEPARATOR)) {
@@ -313,17 +278,6 @@ public class DefaultExchangeFormatter implements 
ExchangeFormatter {
         this.showBody = showBody;
     }
 
-    public boolean isShowOut() {
-        return showOut;
-    }
-
-    /**
-     * If the exchange has an out message, show the out message.
-     */
-    public void setShowOut(boolean showOut) {
-        this.showOut = showOut;
-    }
-
     public boolean isShowAll() {
         return showAll;
     }

Reply via email to