camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Colin Harms (JIRA)" <>
Subject [jira] [Created] (CAMEL-9656) Using SpringBoot HealthEndpoint bean throws AmbiguousMethodCallException
Date Mon, 29 Feb 2016 16:27:18 GMT
Colin Harms created CAMEL-9656:

             Summary: Using SpringBoot HealthEndpoint bean throws AmbiguousMethodCallException
                 Key: CAMEL-9656
             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:
HealthEndpoint healthEndpoint;
//build the route
from("rest:get:health").routeId("REST-healthcheck").bean(healthEndpoint, "invoke");

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()) {code}
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