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 2013/12/17 17:04:07 UTC

[2/2] git commit: CAMEL-7076: camel-spring should not enlist spring-event:default endpoint which is not used anyway.

CAMEL-7076: camel-spring should not enlist spring-event:default endpoint which is not used anyway.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2e35f212
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2e35f212
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2e35f212

Branch: refs/heads/camel-2.12.x
Commit: 2e35f212f0e1f42504b7d2e8b6215190d16c6452
Parents: 0ab99f9
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Dec 17 17:06:27 2013 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Dec 17 17:06:51 2013 +0100

----------------------------------------------------------------------
 .../camel/component/event/EventComponent.java   | 33 ++++++++++++++++++++
 .../camel/component/event/EventEndpoint.java    |  7 +++++
 .../apache/camel/spring/SpringCamelContext.java | 25 ++++++---------
 .../camel/component/event/EventRouteTest.java   |  3 +-
 ...CamelContextManagedAutoAssignedNameTest.java |  2 +-
 .../management/DualCamelContextManagedTest.java |  2 +-
 .../camel/component/event/camelContext.xml      |  2 +-
 .../camel/component/event/mistypedPackage.xml   |  2 +-
 8 files changed, 55 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/main/java/org/apache/camel/component/event/EventComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/component/event/EventComponent.java b/components/camel-spring/src/main/java/org/apache/camel/component/event/EventComponent.java
index 73218da..9296f64 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/component/event/EventComponent.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/component/event/EventComponent.java
@@ -16,12 +16,17 @@
  */
 package org.apache.camel.component.event;
 
+import java.util.LinkedHashSet;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.camel.impl.DefaultComponent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ApplicationEvent;
 import org.springframework.context.ConfigurableApplicationContext;
 
 /**
@@ -31,7 +36,9 @@ import org.springframework.context.ConfigurableApplicationContext;
  * @version 
  */
 public class EventComponent extends DefaultComponent implements ApplicationContextAware {
+    private static final Logger LOG = LoggerFactory.getLogger(EventComponent.class);
     private ApplicationContext applicationContext;
+    private final Set<EventEndpoint> endpoints = new LinkedHashSet<EventEndpoint>();
 
     public EventComponent() {
     }
@@ -59,6 +66,32 @@ public class EventComponent extends DefaultComponent implements ApplicationConte
 
     protected EventEndpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         EventEndpoint answer = new EventEndpoint(uri, this);
+        setProperties(answer, parameters);
         return answer;
     }
+
+    protected void consumerStarted(EventEndpoint endpoint) {
+        endpoints.add(endpoint);
+    }
+
+    protected void consumerStopped(EventEndpoint endpoint) {
+        endpoints.remove(endpoint);
+    }
+
+    public void onApplicationEvent(ApplicationEvent event) {
+        // broadcast to the endpoints in use
+        for (EventEndpoint endpoint : endpoints) {
+            try {
+                endpoint.onApplicationEvent(event);
+            } catch (Exception e) {
+                LOG.warn("Error on application event " + event + ". This exception will be ignored.", e);
+            }
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        endpoints.clear();
+        super.doStop();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java b/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
index 258135c..fceea03 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/component/event/EventEndpoint.java
@@ -107,13 +107,20 @@ public class EventEndpoint extends DefaultEndpoint implements ApplicationContext
         this.loadBalancer = loadBalancer;
     }
 
+    @Override
+    public EventComponent getComponent() {
+        return (EventComponent) super.getComponent();
+    }
+
     // Implementation methods
     // -------------------------------------------------------------------------
     public synchronized void consumerStarted(EventConsumer consumer) {
+        getComponent().consumerStarted(this);
         getLoadBalancer().addProcessor(consumer.getProcessor());
     }
 
     public synchronized void consumerStopped(EventConsumer consumer) {
+        getComponent().consumerStopped(this);
         getLoadBalancer().removeProcessor(consumer.getProcessor());
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
index 26317fd..cf97cc6 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
@@ -59,7 +59,7 @@ public class SpringCamelContext extends DefaultCamelContext implements Initializ
     private static final Logger LOG = LoggerFactory.getLogger(SpringCamelContext.class);
     private static final ThreadLocal<Boolean> NO_START = new ThreadLocal<Boolean>();
     private ApplicationContext applicationContext;
-    private EventEndpoint eventEndpoint;
+    private EventComponent eventComponent;
 
     public SpringCamelContext() {
     }
@@ -127,10 +127,8 @@ public class SpringCamelContext extends DefaultCamelContext implements Initializ
             }
         }
 
-        if (eventEndpoint != null) {
-            eventEndpoint.onApplicationEvent(event);
-        } else {
-            LOG.info("No spring-event endpoint enabled to handle event: {}", event);
+        if (eventComponent != null) {
+            eventComponent.onApplicationEvent(event);
         }
     }
 
