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 <[email protected]>wrote:
> 2009/7/16 James Strachan <[email protected]>:
> > 2009/7/16 Charles Moulliard <[email protected]>:
> >> 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/
>