Hi,

I'd like to do some basic test for a route.
I have a REST service, configured as :

<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:cxf="http://camel.apache.org/schema/cxf";
       xmlns:jaxrs="http://cxf.apache.org/jaxrs";
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd
       http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
       http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd";>

    <cxf:rsServer id="restServer"
                  address="http://localhost:9000/service";
                  serviceClass="com.example.ServiceImpl"/>

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
        <route>
            <from
uri="cxfrs://bean:restServer?serviceClass=com.example.ServiceImpl"/>
            <log message="OK"/>
        </route>
    </camelContext>
</beans>

When I try this test 


public class RestComputationServiceTest extends CamelSpringTestSupport {

    @Override
    protected AbstractApplicationContext createApplicationContext() {
        return new
ClassPathXmlApplicationContext("/META-INF/spring/rest-webservice-application-context.xml");
    }

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("bean:restServer").to("mock:recipient");
            }
        };
    }

    @Test
    public void testRestInput() throws IOException, InterruptedException {
        Resource xmlFile = new
ClassPathResource("/xml/webservice-request-example.xml");
        InputStream stream = xmlFile.getInputStream();
        String body = IOUtils.toString(stream);
        template.sendBody("bean:restServer", body);

        MockEndpoint recipient = getMockEndpoint("mock:recipient");
        recipient.expectedMessageCount(1);
        recipient.assertIsSatisfied();
    }
}

I get this message :
[...] // No errors in here
Feb 25, 2011 2:09:48 PM org.apache.cxf.jaxrs.utils.ResourceUtils
getResourceStream
WARNING: No file resource <ns:request
xmlns:ns="http://ademe.fr/ademedb/schema/webservice/request/1.0";>
  <ns:id>3</ns:id>
  <ns:version>1.0-full</ns:version>
  <ns:parameters>
    <ns:parameter key="foo">
      <ns:integerValue>3</ns:integerValue>
    </ns:parameter>
  </ns:parameters>
</ns:request> is available on local disk
Feb 25, 2011 2:09:48 PM org.apache.camel.component.mock.MockEndpoint
assertIsSatisfied
INFO: Asserting: Endpoint[mock://recipient] is satisfied
Feb 25, 2011 2:09:49 PM org.apache.camel.processor.Logger log
SEVERE: Failed delivery for exchangeId: ID-mig-36230-1298639385923-0-3.
Exhausted after delivery attempt: 1 caught:
org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous
method invocations possible: [public void
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setResourceProvider(java.lang.Class,org.apache.cxf.jaxrs.lifecycle.ResourceProvider),
public void
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setModelBeansWithServiceClass(java.util.List,java.lang.Class[]),
public void
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setModelRefWithServiceClass(java.lang.String,java.lang.Class[])].
Exchange[Message: [Body is null]]
org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous
method invocations possible: [public void
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setResourceProvider(java.lang.Class,org.apache.cxf.jaxrs.lifecycle.ResourceProvider),
public void
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setModelBeansWithServiceClass(java.util.List,java.lang.Class[]),
public void
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean.setModelRefWithServiceClass(java.lang.String,java.lang.Class[])].
Exchange[Message: [Body is null]]
        at 
org.apache.camel.component.bean.BeanInfo.chooseMethod(BeanInfo.java:398)
        at
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:158)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:150)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:74)
        at
org.apache.camel.impl.ProcessorPollingConsumer.receive(ProcessorPollingConsumer.java:51)
        at
org.apache.camel.impl.ProcessorPollingConsumer.receiveNoWait(ProcessorPollingConsumer.java:59)
        at
org.apache.camel.impl.DefaultScheduledPollConsumer.poll(DefaultScheduledPollConsumer.java:48)
        at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Feb 25, 2011 2:09:49 PM org.apache.camel.processor.Logger log

I know what AmbiguousMethodCallException means, but I can't tell why it is
raised.
What am I doing wrong ?

Regards.
-- 
View this message in context: 
http://camel.465427.n5.nabble.com/CXF-component-testing-tp3400123p3400123.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to