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/05/23 17:44:18 UTC

svn commit: r1341908 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/management/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-test-blueprint/s...

Author: davsclaus
Date: Wed May 23 15:44:18 2012
New Revision: 1341908

URL: http://svn.apache.org/viewvc?rev=1341908&view=rev
Log:
CAMEL-5299: Fixed camel-blueprint to not inject CamelContextAware as the context is not ready yet. Improved startup of management using event notifiers, to inject camel context if aware.

Added:
    camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/EventNotifierTest.java
      - copied, changed from r1341767, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java
    camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/eventNotifier.xml
      - copied, changed from r1341767, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/filterTest.xml
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=1341908&r1=1341907&r2=1341908&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Wed May 23 15:44:18 2012
@@ -1473,7 +1473,12 @@ public class DefaultCamelContext extends
         }
 
         // start management strategy before lifecycles are started
-        getManagementStrategy().start();
+        ManagementStrategy managementStrategy = getManagementStrategy();
+        // inject CamelContext if aware
+        if (managementStrategy instanceof CamelContextAware) {
+            ((CamelContextAware) managementStrategy).setCamelContext(this);
+        }
+        ServiceHelper.startService(managementStrategy);
 
         // start lifecycle strategies
         ServiceHelper.startServices(lifecycleStrategies);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java?rev=1341908&r1=1341907&r2=1341908&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementStrategy.java Wed May 23 15:44:18 2012
@@ -32,6 +32,7 @@ import org.apache.camel.spi.ManagementAg
 import org.apache.camel.spi.ManagementNamingStrategy;
 import org.apache.camel.spi.ManagementObjectStrategy;
 import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
 
 /**
@@ -58,6 +59,13 @@ public class DefaultManagementStrategy i
     private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.All;
     private CamelContext camelContext;
 
+    public DefaultManagementStrategy() {
+    }
+
+    public DefaultManagementStrategy(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
     public List<EventNotifier> getEventNotifiers() {
         return eventNotifiers;
     }
@@ -182,9 +190,21 @@ public class DefaultManagementStrategy i
     }
 
     public void start() throws Exception {
+        ObjectHelper.notNull(camelContext, "CamelContext");
+
         if (eventNotifiers != null) {
-            ServiceHelper.startServices(eventNotifiers);
+            for (EventNotifier notifier : eventNotifiers) {
+
+                // inject CamelContext if the service is aware
+                if (notifier instanceof CamelContextAware) {
+                    CamelContextAware aware = (CamelContextAware) notifier;
+                    aware.setCamelContext(camelContext);
+                }
+
+                ServiceHelper.startService(notifier);
+            }
         }
+
         if (managementAgent != null) {
             managementAgent.start();
             // set the naming strategy using the domain name from the agent

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java?rev=1341908&r1=1341907&r2=1341908&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagedManagementStrategy.java Wed May 23 15:44:18 2012
@@ -54,11 +54,13 @@ public class ManagedManagementStrategy e
     public ManagedManagementStrategy() {
     }
 
-    public ManagedManagementStrategy(CamelContext camelContext) {
-        this(new DefaultManagementAgent(camelContext));
+    @Deprecated
+    public ManagedManagementStrategy(ManagementAgent managementAgent) {
+        setManagementAgent(managementAgent);
     }
 
-    public ManagedManagementStrategy(ManagementAgent managementAgent) {
+    public ManagedManagementStrategy(CamelContext camelContext, ManagementAgent managementAgent) {
+        setCamelContext(camelContext);
         setManagementAgent(managementAgent);
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java?rev=1341908&r1=1341907&r2=1341908&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/ManagementStrategyFactory.java Wed May 23 15:44:18 2012
@@ -35,7 +35,7 @@ public class ManagementStrategyFactory {
             log.info("JMX is disabled.");
         } else {
             try {
-                answer = new ManagedManagementStrategy(new DefaultManagementAgent(context));
+                answer = new ManagedManagementStrategy(context, new DefaultManagementAgent(context));
                 // must start it to ensure JMX works and can load needed Spring JARs
                 ServiceHelper.startService(answer);
                 // prefer to have it at first strategy
@@ -48,7 +48,7 @@ public class ManagementStrategyFactory {
         }
 
         if (answer == null) {
-            answer = new DefaultManagementStrategy();
+            answer = new DefaultManagementStrategy(context);
         }
         return answer;
     }

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=1341908&r1=1341907&r2=1341908&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Wed May 23 15:44:18 2012
@@ -45,7 +45,6 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.aries.blueprint.mutable.MutableRefMetadata;
 import org.apache.aries.blueprint.mutable.MutableReferenceMetadata;
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.EndpointInject;
 import org.apache.camel.Produce;
 import org.apache.camel.blueprint.BlueprintCamelContext;
@@ -521,17 +520,9 @@ public class CamelNamespaceHandler imple
         public Object beforeInit(Object bean, String beanName, BeanCreator beanCreator, BeanMetadata beanMetadata) {
             injectFields(bean, beanName);
             injectMethods(bean, beanName);
-            if (bean instanceof CamelContextAware) {
-                ((CamelContextAware) bean).setCamelContext(getCamelContext());
-            }
             return bean;
         }
 
-        @Override
-        public CamelContext getCamelContext() {
-            return (CamelContext) blueprintContainer.getComponentInstance(camelContextName);
-        }
-
         /**
          * A strategy method to allow implementations to perform some custom JBI
          * based injection of the POJO
@@ -616,14 +607,14 @@ public class CamelNamespaceHandler imple
             }
         }
 
-        public Object afterInit(Object o, String s, BeanCreator beanCreator, BeanMetadata beanMetadata) {
-            return o;
+        public Object afterInit(Object bean, String beanName, BeanCreator beanCreator, BeanMetadata beanMetadata) {
+            return bean;
         }
 
-        public void beforeDestroy(Object o, String s) {
+        public void beforeDestroy(Object bean, String beanName) {
         }
 
-        public void afterDestroy(Object o, String s) {
+        public void afterDestroy(Object bean, String beanName) {
         }
 
     }

Copied: camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/EventNotifierTest.java (from r1341767, camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/EventNotifierTest.java?p2=camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/EventNotifierTest.java&p1=camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java&r1=1341767&r2=1341908&rev=1341908&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/FilterTest.java (original)
+++ camel/trunk/components/camel-test-blueprint/src/test/java/org/apache/camel/test/blueprint/EventNotifierTest.java Wed May 23 15:44:18 2012
@@ -16,48 +16,26 @@
  */
 package org.apache.camel.test.blueprint;
 
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Test;
 
 /**
- * Tests filtering using Camel Blueprint Test
- *
+ * Tests using custom event notifier
  */
