You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2008/06/06 13:48:00 UTC
[jira] Commented: (CAMEL-584)
BeanWithPropertiesAndHeadersAndBodyInjectionTest causes
java.lang.StackOverflowError
[ https://issues.apache.org/activemq/browse/CAMEL-584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43296#action_43296 ]
Claus Ibsen commented on CAMEL-584:
-----------------------------------
The bug is in BeanProcessor that adds the bean itself as a propery the the exchange
{code}
public void process(Exchange exchange) throws Exception {
if (LOG.isDebugEnabled()) {
LOG.debug(">>>> invoking method for: " + exchange);
}
Object bean = beanHolder.getBean();
exchange.setProperty("CamelBean", bean);
{code}
And then when you do a toString() as the unit test does with the properties:
{code}
public String toString() {
return "MyBean[foo: " + foo + " bar: " + bar + " body: " + body + "]";
}
{code}
And the properties is the foo argument, then you get circular dependency.
Why do Camel set the bean itself as a property? Is this used by end-users at all?
"CamelBean" is not used anywhere else in the java code, so I do think its safe to delete the codeline but then end-users that this property existed isn't there anymore.
We could remedy this by setting the BeanHolder instead of the bean directly.
> BeanWithPropertiesAndHeadersAndBodyInjectionTest causes java.lang.StackOverflowError
> ------------------------------------------------------------------------------------
>
> Key: CAMEL-584
> URL: https://issues.apache.org/activemq/browse/CAMEL-584
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 1.4.0
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
>
> This unit test cases infinitive loop
> {code}
> Caused by: java.lang.StackOverflowError
> at java.util.HashMap$HashIterator.<init>(HashMap.java:822)
> at java.util.HashMap$EntryIterator.<init>(HashMap.java:881)
> at java.util.HashMap$EntryIterator.<init>(HashMap.java:881)
> at java.util.HashMap.newEntryIterator(HashMap.java:895)
> at java.util.HashMap$EntrySet.iterator(HashMap.java:988)
> at java.util.AbstractMap.toString(AbstractMap.java:584)
> at java.lang.String.valueOf(String.java:2615)
> at java.lang.StringBuilder.append(StringBuilder.java:116)
> at org.apache.camel.component.bean.BeanWithPropertiesAndHeadersAndBodyInjectionTest$MyBean.toString(BeanWithPropertiesAndHeadersAndBodyInjectionTest.java:91)
> at java.lang.String.valueOf(String.java:2615)
> at java.lang.StringBuffer.append(StringBuffer.java:220)
> at java.util.AbstractMap.toString(AbstractMap.java:598)
> at java.lang.String.valueOf(String.java:2615)
> at java.lang.StringBuilder.append(StringBuilder.java:116)
> at org.apache.camel.component.bean.BeanWithPropertiesAndHeadersAndBodyInjectionTest$MyBean.toString(BeanWithPropertiesAndHeadersAndBodyInjectionTest.java:91)
> at java.lang.String.valueOf(String.java:2615)
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.