To be a little more concrete, according to the documentation you linked to, the following route should log "def" every second:
from("timer:foo") .setProperty("foo").constant("abcdef") .setBody().ognl("property('foo').substring(3)") .log("${body}"); Instead it throws an exception every: [java.lang.NoSuchMethodException: org.apache.camel.language.ognl.RootObject.property(java.lang.String)] If I change property('foo') to properties['foo'] or to getProperty('foo') then it works None of the camel-ognl unit tests cover this use case. On Fri, Sep 20, 2013 at 8:24 AM, Dale King <dalewk...@gmail.com> wrote: > The last 2 rows of the variables table shows ways that are supposed to get > properties by name, but I tried to use it and it throws an exception. The > RootObject passed to OGNL has getProperty methods, but OGNL will not match > up property(...) to getProperty() method. OGNL 4 can match property[name] > to getProperty, but that is not released yet and is square brackets instead > of parens. > > You could make property(...) methods but that would only work for reading > the property, not setting the property. > > As it stands now the syntax that works is: > > properties -- Gets map of all properties > properties[name] -- specific property, can be used to get or set > getProperty(name) -- Get specific property > getProperty(name, type) -- Get specific property as type > > I just realized that RootObject is missing any setter methods, e.g. > setProperty. The only way to set a property from within OGNL is using: > > properties['name'[ = value > > But then again you have the DSL support for setting properties. > On Sep 20, 2013 1:57 AM, "Claus Ibsen" <claus.ib...@gmail.com> wrote: > >> Can you post the link to where you found this "mistake". I cannot see >> a problem at >> http://camel.apache.org/ognl >> >> On Fri, Sep 20, 2013 at 12:57 AM, Dale King <dalewk...@gmail.com> wrote: >> > In the documentation for the Camel OGNL component it shows the following >> > syntax: >> > >> > property(name) Object the property by the given name property(name, >> type) the >> > property by the given name as the given type >> > This syntax does not actually work in camel and I do not see any tests >> that >> > tried to test that it worked. >> > >> > If you change those to getProperty they work. properties[name] also >> works. >> > >> > In OGNL 4, which has not been released yet, property[name] should work. >> > -- >> > Dale King >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> Email: cib...@redhat.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> > -- Dale King