camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kumaap <amitesh.a.ku...@gmail.com>
Subject Re: Route Definition Autostart and JMX issue
Date Wed, 28 Jul 2010 11:08:36 GMT

Ok more Explanation on how im adding routes to the camel context,

The camel Context is already started and im adding route definitions like
below.

RouteDefinition routeDefinition = (RouteDefinition)
unmarshaller.unmarshal(stringReader);
ArrayList arrayList = new ArrayList();
arrayList.add(routeDefinition);              
camelContext.addRouteDefinitions(arrayList);

I need to load the routes this way as each route is dynamically loaded from
xml route files getting submitted to our app.

Here is a unit test that fails that shows the Issue

package sandbox;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.*;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.Constants;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Assert;
import org.junit.Before;
import org.springframework.context.support.GenericApplicationContext;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.net.URL;
import java.util.ArrayList;

/**
 * Unit test for simple App.
 */
public class AppTest extends CamelTestSupport
{
    private ActiveMQConnectionFactory factory;
    private SpringCamelContext camelContext;
    @Before
    public void setUp() throws Exception
    {
        
        factory = new ActiveMQConnectionFactory("vm://local");
        super.setUp();
    }
    @EndpointInject(uri = "mock:result")
    protected MockEndpoint resultEndpoint;

    @Produce(uri = "jms:start")
    protected ProducerTemplate template;


    @org.junit.Test
    public void test() throws Exception
    {
        JAXBContext jaxbContext = null;
        Unmarshaller unmarshaller = null;
        RouteDefinition input = null;
        jaxbContext =
JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES);
        unmarshaller = jaxbContext.createUnmarshaller();
        input = (RouteDefinition) unmarshaller.unmarshal(new
URL("file:input.xml"));
        Assert.assertTrue(input != null);
        Assert.assertTrue(context.getStatus() == ServiceStatus.Started);
        ArrayList<RouteDefinition> routes = new ArrayList();
        routes.add(input);
        resultEndpoint.setExpectedMessageCount(0);
        camelContext.addRouteDefinitions(routes);
        template.sendBody("test");
        resultEndpoint.setSleepForEmptyTest(1000);        
        resultEndpoint.assertIsSatisfied();
    }


    @Override
    protected CamelContext createCamelContext() throws Exception
    {
        GenericApplicationContext applicationContext = new
GenericApplicationContext();
        camelContext = new SpringCamelContext(applicationContext);
        JmsComponent jmsComponent = new JmsComponent();
        jmsComponent.setConnectionFactory(factory);
       
applicationContext.getBeanFactory().registerSingleton("jms",jmsComponent);
        return camelContext;
    }

}


input.xml

<?xml version="1.0" encoding="UTF-8"?>
<route xmlns="http://camel.apache.org/schema/spring"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd"
       id="v_from_app1_app1" autoStartup="false" trace="true"  group="o1" >
    <from uri="jms:start"/>
    <to uri="mock:result"/>
</route>

pom dependencies 
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.7</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel</artifactId>
      <version>2.4.0</version>
    </dependency>
      <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.4.0</version>
    </dependency>
       <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-jms</artifactId>
      <version>2.4.0</version>
    </dependency>
       <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-test</artifactId>
      <version>2.4.0</version>
    </dependency>
     <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-spring</artifactId>
      <version>2.4.0</version>
    </dependency>
       <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-core</artifactId>
      <version>5.3.0</version>
    </dependency>
  </dependencies>


 



-- 
View this message in context: http://camel.465427.n5.nabble.com/Route-Definition-Autostart-and-JMX-issue-tp2255948p2256669.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message