You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/07/04 21:54:00 UTC
[jira] [Commented] (CAMEL-11511) Camel bean binding issues
[ https://issues.apache.org/jira/browse/CAMEL-11511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16074088#comment-16074088 ]
ASF GitHub Bot commented on CAMEL-11511:
----------------------------------------
GitHub user aldettinger opened a pull request:
https://github.com/apache/camel/pull/1804
CAMEL-11511: Proposal to enhance the `BeanInfo` introspection in 2 cases
Proposal to enhance the `BeanInfo` introspection in 2 cases:
- A package private class implementing a 2 hop interface method
- A public class implementing an interface method by an override from a package private class
More info in [CAMEL-11511](https://issues.apache.org/jira/browse/CAMEL-11511).
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/aldettinger/camel master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/camel/pull/1804.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1804
----
commit 723a375e3a7f9c96659c30b5ae9504a4e1eabdbe
Author: aldettinger <al...@gmail.com>
Date: 2017-07-04T20:14:35Z
Corrected issues in BeanInfo introspection
commit 491f011f89dc7feccc282cfb5009956bbaf8d290
Author: aldettinger <al...@gmail.com>
Date: 2017-06-29T16:26:48Z
Implemented 2 tests showing issues in BeanInfo
----
> 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)