You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Alex Dettinger (JIRA)" <ji...@apache.org> on 2017/07/04 21:42:00 UTC
[jira] [Created] (CAMEL-11511) Camel bean binding issues
Alex Dettinger created CAMEL-11511:
--------------------------------------
Summary: Camel bean binding issues
Key: CAMEL-11511
URL: https://issues.apache.org/jira/browse/CAMEL-11511
Project: Camel
Issue Type: Bug
Reporter: Alex Dettinger
Priority: Minor
Tests below show 2 issues in the bean binding:
{code:java}
public class PrivatePackageClassBeanInfoTest extends CamelTestSupport {
@EndpointInject(uri = "mock:result")
protected MockEndpoint mockResult;
public static interface IA {
public String method();
}
public static interface IB extends IA {
public String method1();
}
class C implements IB {
@Override
public String method() {
return "C.method() has been called";
}
@Override
public String method1() {
return "C.method1() has been called";
}
}
public static interface IBC {
public String method();
}
class D {
public String method() {
return "D.method() has been called";
}
}
public class E extends D implements IBC {
}
@Test
public void getInterfaceMethodsMessUpWithMultipleLevelOfInterface() throws InterruptedException {
mockResult.expectedBodiesReceived("C.method() has been called");
template.sendBodyAndProperty("direct:test", "", "myObject", new C());
mockResult.assertIsSatisfied();
}
@Test
public void interfaceMethodImplementedByPackagePrivateUpperClassFails() throws InterruptedException {
System.out.println(Modifier.isPublic(E.class.getModifiers()));
mockResult.expectedBodiesReceived("D.method() has been called");
template.sendBodyAndProperty("direct:test", "", "myObject", new E());
mockResult.assertIsSatisfied();
}
@Override
public RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:test").setBody(simple("${exchangeProperty.myObject.method}")).to(mockResult);
}
};
}
}
{code}
Below messages are logged:
{noformat}
logged:org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke method: method on null due to: org.apache.camel.RuntimeExchangeException: IllegalAccessException occurred invoking method: public java.lang.String PrivatePackageClassBeanInfoTest$D.method() using arguments: [] on the exchange: Exchange[]
{noformat}
{noformat}
org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke method: method on null due to: org.apache.camel.RuntimeExchangeException: IllegalAccessException occurred invoking method: public java.lang.String PrivatePackageClassBeanInfoTest$C.method() using arguments: [] on the exchange: Exchange[]
{noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)