Stuart McCulloch wrote:
2009/6/7 Sahoo <[email protected]>
Hi,
I see the following code in BundleArchive.java:
// Check if the location string represents a reference URL.
if ((location != null) &&
location.startsWith(REFERENCE_PROTOCOL))
{
// Reference URLs only support the file protocol.
location = location.substring(REFERENCE_PROTOCOL.length());
if (!location.startsWith(FILE_PROTOCOL))
{
throw new IOException("Reference URLs can only be files:
" + location);
}
...
Why does reference: scheme only work if the underlying URL represents a
file? Can't the code assume that for all other protocols, the underlying
stream is a JarInputStream and proceed from there?
how would you use a non-file URL "in-place"? you'd need some way to convert
it to a file location
otherwise you'd have to copy the stream, which would defeat the purpose of
using "reference:"
I don't understand how a file URL makes any difference when the actual
resource is a Jar file as opposed to a directory. The code still has to
open a JarInputStream to read it. The same will be the case even when
the resource is not a physical file.
Secondly, it is my understanding that the code copies embedded jar even
for reference: scheme? Is this not true?
Thanks,
Sahoo