Browse Source

* Now added "asset name requirements" to FileLocator to prevent Windows -> Linux porting issues

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7869 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
sha..rd 14 years ago
parent
commit
15fbe27d13

+ 0 - 4
engine/src/desktop/com/jme3/asset/plugins/ClasspathLocator.java

@@ -40,7 +40,6 @@ import java.io.InputStream;
 import java.net.URISyntaxException;
 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;
 
 
 /**
 /**
@@ -134,8 +133,5 @@ public class ClasspathLocator implements AssetLocator {
         }catch (IOException ex){
         }catch (IOException ex){
             throw new AssetLoadException("Failed to read URL " + url, ex);
             throw new AssetLoadException("Failed to read URL " + url, ex);
         }
         }
-        
     }
     }
-
-
 }
 }

+ 16 - 0
engine/src/desktop/com/jme3/asset/plugins/FileLocator.java

@@ -34,11 +34,14 @@ package com.jme3.asset.plugins;
 
 
 import com.jme3.asset.AssetInfo;
 import com.jme3.asset.AssetInfo;
 import com.jme3.asset.AssetKey;
 import com.jme3.asset.AssetKey;
+import com.jme3.asset.AssetLoadException;
 import com.jme3.asset.AssetLocator;
 import com.jme3.asset.AssetLocator;
 import com.jme3.asset.AssetManager;
 import com.jme3.asset.AssetManager;
+import com.jme3.asset.AssetNotFoundException;
 import java.io.File;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
 
 
 /**
 /**
@@ -82,6 +85,19 @@ public class FileLocator implements AssetLocator {
         String name = key.getName();
         String name = key.getName();
         File file = new File(root, name);
         File file = new File(root, name);
         if (file.exists() && file.isFile()){
         if (file.exists() && file.isFile()){
+            try {
+                // Now, check asset name requirements
+                String canonical = file.getCanonicalPath();
+                String absolute = file.getAbsolutePath();
+                if (!canonical.endsWith(absolute)){
+                    throw new AssetNotFoundException("Asset name doesn't match requirements.\n"+
+                                                     "\"" + canonical + "\" doesn't match \"" + absolute + "\"");
+                }
+            } catch (IOException ex) {
+                throw new AssetLoadException("Failed to get file canonical path " + file, ex);
+            }
+            
+            
             return new AssetInfoFile(manager, key, file);
             return new AssetInfoFile(manager, key, file);
         }else{
         }else{
             return null;
             return null;