You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/06/19 06:35:14 UTC

svn commit: r1351568 - in /camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus: CamelEventHandler.java GuavaEventBusConsumer.java

Author: davsclaus
Date: Tue Jun 19 04:35:14 2012
New Revision: 1351568

URL: http://svn.apache.org/viewvc?rev=1351568&view=rev
Log:
CAMEL-5341: Supports the async routing engine.

Modified:
    camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/CamelEventHandler.java
    camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusConsumer.java

Modified: camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/CamelEventHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/CamelEventHandler.java?rev=1351568&r1=1351567&r2=1351568&view=diff
==============================================================================
--- camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/CamelEventHandler.java (original)
+++ camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/CamelEventHandler.java Tue Jun 19 04:35:14 2012
@@ -17,7 +17,11 @@
 package org.apache.camel.component.guava.eventbus;
 
 import com.google.common.eventbus.Subscribe;
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.util.AsyncProcessorConverterHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,15 +34,15 @@ public class CamelEventHandler {
 
     private static final transient Logger LOG = LoggerFactory.getLogger(CamelEventHandler.class);
     private final GuavaEventBusEndpoint eventBusEndpoint;
-    private final Processor consumerProcessor;
+    private final AsyncProcessor processor;
     private final Class<?> eventClass;
 
-    public CamelEventHandler(GuavaEventBusEndpoint eventBusEndpoint, Processor consumerProcessor, Class<?> eventClass) {
+    public CamelEventHandler(GuavaEventBusEndpoint eventBusEndpoint, Processor processor, Class<?> eventClass) {
         ObjectHelper.notNull(eventBusEndpoint, "eventBusEndpoint");
-        ObjectHelper.notNull(consumerProcessor, "consumerProcessor");
+        ObjectHelper.notNull(processor, "processor");
 
         this.eventBusEndpoint = eventBusEndpoint;
-        this.consumerProcessor = consumerProcessor;
+        this.processor = AsyncProcessorConverterHelper.convert(processor);
         this.eventClass = eventClass;
     }
 
@@ -51,8 +55,15 @@ public class CamelEventHandler {
     public void eventReceived(Object event) throws Exception {
         LOG.trace("Received event: {}");
         if (eventClass == null || eventClass.isAssignableFrom(event.getClass())) {
+            final Exchange exchange = eventBusEndpoint.createExchange(event);
             LOG.debug("Processing event: {}", event);
-            consumerProcessor.process(eventBusEndpoint.createExchange(event));
+            // use async processor to support async routing engine
+            processor.process(exchange, new AsyncCallback() {
+                @Override
+                public void done(boolean doneSync) {
+                    // noop
+                }
+            });
         } else {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Cannot process event: {} as its class type: {} is not assignable with: {}",

Modified: camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusConsumer.java?rev=1351568&r1=1351567&r2=1351568&view=diff
==============================================================================
--- camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusConsumer.java (original)
+++ camel/trunk/components/camel-guava-eventbus/src/main/java/org/apache/camel/component/guava/eventbus/GuavaEventBusConsumer.java Tue Jun 19 04:35:14 2012
@@ -17,7 +17,6 @@
 package org.apache.camel.component.guava.eventbus;
 
 import com.google.common.eventbus.EventBus;
-import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
 
@@ -26,10 +25,10 @@ public class GuavaEventBusConsumer exten
     private final EventBus eventBus;
     private final CamelEventHandler eventHandler;
 
-    public GuavaEventBusConsumer(Endpoint endpoint, Processor processor, EventBus eventBus, Class<?> eventClass) {
+    public GuavaEventBusConsumer(GuavaEventBusEndpoint endpoint, Processor processor, EventBus eventBus, Class<?> eventClass) {
         super(endpoint, processor);
         this.eventBus = eventBus;
-        this.eventHandler = new CamelEventHandler((GuavaEventBusEndpoint)endpoint, processor, eventClass);
+        this.eventHandler = new CamelEventHandler(endpoint, processor, eventClass);
     }
 
     @Override