Can we just construct the url by hand before it is loaded into the class
loader?
Here is the code for toURL()
public URL toURL() throws MalformedURLException {
String path = getAbsolutePath();
if (File.separatorChar != '/') {
path = path.replace(File.separatorChar, '/');
}
if (!path.startsWith("/")) {
path = "/" + path;
}
if (!path.endsWith("/") && isDirectory()) {
path = path + "/";
}
return new URL("file", "", path);
}
We then just write a new function to do a toURL with the last line changed
to:
return new URL("file", "", URLEncoder.encode(path));
Of course this only works if we control the code that constructs the url.
-dain
----- Original Message -----
From: "Hiram Chirino" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, August 25, 2001 8:40 AM
Subject: Re: [JBoss-dev] (no subject)
>
> Well, if it's leaving the VM the code base should be going through the
> WebService. The WebService URL will not have a space in it, plus it will
> not be a file: URL and will not be affected by the Fix below. I think
> that's why the JRMP test suite was not failing.
>
> How about we install this fix via an MBean (maybe the info mbean) into the
> VM. We run the testsuite against it and see what happens.
>
> Hey, at least it should not not make things MUCH worse, jboss is allready
> screwed if installed on paths with a space.
>
> Regards,
> Hiram
>
> >From: "Scott M Stark" <[EMAIL PROTECTED]>
> >Reply-To: [EMAIL PROTECTED]
> >To: <[EMAIL PROTECTED]>
> >Subject: Re: [JBoss-dev] (no subject)
> >Date: Sat, 25 Aug 2001 00:31:00 -0700
> >
> >This won't work if the codebase leaves the vm, and now what happens if
> >the path contains a '+' ?
> >
> >----- Original Message -----
> >From: "Hiram Chirino" <[EMAIL PROTECTED]>
> >To: <[EMAIL PROTECTED]>
> >Sent: Friday, August 24, 2001 11:54 PM
> >Subject: Re: [JBoss-dev] (no subject)
> >
> >
> > >
> > > Ok.. if finished that workaround. I don't know if it will break
> >anything
> > > else, but at least it fixes our test case. To use it, add the
following
> > > line to the top of the tstMO main() method.
> > >
> > > FileURLSpaceFixer.install();
> > >
> > > below is the FileURLSpaceFixer.java file.
> > > -------------------------
> > > import java.net.URL;
> > > import java.net.URLStreamHandlerFactory;
> > > import java.net.URLStreamHandler;
> > > import java.net.URLConnection;
> > >
> > > /**
> > > * Used to fix the problem with the RMI classloader for
> > > * when a space appears in the path to where a class
> > > * should be loaded from.
> > > *
> > > * @author: Hiram Chirino
> > > */
> > > class FileURLSpaceFixer {
> > >
> > > private static FileHandler fileHander= new FileHandler();
> > > private static CustomURLStreamHandlerFactory
> > > customURLStreamHandlerFactory= new CustomURLStreamHandlerFactory();
> > >
> > > //
> > > // This class is used to hook into the URL protocol parsing sysytem
> > > //
> > > private static class CustomURLStreamHandlerFactory implements
> > > URLStreamHandlerFactory {
> > > public URLStreamHandler createURLStreamHandler(String protocol)
{
> > > if (protocol.equals("file"))
> > > return fileHander;
> > > return null;
> > > }
> > > }
> > >
> > > //
> > > // This class will override how the file handler is implemented.
> > > //
> > > private static class FileHandler extends
> > > sun.net.www.protocol.file.Handler {
> > >
> > > // When we externalize the URL we want to make all the spaces in
> >the
> > > file name
> > > // a '+' character
> > > protected String toExternalForm(URL u) {
> > > String s= super.toExternalForm(u);
> > > return s.replace(' ', '+');
> > > }
> > >
> > > // When we load a URL in we want to convert all the '+'
characters
> >in
> > > the file name
> > > // into spaces.
> > > protected void parseURL(URL u, String spec, int start, int
limit)
> >{
> > > super.parseURL(u, spec, start, limit);
> > > setURL(u, u.getProtocol(), u.getHost(), u.getPort(),
> > > u.getFile().replace('+', ' '), u.getRef());
> > > }
> > > }
> > >
> > > // use this method to install this fix.
> > > public static void install() {
> > > URL.setURLStreamHandlerFactory(customURLStreamHandlerFactory);
> > > }
> > > }
> > > -----------------
> > >
> > > Regards,
> > > Hiram
> > >
> >
> >
> >
> >_______________________________________________
> >Jboss-development mailing list
> >[EMAIL PROTECTED]
> >http://lists.sourceforge.net/lists/listinfo/jboss-development
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
>
>
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-development
>
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development