Hello Stephane,

it should work by doing so:
Directory directory = new Directory(getContext(),
LocalReference.createFileReference("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\mywebapp"));


Best regards,
Thierry Boileau

Loic,

As you can see in my second snippet, I used Reference.encode helper class to encode the url (which use URLEncoder), but it seems that the Reference does not recognize the encoded path as an absolute path, as described in the exception.

Regards
Stephane


On Tue, Jun 3, 2008 at 11:09 AM, <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Hello,
You need to encode your URL because the space are not valid
    character for a URL. (space needs to become %20), I think their is
    an existing helper class that can help you in the restlety API or
    check jakarta commons-net.
Regards, Loïc

    ------------------------------------------------------------------------
    *From:* Stephane Fellah [mailto:[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>]
    *Sent:* 03 June 2008 17:06

    *To:* [email protected] <mailto:[email protected]>
    *Subject:* Handling of file path with space in Reference


    Hi,

    I am trying to create a Directory using a path with some space
    character in it. Here a sample code:

    public static void main(String[] args) throws MalformedURLException {
            String path = "C:\\Program Files\\Apache Software
    Foundation\\Tomcat 5.5\\webapps\\mywebapp\\";
System.out.println("Path: "+path); URL url = new File(path).toURL();
            System.out.println("File URL: "+url);
            Directory d = new Directory(new Context(),url.toString());
            System.out.println(d);
        }


    Here the output and exception I get:

    Path: C:\Program Files\Apache Software Foundation\Tomcat
    5.5\webapps\mywebapp\

    File URL:  file:/C:/Program Files/Apache Software
    Foundation/Tomcat 5.5/webapps/mywebapp

    Exception in thread "main" java.lang.IllegalArgumentException:
    Invalid character detected in URI reference at index '16': " "
        at org.restlet.data.Reference.checkValidity(Reference.java:666)
        at org.restlet.data.Reference.<init>(Reference.java:531)
        at org.restlet.data.Reference.<init>(Reference.java:562)
        at org.restlet.Directory.<init>(Directory.java:142)
        at
    
com.usersmarts.ksb.services.servlet.TestReference.main(TestReference.java:27)

    I tried to encode the URL by doing using the Reference.encode or
    URLEncoder

        public static void main(String[] args) throws
    MalformedURLException {
            String path = "C:\\Program Files\\Apache Software
    Foundation\\Tomcat 5.5\\webapps\\mywebapp\\";
System.out.println("Path"+path); URL url = new File(path).toURL();
            System.out.println("File URL"+url);
            System.out.println("Encoded
    reference:"+Reference.encode(url.toString()));
            Directory d = new Directory(new
    Context(),Reference.encode(url.toString()));
            System.out.println(d);
        }


    Path:  C:\Program Files\Apache Software Foundation\Tomcat
    5.5\webapps\mywebapp\
    File URL:  file:/C:/Program Files/Apache Software
    Foundation/Tomcat 5.5/webapps/mywebapp
    Encoded reference:
    
file%3A%2FC%3A%2FProgram+Files%2FApache+Software+Foundation%2FTomcat+5.5%2Fwebapps%2Fmywebapp
    Exception in thread "main" java.lang.IllegalArgumentException:
    Relative references are only usable when a base reference is set.
        at org.restlet.data.Reference.getTargetRef(Reference.java:1674)
        at org.restlet.Directory.<init>(Directory.java:104)
        at org.restlet.Directory.<init>(Directory.java:142)
        at
    
com.usersmarts.ksb.services.servlet.TestReference.main(TestReference.java:23)

    I cannot see what is wrong here. Could you help.

    Thanks in advance.

    Stephane Fellah
    Senior Software Engineer
    Image Matters LLC




    **** DISCLAIMER ****
    http://www.belgacom.be/maildisclaimer


Reply via email to