Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.17.2
-
None
-
Unknown
Description
The following code does not work:
public interface Transformer<T> { public Object convert(T input) throws Exception; } public class MyTransformer implements Transformer<InputStream> { @Override public Object convert(@Body InputStream body) {...} } from("direct:foo") .transform().method(new MyTransformer(), "convert") .log("${body}");
Stack trace:
java.lang.ClassCastException: [B cannot be cast to java.io.InputStream at net.haulogy.erpgis.esb.transformers.MyTransformer.convert(MyTransformer.java:1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408) at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:177) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:68) at org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:211) at org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:126) at org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:138) at org.apache.camel.processor.TransformProcessor.process(TransformProcessor.java:50)
But this is working fine:
public class MyTransformer { public Object convert(@Body InputStream body) {...} } from("direct:foo") .transform().method(new MyTransformer(), "convert") .log("${body}");