-// START SNIPPET: example
-public class FilterTest extends CamelBlueprintTestSupport {
-
-    @EndpointInject(uri = "mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce(uri = "direct:start")
-    protected ProducerTemplate template;
+public class EventNotifierTest extends CamelBlueprintTestSupport {
 
     @Override
     protected String getBlueprintDescriptor() {
-        return "org/apache/camel/test/blueprint/filterTest.xml";
+        return "org/apache/camel/test/blueprint/eventNotifier.xml";
     }
 
     @Test
-    public void testSendMatchingMessage() throws Exception {
-        String expectedBody = "<matched/>";
+    public void testCustomEvent() throws Exception {
+        getMockEndpoint("mock:result").expectedMessageCount(1);
+        getMockEndpoint("mock:event").expectedMinimumMessageCount(8);
 
-        resultEndpoint.expectedBodiesReceived(expectedBody);
+        template.sendBody("direct:start", "Hello World");
 
-        template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
+        assertMockEndpointsSatisfied();
     }
 
-    @Test
-    public void testSendNotMatchingMessage() throws Exception {
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
-        resultEndpoint.assertIsSatisfied();
-    }
 }
-// END SNIPPET: example

Copied: camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/eventNotifier.xml (from r1341767, camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/filterTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/eventNotifier.xml?p2=camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/eventNotifier.xml&p1=camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/filterTest.xml&r1=1341767&r2=1341908&rev=1341908&view=diff
==============================================================================
--- camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/filterTest.xml (original)
+++ camel/trunk/components/camel-test-blueprint/src/test/resources/org/apache/camel/test/blueprint/eventNotifier.xml Wed May 23 15:44:18 2012
@@ -15,23 +15,21 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<!-- START SNIPPET: example -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="
              http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
 
-  <camelContext id="filterCamel" xmlns="http://camel.apache.org/schema/blueprint">
+  <bean class="org.apache.camel.management.PublishEventNotifier" id="eventNotifier">
+    <property name="endpointUri" value="mock:event"/>
+  </bean>
 
+  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
     <route>
       <from uri="direct:start"/>
-      <filter>
-        <simple>${header.foo} == 'bar'</simple>
-        <to uri="mock:result"/>
-      </filter>
+      <to uri="log:result"/>
+      <to uri="mock:result"/>
     </route>
-
   </camelContext>
 
 </blueprint>
-<!-- END SNIPPET: example -->