Index: main/java/org/exolab/castor/xml/util/XMLClassDescriptorResolverImpl.java
===================================================================
--- main/java/org/exolab/castor/xml/util/XMLClassDescriptorResolverImpl.java (Revision 6897)
+++ main/java/org/exolab/castor/xml/util/XMLClassDescriptorResolverImpl.java (Arbeitskopie)
@@ -421,13 +421,25 @@
* The preferred ClassLoader
* @return The XMLClassDescriptor loaded from the
* corresponding .class file or null if the .class
- * file does not exist or does not containa valid
+ * file does not exist or does not contain a valid
* XMLClassDescriptor.
*/
private XMLClassDescriptor loadDescriptorClass(String className, ClassLoader loader) {
- String descriptorClassName = className + XMLConstants.DESCRIPTOR_SUFFIX;
- Class descriptorClass = _classCache.loadClass(descriptorClassName, this.getClassLoader(loader));
+ StringBuffer descriptorClassName = new StringBuffer(className);
+ descriptorClassName.append(XMLConstants.DESCRIPTOR_SUFFIX);
+ Class descriptorClass = _classCache.loadClass(descriptorClassName.toString(), this.getClassLoader(loader));
+
+ // If we didn't find the descriptor, look in descriptor package
if (descriptorClass == null) {
+ int offset = descriptorClassName.lastIndexOf(".");
+ if (offset != -1) {
+ descriptorClassName.insert(offset , ".");
+ descriptorClassName.insert(offset + 1, XMLConstants.DESCRIPTOR_PACKAGE);
+ descriptorClass = _classCache.loadClass(descriptorClassName.toString(), this.getClassLoader(loader));
+ }
+ }
+
+ if (descriptorClass == null) {
return null;
}
@@ -514,15 +526,6 @@
// try loading the descriptor from .class file
descriptor = this.loadDescriptorClass(className, loader);
- if (descriptor == null) {
- // If we didn't find the descriptor, look in a lower package
- int offset = className.lastIndexOf(".");
- if (offset > 0 && !className.endsWith(".")) {
- String newClassName = className.substring(0, offset+1)
- + XMLConstants.DESCRIPTOR_PACKAGE + className.substring(offset);
- descriptor = this.loadDescriptorClass(newClassName, loader);
- }
- }
if (descriptor != null) {
return descriptor;
}