[
https://issues.apache.org/jira/browse/FELIX-731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12633769#action_12633769
]
Stuart McCulloch commented on FELIX-731:
----------------------------------------
> Stuart, I am confused. Doesn't that patch attempt to decode, not encode, the
> string?
Correct, we want to go from the encoded URL
"...util-plan-deployer%201.0.8-SNAPSHOT.jar" to the decoded path
"...util-plan-deployer 1.0.8-SNAPSHOT.jar", which is exactly the same as what
the file URL handler does when the bundle is installed without the reference
schema.
ie. at the moment:
install file:/tmp/a%20b/foo.jar works
install reference:file:/tmp/a%20b/foo.jar doesn't work
> Even then, I don't think this encoding/decoding is going to do the trick for
> us, since I imagine the created file name will end up taking the encoded
> value literally.
it does work, I've tested it locally - the escaped %20 is translated back into
the space which is what the filesystem expects.
> After closer inspection, this issue is not related to File at all.
well it is related to URLs, which shouldn't really contain spaces - the install
command accepts a series of URLs so the spaces should be escaped (%20) - this
patch is just making the reference: logic work the same way as the standard
install code (the URL decoding in that case is done internally when the URL
connection is opened when copying it to the cache)
> The issue is in the shell "install" command. It doesn't have a sophisticated
> parser, so it only breaks up the command line at whitespaces, which cause the
> line to be improperly parsed.
correct, but I think it's clearer to break the arguments on spaces and require
that URLs are properly encoded - otherwise we could easily run into other
problems because we're essentially creating our own encoding scheme which is
different from the spec'd URL scheme.
> To solve this, we would need to make the parser understand the "\" escape
> character and then you could escape the space.
the problem is that standard encoded URLs like "file:/tmp/a%20b/foo.jar" would
still need decoding before they can be used as direct filenames.
> The install command uses StringTokenizer, which doesn't support escaping, and
> to keep things simple we cannot go to the regex stuff.
we don't need to change the parser - just decode the URL path into a filesystem
path...
> Installation of referenced files which contain whitepaces fails
> ---------------------------------------------------------------
>
> Key: FELIX-731
> URL: https://issues.apache.org/jira/browse/FELIX-731
> Project: Felix
> Issue Type: Bug
> Components: Framework
> Affects Versions: felix-1.2.1
> Environment: Windows XP
> Reporter: François Fornaciari
> Attachments: FELIX-731.patch
>
>
> The installation of bundles which contain whitespaces by using the reference
> prefix fails.
> When not using the reference prefix, the solution is to replace whitespaces
> by %20,
> Unfortunately, the same approach does not fix the issue for referenced files.
> Below the error message when installing a bundle with whitespaces:
> -> install
> reference:file:D:/.m2/repository/org/ow2/bundles/util-plan-deployer/1.0.8-SNAPSHOT/util-plan-deployer
> 1.0.8-SNAPSHOT.jar
> java.io.IOException: Referenced file does not exist:
> D:\.m2\repository\org\ow2\bundles\util-plan-deployer\1.0.8-SNAPSHOT\util-plan-deployer
> java.net.MalformedURLException: no protocol: 1.0.8-SNAPSHOT.jar
> Below the error message when installing a bundle by replacing whitespaces by
> %20:
> -> install
> reference:file:D:/.m2/repository/org/ow2/bundles/util-plan-deployer/1.0.8-SNAPSHOT/util-plan-deployer%201.0.8-SNAPSHOT.jar
> java.io.IOException: Referenced file does not exist:
> D:\.m2\repository\org\ow2\bundles\util-plan-deployer\1.0.8-SNAPSHOT\util-plan-deployer%201.0.8-SNAPSHOT.jar
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.