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);
+ }
}