diff options
author | Scott Barta <sbarta@google.com> | 2013-03-22 12:12:02 -0700 |
---|---|---|
committer | Scott Barta <sbarta@google.com> | 2013-03-22 12:18:39 -0700 |
commit | 48878f9e6c0c2835e2ee78a00f01883eae4cd5a7 (patch) | |
tree | 91542384866f9198f81a25a33f2f8ab2302ef48a | |
parent | c5ffbe8c638cfff814c88ae664289ee42a63a3ca (diff) | |
download | base-48878f9e6c0c2835e2ee78a00f01883eae4cd5a7.tar.gz |
Fixes getClipartNames for odd classloaders
Fixes a problem where getClipartNames failes for cases where an odd
classloader doesn't provide a workable URL for resource directories in
the jar.
Change-Id: I29138f2eec564d8c1db4609730ad0ac37d9f3716
-rw-r--r-- | asset-studio/src/main/java/com/android/assetstudiolib/GraphicGenerator.java | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/asset-studio/src/main/java/com/android/assetstudiolib/GraphicGenerator.java b/asset-studio/src/main/java/com/android/assetstudiolib/GraphicGenerator.java index 706adc809a..0a52dc3671 100644 --- a/asset-studio/src/main/java/com/android/assetstudiolib/GraphicGenerator.java +++ b/asset-studio/src/main/java/com/android/assetstudiolib/GraphicGenerator.java @@ -23,6 +23,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.net.JarURLConnection; import java.net.URISyntaxException; import java.net.URL; import java.security.ProtectionDomain; @@ -260,15 +261,26 @@ public abstract class GraphicGenerator { List<String> names = new ArrayList<String>(80); try { String pathPrefix = "images/clipart/big/"; //$NON-NLS-1$ + ZipFile zipFile = null; ProtectionDomain protectionDomain = GraphicGenerator.class.getProtectionDomain(); URL url = protectionDomain.getCodeSource().getLocation(); - File file; - try { - file = new File(url.toURI()); - } catch (URISyntaxException e) { - file = new File(url.getPath()); + if (url != null) { + File file; + try { + file = new File(url.toURI()); + } catch (URISyntaxException e) { + file = new File(url.getPath()); + } + zipFile = new JarFile(file); + } else { + Enumeration<URL> en = + GraphicGenerator.class.getClassLoader().getResources(pathPrefix); + if (en.hasMoreElements()) { + url = en.nextElement(); + JarURLConnection urlConn = (JarURLConnection)(url.openConnection()); + zipFile = urlConn.getJarFile(); + } } - final ZipFile zipFile = new JarFile(file); Enumeration<? extends ZipEntry> enumeration = zipFile.entries(); while (enumeration.hasMoreElements()) { ZipEntry zipEntry = enumeration.nextElement(); |