Răsfoiți Sursa

* AssetManager will now throw an exception when there are issues with loading/locating an asset

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7027 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
sha..rd 14 ani în urmă
părinte
comite
a83216731e

+ 17 - 0
engine/src/core/com/jme3/asset/AssetLoadException.java

@@ -0,0 +1,17 @@
+package com.jme3.asset;
+
+/**
+ * <code>AssetLoadException</code> is thrown when the {@link AssetManager}
+ * is able to find the requested asset, but there was a problem while loading
+ * it.
+ *
+ * @author Kirill Vainer
+ */
+public class AssetLoadException extends RuntimeException {
+    public AssetLoadException(String message){
+        super(message);
+    }
+    public AssetLoadException(String message, Throwable cause){
+        super(message, cause);
+    }
+}

+ 14 - 0
engine/src/core/com/jme3/asset/AssetNotFoundException.java

@@ -0,0 +1,14 @@
+package com.jme3.asset;
+
+/**
+ * <code>AssetNotFoundException</code> is thrown when the {@link AssetManager}
+ * is unable to locate the requested asset using any of the registered
+ * {@link AssetLocator}s.
+ *
+ * @author Kirill Vainer
+ */
+public class AssetNotFoundException extends RuntimeException {
+    public AssetNotFoundException(String message){
+        super(message);
+    }
+}

+ 13 - 19
engine/src/desktop/com/jme3/asset/DesktopAssetManager.java

@@ -192,11 +192,11 @@ public class DesktopAssetManager implements AssetManager {
     }
 
     /**
-     * This method is thread-safe.
-     * @param name
-     * @return
-     *
      * <font color="red">Thread-safe.</font>
+     *
+     * @param <T>
+     * @param key
+     * @return
      */
     public <T> T loadAsset(AssetKey<T> key){
         if (eventListener != null)
@@ -220,35 +220,29 @@ public class DesktopAssetManager implements AssetManager {
         if (o == null){
             AssetLoader loader = handler.aquireLoader(key);
             if (loader == null){
-                logger.log(Level.WARNING,"No loader registered for type {0}.",
-                                            key.getExtension());
-                return null;
+                throw new IllegalStateException("No loader registered for type \"" +
+                                                key.getExtension() + "\"");
             }
 
             if (handler.getLocatorCount() == 0){
-                logger.warning("There are no locators currently"+
-                               " registered. Use AssetManager."+
-                               "registerLocator() to register a"+
-                               " locator.");
-                return null;
+                throw new IllegalStateException("There are no locators currently"+
+                                                " registered. Use AssetManager."+
+                                                "registerLocator() to register a"+
+                                                " locator.");
             }
 
             AssetInfo info = handler.tryLocate(key);
             if (info == null){
-                logger.log(Level.WARNING, "Cannot locate resource: {0}", key);
-                return null;
+                throw new AssetNotFoundException(key.toString());
             }
 
             try {
                 o = loader.load(info);
             } catch (IOException ex) {
-                logger.log(Level.WARNING, "Failed to load resource: "+key, ex);
+                throw new AssetLoadException("An exception has occured while loading asset: " + key, ex);
             }
             if (o == null){
-                logger.log(Level.WARNING, "Error occured while loading resource {0} using {1}",
-                        new Object[]{key, loader.getClass().getSimpleName()});
-                
-                return null;
+                throw new AssetLoadException("Error occured while loading asset \"" + key + "\" using" + loader.getClass().getSimpleName());
             }else{
                 if (logger.isLoggable(Level.FINER)){
                     logger.log(Level.FINER, "Loaded {0} with {1}",

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

@@ -56,7 +56,7 @@ public class FileLocator implements AssetLocator {
 
         root = new File(rootPath);
         if (!root.isDirectory())
-            throw new RuntimeException("Given root path not a directory");
+            throw new IllegalArgumentException("Given root path \"" + root + "\" not a directory");
     }
 
     private static class AssetInfoFile extends AssetInfo {