Return-Path: Delivered-To: apmail-camel-dev-archive@www.apache.org Received: (qmail 38275 invoked from network); 20 Nov 2009 08:07:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 20 Nov 2009 08:07:49 -0000 Received: (qmail 32523 invoked by uid 500); 20 Nov 2009 08:07:49 -0000 Delivered-To: apmail-camel-dev-archive@camel.apache.org Received: (qmail 32463 invoked by uid 500); 20 Nov 2009 08:07:49 -0000 Mailing-List: contact dev-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list dev@camel.apache.org Received: (qmail 32453 invoked by uid 500); 20 Nov 2009 08:07:49 -0000 Delivered-To: apmail-activemq-camel-dev@activemq.apache.org Received: (qmail 32450 invoked by uid 99); 20 Nov 2009 08:07:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Nov 2009 08:07:49 +0000 X-ASF-Spam-Status: No, hits=-10.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Nov 2009 08:07:46 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 98B45234C045 for ; Fri, 20 Nov 2009 00:07:16 -0800 (PST) Message-ID: <1985696182.1258704436185.JavaMail.jira@brutus> Date: Fri, 20 Nov 2009 00:07:16 -0800 (PST) From: "Claus Ibsen (JIRA)" To: camel-dev@activemq.apache.org Subject: [jira] Updated: (CAMEL-2205) When the "from" endpoint is improperly set, it can be very hard to work out why/where In-Reply-To: <810145463.1258651792721.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: ae95407df07c98740808b2ef9da0087c [ https://issues.apache.org/activemq/browse/CAMEL-2205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Claus Ibsen updated CAMEL-2205: ------------------------------- Description: 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 addRoutes(CamelContext context, Collection 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 was: 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 addRoutes(CamelContext context, Collection 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 Fix Version/s: 2.1.0 Good idea Karl. Yeah lets have better error reporting. > 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 addRoutes(CamelContext context, Collection 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.