Closing the loop on this... the issue ended up being that when the Exchange got 
to the end of the route and went back to the 'from' (which was a cxfrs REST 
point) that piece complained about the ByteBuffer. In my case the solution 
ended up being adding another processor after the "end" to set up a Response 
for REST.

-Steve

> -----Original Message-----
> From: Steve Huston
> Sent: Thursday, April 28, 2016 7:04 PM
> To: '[email protected]' <[email protected]>
> Subject: Trouble sending a ByteBuffer to a mock
> 
> 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