camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <>
Subject [jira] [Commented] (CAMEL-9656) Using SpringBoot HealthEndpoint bean throws AmbiguousMethodCallException
Date Fri, 04 Mar 2016 14:16:40 GMT


Claus Ibsen commented on CAMEL-9656:

Can you build a sample project or somerthing and attach as a .zip or put on github etc. Then
we can use that to look into this.

> Using SpringBoot HealthEndpoint bean throws AmbiguousMethodCallException
> ------------------------------------------------------------------------
>                 Key: CAMEL-9656
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-spring-boot
>    Affects Versions: 2.16.2
>            Reporter: Colin Harms
>            Priority: Minor
> I'm trying to re-use the Springboot Actuator HealthEndpoint and InfoEndpoint beans and
exposing them via rest:
> {code}
> @Autowired
> HealthEndpoint healthEndpoint;
> ...
> //build the route
> from("rest:get:health").routeId("REST-healthcheck").bean(healthEndpoint, "invoke");
> {code}
> However when that gets invoked, it throws a AmbiguousMethodCallException and its other
candidate for "invoke()" is on the abstract class that HealthEndpoint is extending
> It looks like the issue is here:
> In this case HealthEndpoint extends AbstractHealthEndpoint, which is abstract, but invoke()
is declared on the Endpoint interface. So this logic: 
> {code} !isFromInterface && Modifier.isAbstract(info.getMethod().getModifiers())
> Will not evaluate to true, and the abstract method will remain a candidate.
> Here are the sources for the Endpoint/HealthEndpoint/AbstractEndpoint classes:
> It seems this is intentional, due to the "if the class is an interface then keep the
method" comment in BeanInfo.
> I'm curious as to why that is.

This message was sent by Atlassian JIRA

View raw message