Thx. I have added :
@Bean public MyBean myBean() { return new MyBean(); } to my public static class ContextConfig and it works. Charles Moulliard Senior Enterprise Architect Apache Camel Committer ***************************** blog : http://cmoulliard.blogspot.com On Thu, Jul 16, 2009 at 2:25 PM, James Strachan <james.strac...@gmail.com>wrote: > 2009/7/16 James Strachan <james.strac...@gmail.com>: > > 2009/7/16 Charles Moulliard <cmoulli...@gmail.com>: > >> Hi, > >> > >> The following test case created generates the error : > >> org.apache.camel.NoSuchBeanException caused by: No bean could be found > in > >> the registry for: myBean > >> > >> /** > >> * Licensed to the Apache Software Foundation (ASF) under one or more > >> * contributor license agreements. See the NOTICE file distributed with > >> * this work for additional information regarding copyright ownership. > >> * The ASF licenses this file to You under the Apache License, Version > 2.0 > >> * (the "License"); you may not use this file except in compliance with > >> * the License. You may obtain a copy of the License at > >> * > >> * http://www.apache.org/licenses/LICENSE-2.0 > >> * > >> * Unless required by applicable law or agreed to in writing, software > >> * distributed under the License is distributed on an "AS IS" BASIS, > >> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. > >> * See the License for the specific language governing permissions and > >> * limitations under the License. > >> */ > >> package org.apache.camel.component.bean; > >> > >> import javax.naming.Context; > >> > >> import org.apache.camel.CamelExecutionException; > >> import org.apache.camel.EndpointInject; > >> import org.apache.camel.Header; > >> import org.apache.camel.Produce; > >> import org.apache.camel.ProducerTemplate; > >> import org.apache.camel.builder.RouteBuilder; > >> import org.apache.camel.component.mock.MockEndpoint; > >> import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration; > >> import org.apache.camel.util.jndi.JndiContext; > >> import org.apache.commons.logging.Log; > >> import org.apache.commons.logging.LogFactory; > >> import org.junit.Test; > >> import org.springframework.config.java.annotation.Bean; > >> import org.springframework.config.java.annotation.Configuration; > >> import org.springframework.config.java.test.JavaConfigContextLoader; > >> import org.springframework.test.annotation.DirtiesContext; > >> import org.springframework.test.context.ContextConfiguration; > >> import > >> > org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; > >> import org.springframework.util.Assert; > >> > >> import static org.junit.Assert.*; > >> > >> @ContextConfiguration(locations = > >> > "org.apache.camel.component.bean.BeanWithExceptionTryCatchRouteTest$ContextConfig", > >> loader = JavaConfigContextLoader.class) > >> public class BeanWithExceptionTryCatchRouteTest extends > >> AbstractJUnit4SpringContextTests { > >> > >> private static final transient Log LOG = > >> LogFactory.getLog(BeanWithExceptionTryCatchRouteTest.class); > >> > >> @Produce(uri = "direct:start") > >> protected ProducerTemplate template; > >> > >> @EndpointInject(uri = "mock:result") > >> private MockEndpoint resultEndpoint; > >> > >> @EndpointInject(uri = "mock:exception") > >> private MockEndpoint exceptionEndpoint; > >> > >> @EndpointInject(uri = "mock:npe") > >> private MockEndpoint npeEndpoint; > >> > >> @DirtiesContext > >> @Test > >> public void testHeaderNull() throws Exception { > >> > >> try { > >> template.sendBodyAndHeader("Hello", "user", null); > >> fail("Should have thrown a NullPointerException"); > >> } catch (CamelExecutionException e) { > >> Assert.isInstanceOf(NullPointerException.class, e.getCause()); > >> } > >> npeEndpoint.assertIsSatisfied(); > >> } > >> > >> @DirtiesContext > >> @Test > >> public void testHeaderOtherException() throws Exception { > >> > >> try { > >> template.sendBodyAndHeader("Hello", "user", "boss"); > >> fail("Should have thrown an Exception"); > >> } catch (CamelExecutionException e) { > >> Assert.isInstanceOf(Exception.class, e.getCause()); > >> > >> } > >> exceptionEndpoint.assertIsSatisfied(); > >> } > >> > >> @DirtiesContext > >> @Test > >> public void testHeaderNotNull() throws Exception { > >> > >> template.sendBodyAndHeader("Hello", "user", "charles"); > >> resultEndpoint.expectedBodiesReceived("Hello charles"); > >> resultEndpoint.assertIsSatisfied(); > >> } > >> > >> protected Context createJndiContext() throws Exception { > >> JndiContext answer = new JndiContext(); > >> answer.bind("myBean", new MyBean()); > >> return answer; > >> } > >> > >> public static class MyBean { > >> > >> public String checkHeader(@Header(value = "user") String user) > >> throws Exception { > >> > >> if (user == null) { > >> throw new java.lang.NullPointerException("The user is > null > >> !"); > >> } > >> > >> if ( user.equals("boss") ) { > >> throw new java.lang.Exception("This is the boss. Not > allowed > >> to connect !"); > >> } > >> > >> return "Hello " + user; > >> } > >> > >> } > >> > >> @Configuration > >> public static class ContextConfig extends > SingleRouteCamelConfiguration > >> { > >> > >> @Override > >> @Bean > >> public RouteBuilder route() { > >> return new RouteBuilder() { > >> @Override > >> public void configure() { > >> from("direct:start"). > >> doTry(). > >> beanRef("myBean", "checkHeader"). > >> to("mock:result"). > >> doCatch(NullPointerException.class). > >> to("mock:npe"). > >> doCatch(Exception.class). > >> > >> to("log:org.apache.camel.BEAN_TEST?showAll=true&multiline=true"). > >> to("mock:exception"). > >> end(); > >> } > >> }; > >> } > >> > >> > >> } > >> } > >> > >> > >> How can we register the bean in a junit test using Spring javaconfig ? > > > > This is really a Spring javaconfig question; check out the Spring docs... > > > http://static.springsource.org/spring-javaconfig/docs/1.0.0.M4/reference/html/ > > in particular > > http://static.springsource.org/spring-javaconfig/docs/1.0.0.M4/reference/html/ch02s02.html#declaring-a-bean > > > -- > James > ------- > http://macstrac.blogspot.com/ > > Open Source Integration > http://fusesource.com/ >