summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Barta <sbarta@google.com>2013-03-22 12:12:02 -0700
committerScott Barta <sbarta@google.com>2013-03-22 12:18:39 -0700
commit48878f9e6c0c2835e2ee78a00f01883eae4cd5a7 (patch)
tree91542384866f9198f81a25a33f2f8ab2302ef48a
parentc5ffbe8c638cfff814c88ae664289ee42a63a3ca (diff)
downloadbase-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.java24
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();