Philippe Poulard wrote:
[X] Use URI style
[ ] Keep current behaviour
people that vote for the second choice should consider this :
are your applications really impacted ?
i don't think so;
In fact it is impacted.
Lets summarize again:
From "URI point of view" every filename in VFS points to a directory
and thus resolveName resolve relative to this name - NOT to the parent.
1) file:///path/to/dir , any/file = file:///path/to/dir/any/file
2) file:///path/to/dir/ , any/file = file:///path/to/dir/any/file
With "URI style" and NO synchronization (attach) to the filesystem:
3) file:///path/to/dir , any/file = file:///path/to/any/file
4) file:///path/to/dir/ , any/file = file:///path/to/dir/any/file
With "URI style" and WITH synchronization (attach) to the filesystem:
5) file:///path/to/dir , any/file = file:///path/to/dir/any/file
6) file:///path/to/dir/ , any/file = file:///path/to/dir/any/file
Not only that the change to "URI style" resolving might break existing
applications (difference between 1+3) it requires to attach to the
filesytem to avoid this problem (5).
notice that URI resolution is scheme independant and applies only on
FileName, not on FileObject
But this is just a matter of definition, we are also free to say the
current resolution is scheme independant. The current way is surely not
RFC compliant, the question is if the URI resolve thing is the best idea
for filesystems.
(VFS doesn't need to attach() the file to the underlying file system
to lookup by itself if it is a real file or directory, except if a
user explicitely attach() the file)
As you might see, VFS needs to attach the file to resolve correctly if
the user do NOT always state a directory with the leading "/".
Now that we see we have to attach the file the question is if we simply
change resolveFile to check if the base-fileObject is a file or
directory/imaginary?
In the first case we ask the parent fileObject to resolve in the latter
we resolve like today.
BUT - this is something a user can do today with its own
VfsUtils.resolveFile() method.
Then there is still the problem to mark a filename as directory in advance.
If you use VFS as singleton (VFS.getManager()) and resolve the same file
you will get the SAME FileObject/FileName instance. e.g. it allows
threads to synchronize against a fileobject.
Now what if the first thread uses "file:///any/name/" and the second
uses "file:///any/name" - the first thread should see a filename in
state DIRECTORY and the second in state IMAGINARY until the file is
attached or created.
I admit, a very uncommon situation, but we have to deal with it.
---
Mario
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]