I am using Camel 2.16.3. I have a route like so:

       from("direct:sendPing").routeId("rms-send-ping")
        .process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                AssetPing p = new AssetPing(in.getHeader("emp", String.class), 
in.getHeader("id", int.class));
                exchange.getIn().setBody(p);
           }
        })
        .convertBodyTo(IsmpAssetPingMessage.class)
        .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                        IsmpAssetPingMessage emp = 
exchange.getIn().getBody(IsmpAssetPingMessage.class);
                        emp.setSrcAddress(mrEmpAddress);
                }
        })
        .convertBodyTo(ByteBuffer.class)
        .removeHeaders("*")
        .to(toRoma).id("sendToRoma");

In a unit test, I adviceWIth it to replace that last "to", as:

        context.getRouteDefinition("rms-send-ping").adviceWith(context, new 
AdviceWithRouteBuilder() {
                @Override
                public void configure() throws Exception {
                    weaveById("sendToRoma")
                        .replace()
                    .to("log:unit")
                        .to("mock:pingCheck");
                }

The intention being to extract the message from the mocked end point and run 
some checks on it.
When the test runs, I see the output from the woven in "log:unit" then I have 
an error:

2016-04-28 18:42:33 ERROR JAXRSUtils:1788 - No message body writer has been 
found for class java.nio.HeapByteBuffer, ContentType: text/plain

Is mock only allowed to have text message bodies written to it?

My searching for info related to that error has turned up only issues related 
to CXF and REST and problems marshalling to XML/JSON. 

Thanks,
-Steve Huston

Reply via email to