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/ -- James ------- http://macstrac.blogspot.com/ Open Source Integration http://fusesource.com/