camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Johan Edstrom <>
Subject Re: Johan, it happens for all committers
Date Sat, 18 Dec 2010 16:23:27 GMT

None taken - here is the original use-case that once upon a time started out as 
modeled from the StartStop routes test, basically to dynamically and programatically 
invoke route from a BundleActivator from an osgi service.

The below code is from a loop where we wire up several "datasourcepollers"

  	    RouteDefinition route = new RouteDefinition();

            String staging = ds.getConfig().getStagingDirectory();
            String fileExtension = ds.getConfig().getInputDataFileExtension();

  "Starting a route from : " + ds.getConfig().getStagingDirectory());
  "Number of coverage offered is " + ds.getConfig().getOfferedCoverages().size());

            // The file polling camel route.
            route.from("datasource://" + staging + "?exclude=.*tmp&recursive=true&idempotent=true&initialDelay=5000&delay="
+ delayNextPoll
                + "&useFixedDelay=" + useFixedDelay + "&move=${in.header.FileDestination}"
+ "&idempotentStore=#idempotentRepository");

            TransformationMultiplexer mp = new TransformationMultiplexer();
            List destinations = Arrays.asList(transformerInformationService.getTransformers().values().toArray());

  "Coverage route from " + ds.getConfig().getStagingDirectory());


            FromDefinition from = route.getInputs().get(0);

		//DatasourcePollerEndpoint ep = (DatasourcePollerEndpoint) from.getEndpoint();

            DatasourcePollerEndpoint ep = (DatasourcePollerEndpoint) camelContext.getEndpoint(from.getUri());

This behavior was working up until Revision #954840 Committed by ningjiang 6/15/10 5:44 AM
CAMEL-2811 the routeContext should be independent on CamelContext,
I'm guessing since we "should" resolve it i.e keep the model context agnostic - perhaps we
should do away / Deperecate that call completely?
Since it is very easy to resolve, it just through me for a loop.


On Dec 17, 2010, at 11:44 PM, Claus Ibsen wrote:

> On Fri, Dec 17, 2010 at 7:20 PM, Johan Edstrom <> wrote:
>> Claus,
>> Yes, beer is on me.
>> The explanation makes sense but I'll ping you on usage of the model.
> Btw I wrote this mail in a good spirit, using a bit of scandinavian
> humor. Don't take this wrong - Its just for a smile.
>> I made the change after hunting an NPE when upgrading code from an
>> older Camel release.
> Ah nice maybe you can can provide more details and we can either add a
> note in a release note or get the NPE fixed it ifs a valid bug.
>> On Dec 17, 2010, at 11:15 AM, Claus Ibsen wrote:
>>> That you commit something which you shouldn't have done.
>>> Today it was Johan's Ed. first time he did that. Welcome to the club.
>>> I am the president, I must have committed the most bad commits to
>>> Camel :)
>>> Your little change in the route model (FromDefinition) really got me
>>> puzzled today.
>>> I have been working on a bigger improvement and have changed files in
>>> core, core-xml, spring. And suddenly I got unit test failures in
>>> camel-spring.
>>> I wondered why because the commits today have been simple and not in
>>> that area. And the CI servers have been busy with other projects and
>>> haven't got around testing the latest commits from trunk. So I
>>> couldn't see the test failures there.
>>> Anyway I digged into it, and almost had me wished I have switched to
>>> git, so I can do a stach. Yeah I will switch later. Writing a book
>>> took all my time.
>>> Then I remembered your commit. The problem is that the route model
>>> must be stateless and agnostic, eg not tied to a runtime CamelContext.
>>> You can use the route model to create runtime routes, and thus it can
>>> act as a skeleton.
>>> So in your change you introduced state as it remembered the endpoint
>>> you would lookup at runtime. But the problem is that you could have it
>>> lookup endpoints from CamelContext A and then use the route model to
>>> create a new runtime route in another camel context or whatever. Then
>>> that endpoint is no looked up in CamelContext B, but it will just use
>>> the existing it previous looked up from CamelContext A.
>>> For example using the routeContext in XML.
>>> You may consider buying a beer when we meet. My wife got a bit cranky
>>> because I was occupied digging into this issue,
>>> than talking with her when she came home from work.
>>> Anyway welcome to the club.
>>> I actually wrote this as a reminder to us all about the route model
>>> must be stateless. The mistake here could be done by any of us, so
>>> there are no hard feelings. Just that it took me for a little ride,
>>> which doesn't happend that often anymore with Camel. (Well except
>>> crappy and mysterious issues with osgi, but that's another story for
>>> all of us).
>>> --
>>> Claus Ibsen
>>> -----------------
>>> FuseSource
>>> Email:
>>> Web:
>>> Twitter: davsclaus
>>> Blog:
>>> Author of Camel in Action:
> -- 
> Claus Ibsen
> -----------------
> FuseSource
> Email:
> Web:
> Twitter: davsclaus
> Blog:
> Author of Camel in Action:

View raw message