Thierry Boileau wrote:
Hi Marc,
Thanks a lot for having reported this problem. An issue has been created :
http://restlet.tigris.org/issues/show_bug.cgi?id=337
ok, thx for confirming this as a defect.
I've taken the liberty of adding my proposed fix in patch-format to the
issue.
I don't have a unit test to go with that though (since to my knowledge
Java has no platform independent way of creating symbolic links)
regards,
-marc=
best regards,
Thierry Boileau
Hi all,
I'm testing an adapted version of org.restlet.example.tutorial.Part06
to make it display a directory listing of my home directory
The changed part looks like this:
// Create an application
Application application = new
Application(component.getContext()) {
@Override
public Restlet createRoot() {
final Directory directory = new
Directory(getContext(), "file:///home/mpo");
directory.setListingAllowed(true);
directory.setIndexName("");
return directory;
}
};
I'm running this on a linux system with a symbolic link in
/home/mpo/mnt to /mnt
This symbolic link outside the directory-resources' root will cause a
StringIndexOutOfBound on trying to make 'external' uri's for the
local-references assembled in this.directoryContent:
Since that contains file:////mnt rather then file:////home/mpo/mnt
substracting the root-uri fails:
SEVERE: Unhandled exception or error intercepted
java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.substring(String.java:1768)
at java.lang.String.substring(String.java:1735)
at
com.noelios.restlet.local.DirectoryResource.getVariants(DirectoryResource.java:445)
at org.restlet.resource.Resource.handleGet(Resource.java:407)
at
com.noelios.restlet.local.DirectoryResource.handleGet(DirectoryResource.java:254)
The problem is resolved by changing the method at
org.restlet.data.LocalReference#86
public static LocalReference createFileReference(File file)
throws IOException {
return createFileReference(file.getCanonicalPath());
}
by replacing the 'getCanonicalPath' to 'getAbsolutePath'
AFAICS making the reference 'canonical' is outside the responsibility
of the LocalReference class, but I might be jumping to conclusions here.
kind regards,
-marc=