[ 
https://issues.apache.org/activemq/browse/CAMEL-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=55620#action_55620
 ] 

Claus Ibsen commented on CAMEL-2205:
------------------------------------

Here is a sample the the error message now

{code}
Failed to create route route2 at: To[mock:result?foo=bar] in route: 
Route[[From[direct://start]] -> [To[mock:result?foo=bar]]] because of ....
{code}

I wonder if we should highlight the *at* by doing
{code}
Failed to create route route2 at >>> To[mock:result?foo=bar] <<< in route: 
Route[[From[direct://start]] -> [To[mock:result?foo=bar]]] because of ....
{code}

> 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.defaultroutecont...@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.routedefinit...@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.defaultroutecont...@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.defaultroutecont...@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.

Reply via email to