So looking into the problem with spaces in filename and restarting udig
it seems that this might be an issue with the constructURL function in
URLUtils.
I can fix the issue by changing line 242 from
File tmp = new File(base.getParentFile(), substring);
to
File tmp = new File(base.getParentFile(), file.getPath());
but I'm not sure what other impacts this might have. I'm not sure what
the purpose of "substring" is. Anyone have any input for me?
Emily
Emily Gouge wrote:
Okay, so it seems to me there are at least two places where updates need
to be made.
1) FileConnectionPage.java
Line 312 needs to be changed from
URL url = new File(path + System.getProperty("file.separator") +
filenames[i]).toURL();
to
URL url = new File(path + System.getProperty("file.separator") +
filenames[i]).toURI().toURL();
2) CatalogImportDropAction.java
Line 154 (the try statement) needs to be updated to use the URLUtils
function. I'm not so sure about this update though.
Change:
String string = "file:" + line;
result = new URL(string);
To:
result = URLUtils.fileToURL(new File(line));
These changes allow me to load a shapefile that has spaces in the path
name. If they seem okay I can commit them.
However they do not fix the error that occurs when udig is restarted.
When you restart udig the files are not found. I will look into that
and see if I can find out anything interesting.
Emily
Jody Garnett wrote:
Hi Emily; I am madly trying to hook up the ID class since I am sick of
all these path based issues in our code base.
net.refractions.udig.catalog.internal.shp.ShpGeoResourceImpl.<init>(ShpGeoResourceImpl.java:75)
at
net.refractions.udig.catalog.internal.shp.ShpServiceImpl.resources(ShpServiceImpl.java:177)
...
So why is the ID class being created with null?
From what I can tell this boils down to the ID.java class.
public ID( URL url ){
this.url = url;
try {
this.uri = url.toURI();
} catch (URISyntaxException e) {
}
this.uri = url.toURI() -> this throws an exception and thus uri is
null. I
believe this is the source of the null pointer exception above.
I agree; now I wonder why the provided url is null?
From experimenting:
If you have a url with spaces:
url = new URL("file:/C:/temp/habc poa/my border.shp");
You cannot convert it to a URI without an error.
That would probably be correct; since " " is not valid in a URL; can
we detect where in the code this is happening?
However if you encode the spaces in this url everything is okay.
url = new URL("file:/C:/temp/habc%20poa/my%20border.shp");
Is there some way we can encode the url's that have spaces so we can
properly create uri's out of them?
Richard made a URLUtils class that handles these cases (I added a test
case based on a File with spaces; but not for a URL with spaces). All
our code should be using this URLUtils; so it is my hope we can use
the debugger to find a case where this is not being called. Use of
this class is covered in the udig coding conventions:
- http://udig.refractions.net/confluence/display/DEV/5+Coding+Conventions
Jody
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel