Request Review: JDK-6479237 (cl) Add support for classloader names
Daniel Fuchs
daniel.fuchs at oracle.com
Tue Nov 1 14:04:25 UTC 2016
Hi Mandy,
I am sure I must be missing something:
322 if (s == null) {
323 // all elements will be included
324 s = "";
325 if (classLoaderName != null &&
!classLoaderName.isEmpty()) {
326 s += classLoaderName + "/";
327 }
328 if (moduleName != null && !moduleName.isEmpty()) {
329 s += moduleName;
330 }
331 if (moduleVersion != null && !moduleVersion.isEmpty()) {
332 s += "@" + moduleVersion;
333 }
334 s += declaringClass;
335 }
but should line 334 instead be
s = (s.isEmpty() ? declaringClass : s + "/" + declaringClass;
Otherwise "/" will be missing after module at version..
Also should there be some asserts somewhere verifying that moduleVersion
is null or empty when moduleName is null or empty? At the moment the
constructor will blindly accept a version for an unnamed module,
and I am assuming this is wrong - am I right?
toLoaderModuleClassName will call ClassLoader.getName().
If a class loader overrides getName() then that might be a different
name than what StackTraceElement.getClassLoaderName() returns.
Is that an issue?
Also I wonder whether you should be considering including a fix
for https://bugs.openjdk.java.net/browse/JDK-8167099 as part
of this change (though arguably the bug has been there since
new fields were added to StackTraceElement in 9).
best regards,
-- daniel
On 28/10/16 21:44, Mandy Chung wrote:
>
>> On Oct 28, 2016, at 11:11 AM, Brent Christian <brent.christian at oracle.com> wrote:
>>
>> Should something be done for STEs returned from StackFrameInfo.toStackTraceElement() ?
>
> Good catch - I missed it. I added package-private static methods in StackTraceElement class for both Throwable and StackFrameInfo to get StackTraceElement(s).
>
> http://cr.openjdk.java.net/~mchung/jdk9/webrevs/6479237/webrev.02/
>
> Mandy
>
More information about the jigsaw-dev
mailing list