Hello Guillaume,

Thanks for your reply. However, if I escape the string the way you describe,
then the backslash will remain in the string. The result will be:

file://inbox?move=backup/$\{date:now:yyyMMdd\}/$\{file:name\}

What I want is:

file://inbox?move=backup/${date:now:yyyMMdd}/${file:name}

Otherwise the string will not be usable for Camel. Is there a way to
accomplish this? In general terms one usually has a way to "quote"
substrings in order to avoid substitution but the quotes themselves should
be removed from the string. In this case backslash is the quoting character
but it's not removed from the end result.

I think also that it would be good if one could escape substrings and not
only indiviudal characters (by enclosing substrings with quotes) but that
has lower priority for me if I can get the above to work.

I've been looking at the source code in file install (3.0) and understand
why this is happening. The method of interest is substVars in class
org.apache.felix.fileinstall.internal.Util. The logic tries to find
matching DELIM_START (${) and DELIM_STOP (}). When I escape either of these
(by specifying a backslash before "${" and/or "}"), the logic will never
find matching DELIM_START and DELIM_STOP which causes the method to
immediately return without performing property substitution. The logic at
the end of the method (that removes the backslashes) is never reached.

/Bengt

2010/5/27 Guillaume Nodet <gno...@gmail.com>

> Sure, we had the same problem in Karaf and i've fixed that as part of
> https://issues.apache.org/jira/browse/FELIX-2307
> Basically, just add '\' before the '{' and '}' and it should work:
>
> file://inbox?move=backup/$\{date:now:yyyMMdd\}/$\{file:name\}
>
>
> On Thu, May 27, 2010 at 23:22, Bengt Rodehav <be...@rodehav.com> wrote:
>
> > Hello everyone,
> >
> > My question didn't get much attention on my first attempt so I'll make
> > another one...
> >
> > Maybe a clarifaction of what I'm trying to do helps. I'm using Karaf as a
> > deployment container for Camel routes. I start services, using file
> > install,
> > that house camel routes. The routes are configurable using the
> > configuration
> > admin via file install. E g I have a general file transfer route in Camel
> > that looks like this:
> >
> > from(mFromUri).to(mToUri);
> >
> > ...where "mFromUri" and "mToUri" are properties configured via
> > configuration
> > admin. Camel itself supports a "property concept" and an example of a
> > "mFromUri" I might want to use is:
> >
> > file://inbox?move=backup/${date:now:yyyMMdd}/${file:name}
> >
> > This will cause Camel to poll the inbox folder and archive completed
> files
> > in a backup folder that is named with todays date.
> >
> > However, since file install always does property substitution itself (in
> > this case I want Camel to do it - not file install), the URI sent to
> Camel
> > will be:
> >
> > file://inbox?move=backup//
> >
> > This is because the strings ${date:now:yyyMMdd} and ${file:name} will be
> > transformed to empty strings since file install will regard them as
> > properties that are not defined.
> >
> > How can I work around this? Any clues?
> >
> > /Bengt
> >
> >
> > 2010/5/26 Bengt Rodehav <be...@rodehav.com>
> >
> > > I'm using the File Install component and cannot find a way to set
> values
> > > like "${abc}" (without the quotes). File install insists on performing
> > > property substitution which I do not want in this case. I noticed that
> > this
> > > seems to have been addressed in version 3.0.0 but I cannot get it to
> > work.
> > > My question is: How can I set a value to "${abc}" (without the quotes)
> > > without File install trying to perform property substitution?
> > >
> > > /Bengt
> > >
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>

Reply via email to