|
@@ -34,10 +34,13 @@ package com.jme3.asset.plugins;
|
|
|
|
|
|
import com.jme3.asset.*;
|
|
import com.jme3.asset.*;
|
|
import com.jme3.system.JmeSystem;
|
|
import com.jme3.system.JmeSystem;
|
|
|
|
+import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
|
|
+import java.net.URISyntaxException;
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
import java.net.URLConnection;
|
|
import java.net.URLConnection;
|
|
|
|
+import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -103,12 +106,33 @@ public class ClasspathLocator implements AssetLocator {
|
|
if (url == null)
|
|
if (url == null)
|
|
return null;
|
|
return null;
|
|
|
|
|
|
|
|
+ if (url.getProtocol().equals("file")){
|
|
|
|
+ try {
|
|
|
|
+ String path = new File(url.toURI()).getCanonicalPath();
|
|
|
|
+
|
|
|
|
+ // convert to / for windows
|
|
|
|
+ if (File.separatorChar == '\\'){
|
|
|
|
+ path = path.replace('\\', '/');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // compare path
|
|
|
|
+ if (!path.endsWith(name)){
|
|
|
|
+ throw new AssetNotFoundException("Asset name doesn't match requirements.\n"+
|
|
|
|
+ "\"" + path + "\" doesn't match \"" + name + "\"");
|
|
|
|
+ }
|
|
|
|
+ } catch (URISyntaxException ex) {
|
|
|
|
+ throw new AssetLoadException("Error converting URL to URI", ex);
|
|
|
|
+ } catch (IOException ex){
|
|
|
|
+ throw new AssetLoadException("Failed to get canonical path for " + url, ex);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
try{
|
|
try{
|
|
URLConnection conn = url.openConnection();
|
|
URLConnection conn = url.openConnection();
|
|
conn.setUseCaches(false);
|
|
conn.setUseCaches(false);
|
|
return new ClasspathAssetInfo(manager, key, conn);
|
|
return new ClasspathAssetInfo(manager, key, conn);
|
|
}catch (IOException ex){
|
|
}catch (IOException ex){
|
|
- return null;
|
|
|
|
|
|
+ throw new AssetLoadException("Failed to read URL " + url, ex);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|