[VFS] bug ?

classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

[VFS] bug ?

Philippe Poulard
hi Mario,

there is a bug in VFS RC3 :

StandardFileSystemManager fsm = null;
fsm = (StandardFileSystemManager) VFS.getManager();
fsm.setBaseFile( new File( System.getProperty( "user.dir" ) ) );
fsm.setDefaultProvider( new UrlFileProvider() );
FileObject fo = fsm.resolveFile( "file:///path/to/file" );
System.out.println( fsm.resolveFile( fo, "file:///chemin/vers/fichier" ) );
System.out.println( fsm.resolveFile( fo, "/chemin/vers/fichier" ) );
System.out.println( fsm.resolveFile( fo, "chemin/vers/fichier" ) );

output is :

file:///chemin/vers/fichier
file:///chemin/vers/fichier
file:///path/to/file/chemin/vers/fichier

the last must be :

file:///path/to/chemin/vers/fichier

the same with java.net.URI gives the right result :

URI uri = new URI( "file:///path/to/file" );
System.out.println( uri.resolve( "file:///chemin/vers/fichier" ) );
System.out.println( uri.resolve( "/chemin/vers/fichier" ) );
System.out.println( uri.resolve( "chemin/vers/fichier" ) );

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Torsten Curdt

On 19.08.2005, at 10:07, Philippe Poulard wrote:

