Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.16.1
-
None
Description
Issue can be reproduced with below unit test, I have not found it in tracker.
Essence: interface A has default method, interface B extends A, default method is invisible during Simple language evaluation.
import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; import org.junit.Assert; import org.junit.Test; public class DefaultMethodIsInvisibleTest { public static interface A { public default String defaultMethod() { return "default method result"; } } public static interface B extends A { } @Test public void camelSimpleDoesNotSeeDefaultMethod() throws Exception { CamelContext context = new DefaultCamelContext(); context.addRoutes(new RouteBuilder() { public void configure() { from("direct:camelSimpleDoesNotSeeDefaultMethod").script().simple("${exchangeProperty.myObject.defaultMethod}"); } }); context.start(); Exchange incomingExchange = new DefaultExchange(context); incomingExchange.setProperty("myObject", new B() { }); Exchange result = context.createProducerTemplate().send("direct:camelSimpleDoesNotSeeDefaultMethod", incomingExchange); Assert.assertNull(result.getException()); } }
Stacktrace:
Caused by: org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke method: defaultMethod on null due to: org.apache.camel.component.bean.MethodNotFoundException: Method with name: defaultMethod not found on bean: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2@5dafbe45 of type: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2. Exchange[][Message: [Body is null]] at org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:290) at org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114) ... 46 common frames omitted Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method with name: defaultMethod not found on bean: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2@5dafbe45 of type: com.ubs.wma.gfi.tradersbook.subscriber.DefaultMethodIsInvisibleTest$2. Exchange[][Message: [Body is null]] at org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:269) at org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:183) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159)
Attachments
Issue Links
- links to