Author: davsclaus Date: Mon Sep 7 08:49:28 2009 New Revision: 812040 URL: http://svn.apache.org/viewvc?rev=812040&view=rev Log: CAMEL-1991: Producers are now also managed. Fixed issue with using JMX agent in Spring DSL.
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java - copied, changed from r812001, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerTemplateProcessor.java camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.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/mbean/ManagedProducer.java camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java camel/trunk/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java camel/trunk/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Mon Sep 7 08:49:28 2009 @@ -112,7 +112,9 @@ * @param componentName the name of the component * @param factory used to create a new component instance if the component was not previously added. * @return the component + * @deprecated will be removed in Camel 2.2 */ + @Deprecated Component getOrCreateComponent(String componentName, Callable<Component> factory); // Endpoint Management Methods @@ -260,6 +262,7 @@ * @throws Exception is thrown if the route could not be started for whatever reason * @deprecated will be removed in Camel 2.2 */ + @Deprecated void startRoute(RouteDefinition route) throws Exception; /** @@ -278,6 +281,7 @@ * @throws Exception is thrown if the route could not be stopped for whatever reason * @deprecated will be removed in Camel 2.2 */ + @Deprecated void stopRoute(RouteDefinition route) throws Exception; /** @@ -304,6 +308,7 @@ * @return the status for the route * @deprecated will be removed in Camel 2.2 */ + @Deprecated ServiceStatus getRouteStatus(RouteDefinition route); // Properties 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=812040&r1=812039&r2=812040&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 Mon Sep 7 08:49:28 2009 @@ -1166,6 +1166,8 @@ public void setManagementStrategy(ManagementStrategy managementStrategy) { this.managementStrategy = managementStrategy; + // should be considered initialized as we use a custom strategy + managementStrategyInitialized.set(true); } public InterceptStrategy getDefaultTracer() { Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultProducerTemplate.java Mon Sep 7 08:49:28 2009 @@ -53,14 +53,14 @@ public DefaultProducerTemplate(CamelContext context) { this.context = context; - this.producerCache = new ProducerCache(context.getProducerServicePool()); + this.producerCache = new ProducerCache(context); this.executor = ExecutorServiceHelper.newScheduledThreadPool(DEFAULT_THREADPOOL_SIZE, "ProducerTemplate", true); } public DefaultProducerTemplate(CamelContext context, ExecutorService executor) { this.context = context; + this.producerCache = new ProducerCache(context); this.executor = executor; - this.producerCache = new ProducerCache(context.getProducerServicePool()); } public DefaultProducerTemplate(CamelContext context, Endpoint defaultEndpoint) { Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerCache.java Mon Sep 7 08:49:28 2009 @@ -18,6 +18,7 @@ import java.util.Map; +import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; @@ -27,12 +28,11 @@ import org.apache.camel.ProducerCallback; import org.apache.camel.ServicePoolAware; import org.apache.camel.spi.ServicePool; -import org.apache.camel.spi.Synchronization; import org.apache.camel.util.LRUCache; +import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; import org.apache.camel.util.ServiceHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; /** * Cache containing created {...@link Producer}. @@ -44,15 +44,20 @@ private final Map<String, Producer> producers; private final ServicePool<Endpoint, Producer> pool; + private final CamelContext context; // TODO: Have easy configuration of pooling in Camel - public ProducerCache(ServicePool<Endpoint, Producer> producerServicePool) { - this.pool = producerServicePool; - this.producers = new LRUCache<String, Producer>(1000); + public ProducerCache(CamelContext context) { + this(context, context.getProducerServicePool()); + } + + public ProducerCache(CamelContext context, ServicePool<Endpoint, Producer> producerServicePool) { + this(context, producerServicePool, new LRUCache<String, Producer>(1000)); } - public ProducerCache(ServicePool<Endpoint, Producer> producerServicePool, Map<String, Producer> cache) { + public ProducerCache(CamelContext context, ServicePool<Endpoint, Producer> producerServicePool, Map<String, Producer> cache) { + this.context = context; this.pool = producerServicePool; this.producers = cache; } @@ -185,7 +190,8 @@ // create a new producer try { answer = endpoint.createProducer(); - answer.start(); + // add it as service to camel context so it can be managed as well + context.addService(answer); } catch (Exception e) { throw new FailedToCreateProducerException(endpoint, e); } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerTemplateProcessor.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerTemplateProcessor.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerTemplateProcessor.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ProducerTemplateProcessor.java Mon Sep 7 08:49:28 2009 @@ -25,7 +25,9 @@ * A simple processor which just sends the message exchange to the default endpoint of the {...@link ProducerTemplate} * * @version $Revision$ + * @deprecated not used will be removed in Camel 2.2 */ +...@deprecated public class ProducerTemplateProcessor implements Processor { private final ProducerTemplate producerTemplate; Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementNamingStrategy.java Mon Sep 7 08:49:28 2009 @@ -26,10 +26,12 @@ import org.apache.camel.Consumer; import org.apache.camel.Endpoint; import org.apache.camel.Processor; +import org.apache.camel.Producer; import org.apache.camel.Route; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.spi.InterceptStrategy; import org.apache.camel.spi.ManagementNamingStrategy; +import org.apache.camel.util.ObjectHelper; /** * Naming strategy used when registering MBeans. @@ -43,6 +45,7 @@ public static final String TYPE_ENDPOINT = "endpoints"; public static final String TYPE_PROCESSOR = "processors"; public static final String TYPE_CONSUMER = "consumers"; + public static final String TYPE_PRODUCER = "producers"; public static final String TYPE_ROUTE = "routes"; public static final String TYPE_COMPONENT = "components"; public static final String TYPE_TRACER = "tracer"; @@ -116,12 +119,33 @@ buffer.append(domainName).append(":"); buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(","); buffer.append(KEY_TYPE + "=").append(TYPE_CONSUMER).append(","); + + String name = consumer.getClass().getSimpleName(); + if (ObjectHelper.isEmpty(name)) { + name = "Consumer"; + } buffer.append(KEY_NAME + "=") - .append(consumer.getClass().getSimpleName()) + .append(name) .append("(").append(getIdentityHashCode(consumer)).append(")"); return createObjectName(buffer); } + public ObjectName getObjectNameForProducer(CamelContext context, Producer producer) throws MalformedObjectNameException { + StringBuffer buffer = new StringBuffer(); + buffer.append(domainName).append(":"); + buffer.append(KEY_CONTEXT + "=").append(getContextId(context)).append(","); + buffer.append(KEY_TYPE + "=").append(TYPE_PRODUCER).append(","); + + String name = producer.getClass().getSimpleName(); + if (ObjectHelper.isEmpty(name)) { + name = "Producer"; + } + buffer.append(KEY_NAME + "=") + .append(name) + .append("(").append(getIdentityHashCode(producer)).append(")"); + return createObjectName(buffer); + } + public ObjectName getObjectNameForTracer(CamelContext context, InterceptStrategy tracer) throws MalformedObjectNameException { StringBuffer buffer = new StringBuffer(); buffer.append(domainName).append(":"); 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=812040&r1=812039&r2=812040&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 Mon Sep 7 08:49:28 2009 @@ -24,6 +24,7 @@ import org.apache.camel.management.mbean.ManagedConsumer; import org.apache.camel.management.mbean.ManagedEndpoint; import org.apache.camel.management.mbean.ManagedProcessor; +import org.apache.camel.management.mbean.ManagedProducer; import org.apache.camel.management.mbean.ManagedRoute; import org.apache.camel.management.mbean.ManagedTracer; import org.apache.camel.model.ProcessorDefinition; @@ -102,6 +103,11 @@ objectName = getManagementNamingStrategy().getObjectNameForConsumer(ms.getContext(), ms.getConsumer()); } + if (managedObject instanceof ManagedProducer) { + ManagedProducer ms = (ManagedProducer) managedObject; + objectName = getManagementNamingStrategy().getObjectNameForProducer(ms.getContext(), ms.getProducer()); + } + if (managedObject instanceof ManagedTracer) { ManagedTracer mt = (ManagedTracer) managedObject; objectName = getManagementNamingStrategy().getObjectNameForTracer(mt.getCamelContext(), mt.getTracer()); Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProducer.java Mon Sep 7 08:49:28 2009 @@ -18,7 +18,6 @@ import org.apache.camel.CamelContext; import org.apache.camel.Producer; -import org.apache.camel.Route; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedResource; @@ -40,7 +39,7 @@ } @ManagedAttribute(description = "Endpoint Uri") - public String getUri() { + public String getEndpointUri() { return producer.getEndpoint().getEndpointUri(); } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/AOPDefinition.java Mon Sep 7 08:49:28 2009 @@ -87,14 +87,14 @@ Processor finallyProcessor = null; if (beforeUri != null) { - pipe.add(new SendDefinition(beforeUri)); + pipe.add(new ToDefinition(beforeUri)); } pipe.addAll(getOutputs()); if (afterUri != null) { - pipe.add(new SendDefinition(afterUri)); + pipe.add(new ToDefinition(afterUri)); } else if (afterFinallyUri != null) { - finallyProcessor = new SendDefinition(afterFinallyUri).createProcessor(routeContext); + finallyProcessor = new ToDefinition(afterFinallyUri).createProcessor(routeContext); } Processor tryProcessor = createOutputsProcessor(routeContext, pipe); Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/SendDefinition.java Mon Sep 7 08:49:28 2009 @@ -36,9 +36,8 @@ * * @version $Revision$ */ -//@XmlType(name = "sendType") @XmlAccessorType(XmlAccessType.FIELD) -public class SendDefinition<Type extends ProcessorDefinition> extends ProcessorDefinition<Type> { +public abstract class SendDefinition<Type extends ProcessorDefinition> extends ProcessorDefinition<Type> { @XmlAttribute(required = false) protected String uri; @XmlAttribute(required = false) Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RecipientList.java Mon Sep 7 08:49:28 2009 @@ -81,7 +81,7 @@ protected ProducerCache getProducerCache(Exchange exchange) throws Exception { // setup producer cache as we need to use the pluggable service pool defined on camel context if (producerCache == null) { - this.producerCache = new ProducerCache(exchange.getContext().getProducerServicePool()); + this.producerCache = new ProducerCache(exchange.getContext()); this.producerCache.start(); } return this.producerCache; Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java Mon Sep 7 08:49:28 2009 @@ -89,7 +89,7 @@ protected ProducerCache getProducerCache(Exchange exchange) throws Exception { // setup producer cache as we need to use the pluggable service pool defined on camel context if (producerCache == null) { - this.producerCache = new ProducerCache(exchange.getContext().getProducerServicePool()); + this.producerCache = new ProducerCache(exchange.getContext()); this.producerCache.start(); } return this.producerCache; Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java Mon Sep 7 08:49:28 2009 @@ -92,10 +92,10 @@ protected ProducerCache getProducerCache(Exchange exchange) throws Exception { // setup producer cache as we need to use the pluggable service pool defined on camel context if (producerCache == null) { - this.producerCache = new ProducerCache(exchange.getContext().getProducerServicePool()); - this.producerCache.start(); + producerCache = new ProducerCache(exchange.getContext()); + producerCache.start(); } - return this.producerCache; + return producerCache; } public Endpoint getDestination() { @@ -114,14 +114,12 @@ } protected void doStart() throws Exception { - if (producerCache != null) { - producerCache.start(); - } } protected void doStop() throws Exception { if (producerCache != null) { producerCache.stop(); + producerCache = null; } } Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementNamingStrategy.java Mon Sep 7 08:49:28 2009 @@ -24,6 +24,7 @@ import org.apache.camel.Consumer; import org.apache.camel.Endpoint; import org.apache.camel.Processor; +import org.apache.camel.Producer; import org.apache.camel.Route; import org.apache.camel.model.ProcessorDefinition; @@ -46,6 +47,8 @@ ObjectName getObjectNameForConsumer(CamelContext context, Consumer consumer) throws MalformedObjectNameException; + ObjectName getObjectNameForProducer(CamelContext context, Producer producer) throws MalformedObjectNameException; + ObjectName getObjectNameForTracer(CamelContext context, InterceptStrategy tracer) throws MalformedObjectNameException; } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultProducerCacheTest.java Mon Sep 7 08:49:28 2009 @@ -26,7 +26,7 @@ public class DefaultProducerCacheTest extends ContextTestSupport { public void testCacheProducers() throws Exception { - ProducerCache cache = new ProducerCache(context.getProducerServicePool()); + ProducerCache cache = new ProducerCache(context); cache.start(); assertEquals("Size should be 0", 0, cache.size()); Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/JmxInstrumentationUsingDefaultsTest.java Mon Sep 7 08:49:28 2009 @@ -56,6 +56,8 @@ assertEquals(domainName, mbsc.getDefaultDomain()); } + template.sendBody("direct:start", "Hello World"); + resolveMandatoryEndpoint("mock:end", MockEndpoint.class); Set s = mbsc.queryNames(new ObjectName(domainName + ":type=endpoints,*"), null); @@ -67,6 +69,12 @@ s = mbsc.queryNames(new ObjectName(domainName + ":type=processors,*"), null); assertEquals("Could not find 2 processors: " + s, 2, s.size()); + s = mbsc.queryNames(new ObjectName(domainName + ":type=consumers,*"), null); + assertEquals("Could not find 1 consumers: " + s, 1, s.size()); + + s = mbsc.queryNames(new ObjectName(domainName + ":type=producers,*"), null); + assertEquals("Could not find 2 producers: " + s, 2, s.size()); + s = mbsc.queryNames(new ObjectName(domainName + ":type=routes,*"), null); assertEquals("Could not find 1 route: " + s, 1, s.size()); } Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java (from r812001, camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java) URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java&r1=812001&r2=812040&rev=812040&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterConsumerTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/management/ManagedUnregisterProducerTest.java Mon Sep 7 08:49:28 2009 @@ -22,13 +22,16 @@ import org.apache.camel.CamelContext; import org.apache.camel.ContextTestSupport; +import org.apache.camel.Endpoint; +import org.apache.camel.Exchange; +import org.apache.camel.Producer; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; /** * @version $Revision$ */ -public class ManagedUnregisterConsumerTest extends ContextTestSupport { +public class ManagedUnregisterProducerTest extends ContextTestSupport { protected CamelContext createCamelContext() throws Exception { CamelContext context = new DefaultCamelContext(); @@ -39,20 +42,33 @@ } @SuppressWarnings("unchecked") - public void testUnregisterConsumer() throws Exception { + public void testUnregisterProducer() throws Exception { + // send a message so the managed producer is started + // do this "manually" to avoid camel manageging the direct:start producer as well + // this makes the unit test easier as we only have 1 managed producer = mock:result + Endpoint endpoint = context.getEndpoint("direct:start"); + Producer producer = endpoint.createProducer(); + Exchange exchange = endpoint.createExchange(); + exchange.getIn().setBody("Hello World"); + + producer.start(); + producer.process(exchange); + producer.stop(); + MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer(); - Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=consumers,*"), null); + Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=producers,*"), null); assertEquals(1, set.size()); ObjectName on = set.iterator().next(); assertTrue("Should be registered", mbeanServer.isRegistered(on)); String uri = (String) mbeanServer.getAttribute(on, "EndpointUri"); - assertEquals("direct://start", uri); + assertEquals("mock://result", uri); - String routeId = (String) mbeanServer.getAttribute(on, "RouteId"); - assertEquals("route1", routeId); + // TODO: populating route id on producers is not implemented yet +// String routeId = (String) mbeanServer.getAttribute(on, "RouteId"); +// assertEquals("route1", routeId); context.stop(); @@ -69,4 +85,4 @@ }; } -} +} \ No newline at end of file Modified: camel/trunk/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java?rev=812040&r1=812039&r2=812040&view=diff ============================================================================== --- camel/trunk/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java (original) +++ camel/trunk/components/camel-xmpp/src/test/java/org/apache/camel/component/xmpp/XmppRouteTest.java Mon Sep 7 08:49:28 2009 @@ -52,7 +52,7 @@ protected CamelContext container = new DefaultCamelContext(); protected CountDownLatch latch = new CountDownLatch(1); protected Endpoint endpoint; - protected ProducerCache client = new ProducerCache(new DefaultProducerServicePool(10)); + protected ProducerCache client = new ProducerCache(container, new DefaultProducerServicePool(10)); public static void main(String[] args) { enabled = true;