> hi Mario,
>
> there is a bug in VFS RC3 :
>
> StandardFileSystemManager fsm = null;
> fsm = (StandardFileSystemManager) VFS.getManager();
> fsm.setBaseFile( new File( System.getProperty( "user.dir" ) ) );
> fsm.setDefaultProvider( new UrlFileProvider() );
> FileObject fo = fsm.resolveFile( "file:///path/to/file" );
> System.out.println( fsm.resolveFile( fo, "file:///chemin/vers/
> fichier" ) );
> System.out.println( fsm.resolveFile( fo, "/chemin/vers/fichier" ) );
> System.out.println( fsm.resolveFile( fo, "chemin/vers/fichier" ) );
>
> output is :
>
> file:///chemin/vers/fichier
> file:///chemin/vers/fichier
> file:///path/to/file/chemin/vers/fichier
>
> the last must be :
>
> file:///path/to/chemin/vers/fichier
>
> the same with java.net.URI gives the right result :
>
> URI uri = new URI( "file:///path/to/file" );
> System.out.println( uri.resolve( "file:///chemin/vers/fichier" ) );
> System.out.println( uri.resolve( "/chemin/vers/fichier" ) );
> System.out.println( uri.resolve( "chemin/vers/fichier" ) );
Maybe the URI class is a bit smarter
but why would you use a *file* as a
base anyway????

VFS should probably check whether it's
a dir and if not use the parent.

But IMHO the above example looks more
like a wrong use of the API.

my 2 cents

cheers
--
Torsten

PGP.sig (193 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Mario Ivankovits
In reply to this post by Philippe Poulard
Hi!

I wont say its a bug .... from very old code I come to the conclusion
its just not supported that way.


Now this isnt that easy to solve (if we would like to solve it) as maybe
other VFS installations expect it that way.

What we can do is to add a new NameScope - say NameScope.SIBLING.
resolveFile with that scope might behave like URI.

Using FileObject.resolveFile(String name, NameScope scope) you could set
it then.


---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Philippe Poulard
In reply to this post by Torsten Curdt
Torsten Curdt wrote:

>
> On 19.08.2005, at 10:07, Philippe Poulard wrote:
>
>> hi Mario,
>>
>> there is a bug in VFS RC3 :
>>
>> StandardFileSystemManager fsm = null;
>> fsm = (StandardFileSystemManager) VFS.getManager();
>> fsm.setBaseFile( new File( System.getProperty( "user.dir" ) ) );
>> fsm.setDefaultProvider( new UrlFileProvider() );
>> FileObject fo = fsm.resolveFile( "file:///path/to/file" );
>> System.out.println( fsm.resolveFile( fo, "file:///chemin/vers/
>> fichier" ) );
>> System.out.println( fsm.resolveFile( fo, "/chemin/vers/fichier" ) );
>> System.out.println( fsm.resolveFile( fo, "chemin/vers/fichier" ) );
>>
>> output is :
>>
>> file:///chemin/vers/fichier
>> file:///chemin/vers/fichier
>> file:///path/to/file/chemin/vers/fichier
>>
>> the last must be :
>>
>> file:///path/to/chemin/vers/fichier
>>
>> the same with java.net.URI gives the right result :
>>
>> URI uri = new URI( "file:///path/to/file" );
>> System.out.println( uri.resolve( "file:///chemin/vers/fichier" ) );
>> System.out.println( uri.resolve( "/chemin/vers/fichier" ) );
>> System.out.println( uri.resolve( "chemin/vers/fichier" ) );
>
>
> Maybe the URI class is a bit smarter
> but why would you use a *file* as a
> base anyway????

well, it's somewhat obvious :

when you load an HTML document from a web server, you have :
http://www.acme.com/path/to/document.html
if the document contain :
<img src="picture.jpg"/>
<link rel="stylesheet" href="style.css">
both will be resolved according to the document location :
http://www.acme.com/path/to/picture.jpg
http://www.acme.com/path/to/style.css

i think there are many other examples where FILES are referencing
resources they are using

>
> VFS should probably check whether it's
> a dir and if not use the parent.

this is not a question of "is it a dir or a file"

if it doesn't end with "/", it must be resolved regarding the parent
if it ends with "/", just append the relative path

>
> But IMHO the above example looks more
> like a wrong use of the API.

see RFCxxx about URIs

>
> my 2 cents
>
> cheers
> --
> Torsten

thanks for your reply
--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Philippe Poulard
In reply to this post by Mario Ivankovits
Mario Ivankovits wrote:

> Hi!
>
> I wont say its a bug .... from very old code I come to the conclusion
> its just not supported that way.
>
>
> Now this isnt that easy to solve (if we would like to solve it) as maybe
> other VFS installations expect it that way.
>
> What we can do is to add a new NameScope - say NameScope.SIBLING.
> resolveFile with that scope might behave like URI.
>
> Using FileObject.resolveFile(String name, NameScope scope) you could set
> it then.
>

mmmh, consider this :

i hope that a file that ends with "/" is automatically understand by VFS
as a DIRECTORY

so, to resolve "fichier" upon :
file:///path/to/file
that may be an IMAGINARY type
it should be resolved to
file:///path/to/fichier
even if file:///path/to/file is really a directory or a file

to resolve it upon :
file:///path/to/
that must be a DIRECTORY type
it should be resolved to
file:///path/to/fichier

in fact, i'm not sure that an additional scope should be designed ; as
one have all the information for the resolution, i thing the correct
behaviour is the one described above

my previous post show a real example of such a behaviour :

when you load an HTML document from a web server, you have :
http://www.acme.com/path/to/document.html
if the document contains :
<img src="picture.jpg"/>
<link rel="stylesheet" href="style.css">
both will be resolved according to the document location :
http://www.acme.com/path/to/picture.jpg
http://www.acme.com/path/to/style.css

i think there are many other examples where FILES are referencing
resources they are using


the current behaviour of VFS can't process healthily such cases

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Philippe Poulard
>
> the current behaviour of VFS can't process healthily such cases
>

i think that VFS users didn't already have to deal with relative files
resolution regarding something else than a directory ; that's why they
didn't yet complain about this behaviour that is suitable to directories

please have a look again on my HTML example :)

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Mario Ivankovits
In reply to this post by Philippe Poulard
Hello!

I've read your previous post and all what you outline makes *very* sense.

For sure - its possible to solve it without additional NameScope (even
if hard).
BUT - and I hope other VFS users read this thread too - the behaviour in
this situation isnt well documenten (fault 1), no testcase cover it
(fault 2) and the way it currently works (maybe fault 3) might already
be an assumption for other users and their applications. The only thing
I can say is, that VFS core could couldnt handle it.

Solving it in "a clean" way might break their application. I think this
is not acceptable for a RC->1.0 release transition.

> i think that VFS users didn't already have to deal with relative files
> resolution regarding something else than a directory ; that's why they
> didn't yet complain about this behaviour that is suitable to directories
Might be true, but only if their directory-names ends with an "/" and
vfs  didnt support this semantic (yet).
So beside fix the filename-resolving stuff we have to add this "flag" to
show we would like to talk about directories even if the file is
"virtual" (non existent)


OK - I suggest to start a poll on the user list and with this result a
vote on the dev list to ask if this "bug" should be solved the clean way
- I do not know every single use of the VFS api (e.g. currently I dont
use this resolve-relative stuff) so I need your input.
This would delay the release for at least another month. Ok - nothing
bad with that.


---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Torsten Curdt
In reply to this post by Philippe Poulard

>>> fsm.setBaseFile( new File( System.getProperty( "user.dir" ) ) );
>
> well, it's somewhat obvious :

yepp - but to me the other way around ;)

> when you load an HTML document from a web server, you have :
> http://www.acme.com/path/to/document.html
> if the document contain :
> <img src="picture.jpg"/>
> <link rel="stylesheet" href="style.css">
> both will be resolved according to the document location :
> http://www.acme.com/path/to/picture.jpg
> http://www.acme.com/path/to/style.css
>
> i think there are many other examples where FILES are referencing  
> resources they are using
IMHO this would only apply if you were
setting a base URI on the fsm.
Matter of fact you are setting a File
object.

But anyway ...would probably nice to
add a directory check on setBaseFile.
...using the parent if it's a file.

cheers
--
Torsten



PGP.sig (193 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Torsten Curdt
In reply to this post by Mario Ivankovits
> Solving it in "a clean" way might break their application. I think  
> this is not acceptable for a RC->1.0 release transition.

As long it's not released - it's not released yet ;)

>> i think that VFS users didn't already have to deal with relative  
>> files resolution regarding something else than a directory ;  
>> that's why they didn't yet complain about this behaviour that is  
>> suitable to directories
>>
> Might be true, but only if their directory-names ends with an "/"  
> and vfs  didnt support this semantic (yet).
> So beside fix the filename-resolving stuff we have to add this  
> "flag" to show we would like to talk about directories even if the  
> file is "virtual" (non existent)
Adding the "/" semantics right before the release
is not a good idea IMO. The fix that I proposed
is very simple ...shoulnd't that do it? It will
much less likely break anything.

In general adding a "special" mode doesn't sound
like a good plan to me.

cheers
--
Torsten


PGP.sig (193 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Philippe Poulard
In reply to this post by Mario Ivankovits
Mario Ivankovits wrote:

> Hello!
>
> I've read your previous post and all what you outline makes *very* sense.
>
> For sure - its possible to solve it without additional NameScope (even
> if hard).
> BUT - and I hope other VFS users read this thread too - the behaviour in
> this situation isnt well documenten (fault 1), no testcase cover it
> (fault 2) and the way it currently works (maybe fault 3) might already
> be an assumption for other users and their applications. The only thing
> I can say is, that VFS core could couldnt handle it.
>
> Solving it in "a clean" way might break their application. I think this
> is not acceptable for a RC->1.0 release transition.
>
>> i think that VFS users didn't already have to deal with relative files
>> resolution regarding something else than a directory ; that's why they
>> didn't yet complain about this behaviour that is suitable to directories
>
> Might be true, but only if their directory-names ends with an "/" and
> vfs  didnt support this semantic (yet).
> So beside fix the filename-resolving stuff we have to add this "flag" to
> show we would like to talk about directories even if the file is
> "virtual" (non existent)
>
>
> OK - I suggest to start a poll on the user list and with this result a
> vote on the dev list to ask if this "bug" should be solved the clean way
> - I do not know every single use of the VFS api (e.g. currently I dont
> use this resolve-relative stuff) so I need your input.
> This would delay the release for at least another month. Ok - nothing
> bad with that.
>

I vote for fixing this behaviour :)

motivation :

VFS is somewhat a young tool ; people that are developping on RC release
are certainly not as numerous as we think, or didn't yet used the tool
very deeply... I guess that the impact is very limited, and in the case
of the few impacted applications, I don't think that adding a terminal
"/" where needed is really difficult

I did myself start to develop with a non-stable version of VFS (january
2005), and it was a pain to upgrade to RC3, because of the unstable API
! however, I'm still ready to accept any drastic changes if they are
justified and contribute to the tool
i'm just considering that things are not as stable as everyone would wish

I'm sure people would prefer a clean-well designed-smart-efficient tool
than a hacked-not fair-unpredictable-dirty one :)

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] bug ?

Mario Ivankovits
In reply to this post by Torsten Curdt
Hi!
>> Solving it in "a clean" way might break their application. I think  
>> this is not acceptable for a RC->1.0 release transition.
> As long it's not released - it's not released yet ;)
Hmmm. Maybe I "overcomplicate" things ...

