Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-10236

BeanProccessor - method invocation with generics+annotations

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 2.17.2
    • 2.18.1, 2.19.0
    • camel-core
    • 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}");
      

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            bligny Bernard Ligny
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: