]> source.dussan.org Git - poi.git/commitdiff
fixed NPE with Jaxb proxy classes
authorAndreas Beeker <kiwiwings@apache.org>
Sat, 25 Jul 2015 00:25:07 +0000 (00:25 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sat, 25 Jul 2015 00:25:07 +0000 (00:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1692598 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/util/OOXMLLite.java

index 0503dfa766dab2cf4bd7319ea5017dc8ddfc4335..99719ba60292d2dc758598e0b96df68d276caba8 100644 (file)
@@ -24,6 +24,9 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -33,8 +36,9 @@ import java.util.Vector;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.regex.Pattern;\r
-\r
+
 import junit.framework.TestCase;\r
+
 import org.junit.Test;\r
 import org.junit.internal.TextListener;\r
 import org.junit.runner.JUnitCore;import org.junit.runner.Result;
@@ -210,14 +214,16 @@ public final class OOXMLLite {
             Vector<Class<?>> classes = (Vector<Class<?>>) _classes.get(appLoader);
             Map<String, Class<?>> map = new HashMap<String, Class<?>>();
             for (Class<?> cls : classes) {
-                // e.g. proxy-classes, ... 
-                if(cls.getProtectionDomain() == null || 
-                        cls.getProtectionDomain().getCodeSource() == null) {
-                    continue;
-                }
-
-                    String jar = cls.getProtectionDomain().getCodeSource().getLocation().toString();
-                    if(jar.indexOf(ptrn) != -1) map.put(cls.getName(), cls);
+                // e.g. proxy-classes, ...
+                ProtectionDomain pd = cls.getProtectionDomain();
+                if (pd == null) continue;
+                CodeSource cs = pd.getCodeSource();
+                if (cs == null) continue;
+                URL loc = cs.getLocation();
+                if (loc == null) continue;
+                
+                String jar = loc.toString();
+                if(jar.indexOf(ptrn) != -1) map.put(cls.getName(), cls);
             }
             return map;
         } catch (IllegalAccessException e) {