>>> i think that VFS users didn't already have to deal with relative  
>>> files resolution regarding something else than a directory ;  that's
>>> why they didn't yet complain about this behaviour that is  suitable
>>> to directories
>> Might be true, but only if their directory-names ends with an "/"  
>> and vfs  didnt support this semantic (yet).
>> So beside fix the filename-resolving stuff we have to add this  
>> "flag" to show we would like to talk about directories even if the  
>> file is "virtual" (non existent)
> Adding the "/" semantics right before the release
> is not a good idea IMO.
... but its not release yet ;-)
> The fix that I proposed
> is very simple ...shoulnd't that do it?
Yes and no. Yes it might work, but - no - only if the file already
exists. And why should the filename parsing stuff take the existence of
a file/directory into account? In fact at that point in VFS I do only
have a FileName and no FileObject.


Philippe wrote:
> I vote for fixing this behaviour :)
I need some time to think about it.

---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[VFS] uri style resolve names (was: [VFS] bug ?)

Mario Ivankovits
In reply to this post by Philippe Poulard
Hi!

Without to spread the feeling a decision has been made ;-) I would like
to discuss another aspect of uri-style resolving names.

First of all, VFS's behaviour on this topic should be consistent, it
should not matter if the directory/file exists or not, the filename is
the only "reality".

