You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Karl Palsson (JIRA)" <ji...@apache.org> on 2010/05/17 14:33:51 UTC
[jira] Created: (CAMEL-2726) recipientlist class cannot be inner
class -- recipientList().method(Inner.class, "chooseMethod");
recipientlist class cannot be inner class -- recipientList().method(Inner.class, "chooseMethod");
-------------------------------------------------------------------------------------------------
Key: CAMEL-2726
URL: https://issues.apache.org/activemq/browse/CAMEL-2726
Project: Apache Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.2.0, 2.1.0
Reporter: Karl Palsson
If I try and use a recipient list, like so...
configure() {
...
from(blah).recipientList().method(Inner.class, "choose");
...
}
public class Inner {
public String choose(@Header(MYHEADER) String cpid, String body) {
if (StringUtils.equals(cpid, SOME_VALUE)) {
return optionA;
} else {
return optionB;
}
}
}
I get an error at context boot:
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> RecipientList[] <<< in route: Route[[From[direct://openSubscription]] -> [SetHeader[CamelF... because of java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:693)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:140)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:610)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1180)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1090)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1020)
at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:158)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:898)
at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:197)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
... 46 more
Caused by: org.apache.camel.RuntimeCamelException: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:976)
at org.apache.camel.model.language.MethodCallExpression.createExpression(MethodCallExpression.java:102)
at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:167)
at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:161)
at org.apache.camel.model.RecipientListDefinition.createProcessor(RecipientListDefinition.java:84)
at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:325)
at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:137)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:690)
... 56 more
Caused by: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:974)
... 63 more
However, the same "Inner" class works perfectly well when it is a "full" class.
Noticed on 2.1, verified still happens on 2.2.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (CAMEL-2726) recipientlist class cannot be inner
class -- recipientList().method(Inner.class, "chooseMethod");
Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/activemq/browse/CAMEL-2726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=59407#action_59407 ]
Claus Ibsen commented on CAMEL-2726:
------------------------------------
The JDK cannot instantiate your class. Its not a Camel problem.
You need to define your inner class as static so you can create instances of it from outside its parent class.
{code}
public static class Inner {
public String choose(@Header(MYHEADER) String cpid, String body) {
if (StringUtils.equals(cpid, SOME_VALUE)) { return optionA; } else { return optionB; }
}
}
{code}
> recipientlist class cannot be inner class -- recipientList().method(Inner.class, "chooseMethod");
> -------------------------------------------------------------------------------------------------
>
> Key: CAMEL-2726
> URL: https://issues.apache.org/activemq/browse/CAMEL-2726
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.1.0, 2.2.0
> Reporter: Karl Palsson
>
> If I try and use a recipient list, like so...
> configure() {
> ...
> from(blah).recipientList().method(Inner.class, "choose");
> ...
> }
> public class Inner {
> public String choose(@Header(MYHEADER) String cpid, String body) {
> if (StringUtils.equals(cpid, SOME_VALUE)) {
> return optionA;
> } else {
> return optionB;
> }
> }
> }
> I get an error at context boot:
> Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> RecipientList[] <<< in route: Route[[From[direct://openSubscription]] -> [SetHeader[CamelF... because of java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:693)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:140)
> at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:610)
> at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1180)
> at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1090)
> at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1020)
> at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:158)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
> at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:898)
> at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:197)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
> ... 46 more
> Caused by: org.apache.camel.RuntimeCamelException: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:976)
> at org.apache.camel.model.language.MethodCallExpression.createExpression(MethodCallExpression.java:102)
> at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:167)
> at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:161)
> at org.apache.camel.model.RecipientListDefinition.createProcessor(RecipientListDefinition.java:84)
> at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:325)
> at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:137)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:690)
> ... 56 more
> Caused by: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at java.lang.Class.newInstance0(Class.java:340)
> at java.lang.Class.newInstance(Class.java:308)
> at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:974)
> ... 63 more
> However, the same "Inner" class works perfectly well when it is a "full" class.
> Noticed on 2.1, verified still happens on 2.2.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (CAMEL-2726) recipientlist class cannot be inner
class -- recipientList().method(Inner.class, "chooseMethod");
Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/activemq/browse/CAMEL-2726?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-2726.
--------------------------------
Resolution: Working as Designed
> recipientlist class cannot be inner class -- recipientList().method(Inner.class, "chooseMethod");
> -------------------------------------------------------------------------------------------------
>
> Key: CAMEL-2726
> URL: https://issues.apache.org/activemq/browse/CAMEL-2726
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.1.0, 2.2.0
> Reporter: Karl Palsson
>
> If I try and use a recipient list, like so...
> configure() {
> ...
> from(blah).recipientList().method(Inner.class, "choose");
> ...
> }
> public class Inner {
> public String choose(@Header(MYHEADER) String cpid, String body) {
> if (StringUtils.equals(cpid, SOME_VALUE)) {
> return optionA;
> } else {
> return optionB;
> }
> }
> }
> I get an error at context boot:
> Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> RecipientList[] <<< in route: Route[[From[direct://openSubscription]] -> [SetHeader[CamelF... because of java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:693)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:140)
> at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:610)
> at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1180)
> at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1090)
> at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1020)
> at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:158)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:53)
> at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:898)
> at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:197)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
> ... 46 more
> Caused by: org.apache.camel.RuntimeCamelException: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:976)
> at org.apache.camel.model.language.MethodCallExpression.createExpression(MethodCallExpression.java:102)
> at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:167)
> at org.apache.camel.model.language.ExpressionDefinition.createExpression(ExpressionDefinition.java:161)
> at org.apache.camel.model.RecipientListDefinition.createProcessor(RecipientListDefinition.java:84)
> at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:325)
> at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:137)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:690)
> ... 56 more
> Caused by: java.lang.InstantiationException: is.vf.conan.ConanRouter$Inner
> at java.lang.Class.newInstance0(Class.java:340)
> at java.lang.Class.newInstance(Class.java:308)
> at org.apache.camel.util.ObjectHelper.newInstance(ObjectHelper.java:974)
> ... 63 more
> However, the same "Inner" class works perfectly well when it is a "full" class.
> Noticed on 2.1, verified still happens on 2.2.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.