Author: davsclaus
Date: Sat Mar 23 08:39:29 2013
New Revision: 1460119

URL: http://svn.apache.org/r1460119
Log:
Avro producer should initialize its resources in doStart

Modified:
    
camel/trunk/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java

Modified: 
camel/trunk/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java?rev=1460119&r1=1460118&r2=1460119&view=diff
==============================================================================
--- 
camel/trunk/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
 (original)
+++ 
camel/trunk/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroProducer.java
 Sat Mar 23 08:39:29 2013
@@ -41,23 +41,14 @@ public abstract class AvroProducer exten
     public boolean process(final Exchange exchange, final AsyncCallback 
callback) {
         Object request = exchange.getIn().getBody();
 
-        if (transceiver == null) {
-            try {
-                transceiver = createTransceiver();
-                requestor = new AvroRequestor(getEndpoint().getProtocol(), 
transceiver);
-            } catch (Exception e) {
-                exchange.setException(e);
-                callback.done(true);
-                return true;
-            }
-        }
-
         try {
             
requestor.request(exchange.getIn().getHeader(AvroConstants.AVRO_MESSAGE_NAME, 
String.class), wrapObjectToArray(request), new Callback<Object>() {
                 @Override
                 public void handleResult(Object result) {
                     // got result from avro, so set it on the exchange and 
invoke the callback
                     try {
+                        // propagate headers
+                        
exchange.getOut().setHeaders(exchange.getIn().getHeaders());
                         exchange.getOut().setBody(result);
                     } finally {
                         callback.done(false);
@@ -97,6 +88,8 @@ public abstract class AvroProducer exten
     @Override
     protected void doStart() throws Exception {
         super.doStart();
+        transceiver = createTransceiver();
+        requestor = new AvroRequestor(getEndpoint().getProtocol(), 
transceiver);
     }
 
     @Override
@@ -105,6 +98,7 @@ public abstract class AvroProducer exten
         if (transceiver != null) {
             transceiver.close();
         }
+        requestor = null;
     }
 
     @Override


Reply via email to