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