You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Bjørn Ole Myrold (Jira)" <ji...@apache.org> on 2022/03/23 11:10:00 UTC

[jira] [Created] (CAMEL-17844) camel-bean: @Handler annotation doesn't work with FunctionalInterfaces

Bjørn Ole Myrold created CAMEL-17844:
----------------------------------------

             Summary: camel-bean: @Handler annotation doesn't work with FunctionalInterfaces
                 Key: CAMEL-17844
                 URL: https://issues.apache.org/jira/browse/CAMEL-17844
             Project: Camel
          Issue Type: Bug
          Components: camel-bean
    Affects Versions: 3.4.1
            Reporter: Bjørn Ole Myrold


Version 3.4.1 introduced fixes in regards to how `BeanInfo` gets built, this seems to break beans which are `@FunctionalInterface`s.

I believe it was introduced with https://issues.apache.org/jira/browse/CAMEL-15278

The fix created in the above case only handles super classes, and does not look at interfaces. A lambda cast to a `FunctionalInterface` will only provide `Object` as super class, and `BeanInfo` will then not find any methods marked with `@Handler` in the interface.

 

This works in 3.4.0, but not in 3.4.1
{code:java}
public class TestRoute extends RouteBuilder {


    @Override public void configure() throws Exception {
        from("direct:testRoute").id("TestRoute")
            .setBody().method((Formatter) a -> String.format("%s %s", a.getName(), a.getOtherName()))
            .to("direct:testEndpoint");
    }

    @FunctionalInterface
    public interface Formatter {
        @Handler String test(@Body RandomPojo t);
    }
} {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)