You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Anton Sulim (JIRA)" <ji...@apache.org> on 2017/04/20 13:36:04 UTC
[jira] [Updated] (CAMEL-11178) Default method is invisible during
Camel Simple evaluation
[ https://issues.apache.org/jira/browse/CAMEL-11178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anton Sulim updated CAMEL-11178:
--------------------------------
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.
{code:java}
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").log("Result of default method invocation is ${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());
}
}
{code}
Stacktrace:
{code}
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)
{code}
was:
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.
{code:java}
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").log("Result of default method invocation is ${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());
}
}
{code}
> Default method is invisible during Camel Simple evaluation
> ----------------------------------------------------------
>
> Key: CAMEL-11178
> URL: https://issues.apache.org/jira/browse/CAMEL-11178
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.16.1
> Reporter: Anton Sulim
>
> 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.
> {code:java}
> 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").log("Result of default method invocation is ${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());
> }
> }
> {code}
> Stacktrace:
> {code}
> 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)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)