Consider the following chaing of operations:

01: FileObject fo = VFS.getManager().resolveFile("/any/new/dir/name/")
02: fo.createFile();
03: fo.delete();
04: fo.createDirectory();

Now my questions:
a) Should it be allowed to call createFile on a "directory"? Notice: The
"fo" is nonexistent. Currently the decision if it is a directory or file
will be made when calling one of the create* methods and can be changed
(sure unlikley, but posssible - and if not it is a bug ;-) )
b) If we allow to change the type of the file/directory is it logical
that its filename changes too? e.g. after 02: it will be
/any/new/dir/name and after 04 it will be /any/new/dir/name/ again
c) And thus is it logical that after 02/04 a resolveFile() will behave
differently?
d) Filename changes are a real problem, not only for the cache (which
could be solved for sure) but also for the application. What if the
application put the fileName object in a map? You might argue after
createFile/createDirectory such application should recreate the
map-entry, but is this really logical?

e) We can ignore b-d if we NOT allow to change the type of a file (case
a). In that case the statement on line 02: will fail with an
FileSystemException then.


With way e:

01: FileObject fo = VFS.getManager().resolveFile("/any/EXISTING/dir")

f) should this resolve fail as it exists as directory but the filename
points to a file?


OK, thats all for now ;-)


---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] uri style resolve names

Mario Ivankovits
No answers to this topic?

---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] uri style resolve names

Philippe Poulard
In reply to this post by Mario Ivankovits
hi,

Mario Ivankovits wrote:
> Hi!
>
> Without to spread the feeling a decision has been made ;-) I would like
> to discuss another aspect of uri-style resolving names.
>
> First of all, VFS's behaviour on this topic should be consistent, it
> should not matter if the directory/file exists or not, the filename is
> the only "reality".

this is a sane approach

my proposition is that the resolution algorithm should simply rely on
the type of the base file ; 3 cases :
-the type is explicitely a directory (/path/to/name/)
-the type is implicitely a directory (.createDirectory() or
.setType(DIRECTORY))
in both cases, we have a DIRECTORY, we know how to resolve from a base
DIRECTORY
-otherwise the base file is a FILE or IMAGINARY and behaves like a FILE,
we know how to resolve from a base FILE

/path/to/name/
IS a directory
if it doesn't yet exist, .createFile() should call .createDirectory()

