JIRA is raised: https://issues.apache.org/jira/browse/FELIX-2366

I tried your workaround and it works. Thanks.

BTW, when looking at the source code I find something a bit fishy. The loop
that tries to find the DELIM_START looks like this:

        // Find the matching starting "${" variable delimiter
        // by looping until we find a start delimiter that is
        // greater than the stop delimiter we have found.
        int startDelim = val.indexOf(DELIM_START);
        while (stopDelim >= 0)
        {
            int idx = val.indexOf(DELIM_START, startDelim +
DELIM_START.length());
            if ((idx < 0) || (idx > stopDelim))
            {
                break;
            }
            else if (idx < stopDelim)
            {
                startDelim = idx;
            }
        }

Should the loop condition really be "while(stopDelim >=0)". I haven't seen
any erroneous behaviour but I cannot see that the stopDelim variable is ever
changed within the loop which means that the loop will run once or not at
all. Shouldn't the loop condition use "startDelim"?

/Bengt

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

> This looks like a bug.  Could you please raise a JIRA for that ?
> As a workaround, you can try:
>  file://inbox?move=backup/$\{date:now:yyyMMdd\}/$\{file:name\}${#}
> It will force a substitution, and thus will remove the escape chars.
>
> On Fri, May 28, 2010 at 10:11, Bengt Rodehav <be...@rodehav.com> wrote:
>
> > 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
> > >
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>

Reply via email to