@@ -158,31 +156,26 @@ public class SpringCamelContext extends DefaultCamelContext implements Initializ
         if (applicationContext instanceof ConfigurableApplicationContext) {
             // only add if not already added
             if (hasComponent("spring-event") == null) {
-                addComponent("spring-event", new EventComponent(applicationContext));
+                eventComponent = new EventComponent(applicationContext);
+                addComponent("spring-event", eventComponent);
             }
         }
     }
 
+    @Deprecated
     public EventEndpoint getEventEndpoint() {
-        return eventEndpoint;
+        return null;
     }
 
+    @Deprecated
     public void setEventEndpoint(EventEndpoint eventEndpoint) {
-        this.eventEndpoint = eventEndpoint;
+        // noop
     }
 
     // Implementation methods
     // -----------------------------------------------------------------------
 
     @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        if (eventEndpoint == null) {
-            eventEndpoint = createEventEndpoint();
-        }
-    }
-
-    @Override
     protected Injector createInjector() {
         if (applicationContext instanceof ConfigurableApplicationContext) {
             return new SpringInjector((ConfigurableApplicationContext)applicationContext);

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/test/java/org/apache/camel/component/event/EventRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/component/event/EventRouteTest.java b/components/camel-spring/src/test/java/org/apache/camel/component/event/EventRouteTest.java
index 9ff5158..421f307 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/component/event/EventRouteTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/component/event/EventRouteTest.java
@@ -27,8 +27,9 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
  * @version 
  */
 public class EventRouteTest extends SpringTestSupport {
+
     protected Object expectedBody = "Hello there!";
-    protected String uri = "spring-event:default";
+    protected String uri = "spring-event:foo";
 
     public void testSendingCamelExchangeToEndpointResultsInValidApplicationEventAfterTheRefreshEvent() throws Exception {
         MockEndpoint result = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedAutoAssignedNameTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedAutoAssignedNameTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedAutoAssignedNameTest.java
index 9e11f9c..4f10445 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedAutoAssignedNameTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedAutoAssignedNameTest.java
@@ -48,7 +48,7 @@ public class DualCamelContextManagedAutoAssignedNameTest extends DualCamelContex
         assertTrue("Route 2 is missing", on1.getCanonicalName().contains("route2") || on2.getCanonicalName().contains("route2"));
 
         set = mbeanServer.queryNames(new ObjectName("*:type=endpoints,*"), null);
-        assertTrue("Size should be 7 or higher, was: " + set.size(), set.size() >= 7);
+        assertTrue("Size should be 4 or higher, was: " + set.size(), set.size() >= 4);
 
         for (ObjectName on : set) {
             String name = on.getCanonicalName();

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java
index c4ffe0c..5912cb4 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java
@@ -60,7 +60,7 @@ public class DualCamelContextManagedTest extends SpringTestSupport {
         assertTrue("Route 2 is missing", on2.getCanonicalName().contains("route2"));
 
         set = mbeanServer.queryNames(new ObjectName("*:type=endpoints,*"), null);
-        assertTrue("Should be at least 7 endpoints, was: " + set.size(), set.size() >= 7);
+        assertTrue("Should be at least 4 endpoints, was: " + set.size(), set.size() >= 4);
 
         for (ObjectName on : set) {
             String name = on.getCanonicalName();

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/test/resources/org/apache/camel/component/event/camelContext.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/component/event/camelContext.xml b/components/camel-spring/src/test/resources/org/apache/camel/component/event/camelContext.xml
index d5fb8c0..27ddf75 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/component/event/camelContext.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/component/event/camelContext.xml
@@ -26,7 +26,7 @@
     <package>org.apache.camel.component.event</package>
 
     <route>
-      <from uri="spring-event:default"/>
+      <from uri="spring-event:foo"/>
       <to uri="mock:result"/>
     </route>
   </camelContext>

http://git-wip-us.apache.org/repos/asf/camel/blob/2e35f212/components/camel-spring/src/test/resources/org/apache/camel/component/event/mistypedPackage.xml
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/test/resources/org/apache/camel/component/event/mistypedPackage.xml b/components/camel-spring/src/test/resources/org/apache/camel/component/event/mistypedPackage.xml
index f1d32ef..79d4bdc 100644
--- a/components/camel-spring/src/test/resources/org/apache/camel/component/event/mistypedPackage.xml
+++ b/components/camel-spring/src/test/resources/org/apache/camel/component/event/mistypedPackage.xml
@@ -29,7 +29,7 @@
         </package>
 
         <route>
-            <from uri="spring-event:default"/>
+            <from uri="spring-event:foo"/>
             <to uri="mock:result"/>
         </route>
     </camelContext>