/path/to/name
MAY BE a directory
if it doesn't yet exist, .createFile() and .createDirectory() won't do
the same

about names consistency :
/path/to/name/ is a DIRECTORY which name is /path/to/name
/path/to/name is IMAGINARY which name is /path/to/name
.createDirectory() switch the file type to DIRECTORY
.createDirectory() switch the file type to FILE

now, resolving a file on a base that is implicitely or explicitely a
DIRECTORY can be done

on a web server, when a file have to be resolved, it usually check if
the name is a directory or not ; in the first case, it appends a "/" to
the name ; as you said, VFS must not check it, it must decide only from
the name or from previous operations (such as .createDirectory())

concretely, users that are dealing with names that are considered as
directory must end the name with "/"

warnings :
-additionally, when VFS build a child list, it should mark each item as
FILE or DIRECTORY (i hope it is already the case, as this operation
involves the underlying FS)
-the type of the file (FILE or DIRECTORY) may be fixed when we attempt
to attach it

>
> Consider the following chaing of operations:
>
> 01: FileObject fo = VFS.getManager().resolveFile("/any/new/dir/name/")
> 02: fo.createFile();
> 03: fo.delete();
> 04: fo.createDirectory();
>
> Now my questions:
> a) Should it be allowed to call createFile on a "directory"? Notice: The
> "fo" is nonexistent. Currently the decision if it is a directory or file
> will be made when calling one of the create* methods and can be changed
> (sure unlikley, but posssible - and if not it is a bug ;-) )

02: fo.createFile() must create a directory, because it's type is
DIRECTORY because its name ends with "/" ($)

> b) If we allow to change the type of the file/directory is it logical
> that its filename changes too? e.g. after 02: it will be
> /any/new/dir/name and after 04 it will be /any/new/dir/name/ again

is it a shortcut on real FS operations, or just a modification on names ?
switching file to dir :
-deleteFile()
-createDirectory()
switching dir to file :
-deleteFile() [and its content]
-setType( FILE ) [otherwise it will create a dir again, see ($)]
-createFile()

> c) And thus is it logical that after 02/04 a resolveFile() will behave
> differently?

the type rules the behaviour

> d) Filename changes are a real problem, not only for the cache (which
> could be solved for sure) but also for the application. What if the
> application put the fileName object in a map? You might argue after
> createFile/createDirectory such application should recreate the
> map-entry, but is this really logical?

that's why i propose to delete the trailing "/" from the name ; the
object is the same in the cache and in maps

>
> e) We can ignore b-d if we NOT allow to change the type of a file (case
> a). In that case the statement on line 02: will fail with an
> FileSystemException then.
>
>
> With way e:
>
> 01: FileObject fo = VFS.getManager().resolveFile("/any/EXISTING/dir")
>
> f) should this resolve fail as it exists as directory but the filename
> points to a file?

the resolution algorithm doesn't (mustn't) involve the underlying FS, it
just resolves relative names from a base name

>
>
> OK, thats all for now ;-)
>
>
> ---
> Mario
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>

about consistency between names and FS :
when /path/to/name/ (which is now a DIRECTORY) appears to be a real FILE
on the underlying FS, i think an exception should be thrown when
attch()ing it, because the user do really think he handles a directory

conclusion, the FileName should also have a FileType ; when attached, it
would be replaced by those of the FileObject ; in fact, when a FileName
is bound to a FileObject, they certainly have the same FileType ; what
is expected in all this stuff is that a standalone FileName (that
doesn't belong to a FileObject) must have a FileType

or something like this :)

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] uri style resolve names

Philippe Poulard
In reply to this post by Mario Ivankovits
Mario Ivankovits wrote:
> No answers to this topic?

not during my hollidays :)

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] uri style resolve names

Mario Ivankovits
Hi Philippe!
>> No answers to this topic?
> not during my hollidays :)
Hope you are full of energy now ;-)


I read your new post and might comment in detail later - overall we are
on the same line, except for one thing:

*Is it really worth it?*

I am still not convinced in this very basic question. It IS a lot of
work and introduce some new logic a user might have to deal with.
Currently we have a "Very Fine and Simple" (VFS ;-) ) wrapper around
some filesystems and I tried and still try to remove any logic from VFS
which I found not necessary.

