[ 
https://issues.apache.org/jira/browse/LOG4J2-477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13856265#comment-13856265
 ] 

Remko Popma edited comment on LOG4J2-477 at 12/24/13 10:44 AM:
---------------------------------------------------------------

Tal, thanks for checking!
I've made the following change:

{code}
private LoggerContext locateContext(final ClassLoader loaderOrNull, final URI 
configLocation) {
    final ClassLoader loader = loaderOrNull != null ? loaderOrNull : 
ClassLoader.getSystemClassLoader();
    final String name = loader.toString();
...
        CONTEXT_MAP.putIfAbsent(name, r);
        ctx = CONTEXT_MAP.get(name).get().get();
...
{code}

This preserves the semantics of the original code: it ensure that the 
CONTEXT_MAP _always_ has a value for the classloader name.

The only assumption I'm making when fixing this bug is that if {{null}} is 
passed in as the classLoader, then the system class loader is an appropriate 
replacement. To be honest I am not 100% sure this is correct, but I figured it 
is better than a NullPointerException...

Fixed in revision 1553262.
Please verify and close.


was (Author: [email protected]):
Tal, thanks for checking!
I've made the following change:

{code}
private LoggerContext locateContext(final ClassLoader loaderOrNull, final URI 
configLocation) {
    final ClassLoader loader = loaderOrNull != null ? loaderOrNull : 
ClassLoader.getSystemClassLoader();
    final String name = loader.toString();
...
        CONTEXT_MAP.putIfAbsent(name, r);
        ctx = CONTEXT_MAP.get(name).get().get();
...
{code}

This preserves the semantics of the original code: it ensure that the 
CONTEXT_MAP _always_ has a value for the classloader name.

The only assumption I'm making when fixing this bug is that if {{null}} is 
passed in as the classLoader, then the system class loader is an appropriate 
replacement. To be honest I am not 100% sure this is correct, but I figured it 
is better than a NullPointerException...

> NPE in ClassLoaderContextSelector
> ---------------------------------
>
>                 Key: LOG4J2-477
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-477
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 2.0-beta9
>            Reporter: Tal Liron
>            Assignee: Remko Popma
>
> The problem is that some classes don't have class loaders: this can happen 
> when working with dynamic JVM languages (Rhino, Jython, etc.)
> Here's the stack trace I got:
> {code}
> java.lang.NullPointerException
>       at 
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:182)
>       at 
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:145)
>       at 
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:81)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:83)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to