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 2009/11/20 11:50:54 UTC
[jira] Resolved: (CAMEL-2205) When the "from" endpoint is
improperly set, it can be very hard to work out why/where
[ https://issues.apache.org/activemq/browse/CAMEL-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-2205.
--------------------------------
Resolution: Fixed
trunk: 882492.
> When the "from" endpoint is improperly set, it can be very hard to work out why/where
> -------------------------------------------------------------------------------------
>
> Key: CAMEL-2205
> URL: https://issues.apache.org/activemq/browse/CAMEL-2205
> Project: Apache Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: 2.0.0
> Reporter: Karl Palsson
> Assignee: Claus Ibsen
> Fix For: 2.1.0
>
>
> I have static routes configured using the java DSL, but use bean properties on my route builder to provide custom endpoints for different environments, like so...
> {code}
> from(sourceUriProperty)
> .to("bean:fileParser")
> .beanRef("conanCore", "updateOperationFailure")
> ;
> {code}
> If you forget to set the from URI property, the exception you get at application startup just says: "java.lang.IllegalArgumentException: Either 'uri' or 'ref' must be specified on: org.apache.camel.impl.DefaultRouteContext@d6a3d1" (Full stack trace below..... but probably not really important... note that it never once mentions any of my own classes)
> It would be nice if throw could be somewhere like in:
> {code:title=RouteDefinition.java}
>
> public List<RouteContext> addRoutes(CamelContext context, Collection<Route> routes) throws Exception {
> // other parts snipped...
> for (FromDefinition fromType : inputs) {
> // Throwing here would be nice, fromType.description already has "no uri or ref!" so it already knows it's broken.
> RouteContext routeContext = addRoutes(routes, fromType);
> answer.add(routeContext);
> }
> }
> {code}
> The RouteDefinition at that stage already contains things like:
> {{this = {org.apache.camel.model.RouteDefinition@5751}"Route[[From[no uri or ref supplied!]] -> [To[bean:fileParser], Bean[ref:conanCore method: updateOperationFailure]]]"}}
> So if we can explode there, you can clearly see what route you've screwed up.
> Caused by: org.apache.camel.RuntimeCamelException: java.lang.IllegalArgumentException: Either 'uri' or 'ref' must be specified on: org.apache.camel.impl.DefaultRouteContext@d6a3d1
> at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1011)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:121)
> at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:469)
> at org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
> at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
> at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
> at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
> at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
> at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
> at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
> at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42)
> at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173)
> at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:197)
> ... 18 more
> Caused by: java.lang.IllegalArgumentException: Either 'uri' or 'ref' must be specified on: org.apache.camel.impl.DefaultRouteContext@d6a3d1
> at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:117)
> at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
> at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:74)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:432)
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:126)
> at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:569)
> at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:924)
> at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:901)
> at org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
> at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
> at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:816)
> at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:99)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:119)
> ... 29 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.