Everyone is free to add its own VfsUtils.resolveNameURI() class/methods
which behaves the URI way.
In difference to VFS which has to deal with filename-types
(directory/file) to work in all cases, such a method might only work if
the file/directory already exists, but I think this is the major case.


Please give me some more arguments other than "your filename looks like
an URI so you should behave like an URI".
Its easy to add a comment on the website which state the filename is NOT
a URI.

---
Mario


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [VFS] uri style resolve names

Philippe Poulard
Mario Ivankovits wrote:
> Hi Philippe!
>
>>> No answers to this topic?
>>
>> not during my hollidays :)
>
> Hope you are full of energy now ;-)
>

bugs are frightenned of my return ;)

>
> I read your new post and might comment in detail later - overall we are
> on the same line, except for one thing:
>
> *Is it really worth it?*

sure !

>
> I am still not convinced in this very basic question. It IS a lot of
> work and introduce some new logic a user might have to deal with.
> Currently we have a "Very Fine and Simple" (VFS ;-) ) wrapper around
> some filesystems and I tried and still try to remove any logic from VFS
> which I found not necessary.

this is the reason for which it is necessary to have a *common*
resolution mechanism ; resolving names are scheme independant ; but as i
said in my previous post, a name could contain an information about the
file type : if it is a real DIRECTORY or not ; we are sure if a name
ends with "/", but we should "normalize" names by removing the trailing "/"

URI resolution is really a problem to solve on the foundation of VFS

user side, they just have to append a "/" if they really want to force
VFS to understand a name like a directory (that's what i did in my XML
catalogs)

>
> Everyone is free to add its own VfsUtils.resolveNameURI() class/methods
> which behaves the URI way.

too late ! the trailing "/" will be lost after "normalization"
this normalization must be done, because in any case you still have a
problem with "/path/to/name" and "/path/to/name/" ; they musn't be
different, as you noticed it yourself ! the only thing we are sure, is
that the former is a DIRECTORY, the latter is IMAGINARY, until it is
attach()ed or createDirectory() is used

that's why a FileType field is needed in the name ; i noticed that
AbstractFileObject.type could be easily moved to FileName.type because
its constructor needs a FileName

> In difference to VFS which has to deal with filename-types
> (directory/file) to work in all cases, such a method might only work if
> the file/directory already exists, but I think this is the major case.

well, not really : we are really talking about *name* resolving, which
is (must be) transparent to the underlying FS : resolving names are
scheme independant

example where content is not accessed :
I work with XML catalogs where URIs are resolved from base URIs : when
an entry URI is handled, its content is never used (never attach()ed) ;
the content of the resolved URI on the other side is used
but in some case, it is not used ! for example, it may be use to build a
link ; a web application won't do anything server side with a URI ; the
web browser client side will

>
>
> Please give me some more arguments other than "your filename looks like
> an URI so you should behave like an URI".
> Its easy to add a comment on the website which state the filename is NOT
> a URI.

what would be the consistency of VFS in this case ?
how to resolve *names* with VFS if relative paths were used in HTML
files ???

concessions have already been made regarding URIs by adding semantic to
  "!" to allow scheme embedding ; but it was *necessary* ; now what
people would think if they use a tool that is *deliberately* not
compliant to RFCs ?

i already have to deal with such a problem : a vendor was using "URIs"
that were not well-formed regarding RFCxxx ; it looks like this :
"foo://path/to/file" ; but when i parsed the URI, the URI parser tells
that the path part was "/to/file" and the host was "path" ; they simply
forgot a "/" ("foo:///path/to/file"), becaming not compliant with RFCs ;
it doesn't look professional :( ; one solution was to parse twice this
pseudo-URI : 1 to fix the problem, 1 to use the standard URI parser ;
that's what people hate to do : a hack so that they can use their
preferred tools (that are compliant to standards)

you will regret sooner or later to break this ; VFS would be more used
if you proclaim that you are RFC compliant except for the usage of "!"

i'm sure you know i'm right :)

--
Cordialement,

            ///
           (. .)
  -----ooO--(_)--Ooo-----
|   Philippe Poulard    |
  -----------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]