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 -->