diff --git a/engine/src/core/com/jme3/asset/AssetLoadException.java b/engine/src/core/com/jme3/asset/AssetLoadException.java new file mode 100644 index 000000000..a0139aa4b --- /dev/null +++ b/engine/src/core/com/jme3/asset/AssetLoadException.java @@ -0,0 +1,17 @@ +package com.jme3.asset; + +/** + * AssetLoadException 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); + } +} diff --git a/engine/src/core/com/jme3/asset/AssetNotFoundException.java b/engine/src/core/com/jme3/asset/AssetNotFoundException.java new file mode 100644 index 000000000..25dfba9b1 --- /dev/null +++ b/engine/src/core/com/jme3/asset/AssetNotFoundException.java @@ -0,0 +1,14 @@ +package com.jme3.asset; + +/** + * AssetNotFoundException 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); + } +} diff --git a/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java b/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java index f4ed1dd68..b28171ee9 100644 --- a/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java +++ b/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 - * * Thread-safe. + * + * @param + * @param key + * @return */ public T loadAsset(AssetKey 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}", diff --git a/engine/src/desktop/com/jme3/asset/plugins/FileLocator.java b/engine/src/desktop/com/jme3/asset/plugins/FileLocator.java index 3f7a0938a..63bcf86da 100644 --- a/engine/src/desktop/com/jme3/asset/plugins/FileLocator.java +++ b/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 {