fixed NPE with Jaxb proxy classes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1692598 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2015-07-25 00:25:07 +00:00
parent f5e9adea84
commit 5d267dd16d
1 changed files with 15 additions and 9 deletions

View 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;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.internal.TextListener;
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) {