Yeah, that makes more sense. 2010/5/28 Guillaume Nodet <gno...@gmail.com>
> I think the loop is correct, even though very weird. > I guess it should read as: > > if (stopDelim >= 0) > { > while (true) > { > ... > } > } > > On Fri, May 28, 2010 at 11:01, Bengt Rodehav <be...@rodehav.com> wrote: > > > 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 > > > > > > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com >