Author: lukaszlenart Date: Fri Oct 22 08:39:27 2010 New Revision: 1026245 URL: http://svn.apache.org/viewvc?rev=1026245&view=rev Log: Applied patch to solve WW-3486 - NPE when struts.convention.classes.reload is set to true
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java?rev=1026245&r1=1026244&r2=1026245&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/classloader/ResourceStoreClassLoader.java Fri Oct 22 08:39:27 2010 @@ -41,6 +41,7 @@ public final class ResourceStoreClassLoa for (final ResourceStore store : stores) { final byte[] clazzBytes = store.read(fileName); if (clazzBytes != null) { + definePackage(name); return defineClass(name, clazzBytes, 0, clazzBytes.length); } } @@ -80,4 +81,22 @@ public final class ResourceStoreClassLoa } return clazz; } + + /** + * Define the package information associated with a class. + * + * @param className the class name of for which the package information + * is to be determined. + */ + protected void definePackage(String className){ + int classIndex = className.lastIndexOf('.'); + if (classIndex == -1) { + return; + } + String packageName = className.substring(0, classIndex); + if (getPackage(packageName) != null) { + return; + } + definePackage(packageName, null, null, null, null, null, null, null); + } }