Sorry, I don't use that part of the framework and the code is too confusing to write a simple pass/fail JUnit test (I gave it a 15-minute try). But consider this: to load a nested class, you must convert the '.' delimiters between it and its parent classes to '$', and I couldn't find code that does this anywhere within QDox.
Also, the design for resolving types is wrong. You can't just resolve types at the compilation unit (JavaSource) level since local context matters. Consider:
package foo;
class Outer {
Inner field1;
class Inner
{
Outer.Inner field2;
}
}
Both field types should resolve to fully qualified type names foo.Outer.Inner, and be converted to binary type names foo.Outer$Inner for classloading. For field1, QDox lacks the class context to realize that it should be qualified with Outer. For field2, it'll consider it as a fully qualified name, and not add the package prefix.
You can get into even more complex situations where outer class names have been implicitly or explicitly imported...
Piotr, any chance you could upload a testcase? It's ok if it fails, but a proper testcase makes it easier for us to fix the bug.