Thank you! I didn't get a chance to work on this yesterday. 

Sent from my iPhone

> On 2014/05/19, at 6:52, [email protected] wrote:
> 
> Author: ggregory
> Date: Sun May 18 21:52:43 2014
> New Revision: 1595698
> 
> URL: http://svn.apache.org/r1595698
> Log:
> org.apache.logging.log4j.core.LogEvent.getContextMap() should never return 
> null. Remove the getContextMap(String) API (aka getContextMapValue(String). 
> The FlumeEvent is a little different and can indeed hold a null context map. 
> All tests pass from Maven.
> 
> Modified:
>    
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
>    
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
>    
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
>    
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
>    
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
>    
> logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
>    
> logging/log4j/log4j2/trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
>  Sun May 18 21:52:43 2014
> @@ -16,6 +16,7 @@
>  */
> package org.apache.logging.log4j.core;
> 
> +import java.util.Collections;
> import java.util.Map;
> 
> import org.apache.logging.log4j.Level;
> @@ -31,14 +32,12 @@ public abstract class AbstractLogEvent i
> 
>     private static final long serialVersionUID = 1L;
> 
> +    /**
> +     * Returns {@link Collections#emptyMap()}.
> +     */
>     @Override
>     public Map<String, String> getContextMap() {
> -        return null;
> -    }
> -
> -    @Override
> -    public String getContextMap(String key) {
> -        return null;
> +        return Collections.emptyMap();
>     }
> 
>     @Override
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
>  Sun May 18 21:52:43 2014
> @@ -34,21 +34,11 @@ public interface LogEvent extends Serial
>     /**
>      * Gets the context map (also know as MDC).
>      * 
> -     * @return A copy of the Mapped Diagnostic Context or null.
> +     * @return A copy of the Mapped Diagnostic Context, never {@code null}.
>      */
>     Map<String, String> getContextMap();
> 
>     /**
> -     * Gets the value at the given key in the context map.
> -     * 
> -     * @param key the key to query
> -     * @return the value to which the specified key is mapped, or {@code 
> null} if this map contains no mapping for the key or there is no
> -     *         map.
> -     */
> -    @Deprecated
> -    String getContextMap(String key);
> -
> -    /**
>      * Gets the context stack (also known as NDC).
>      * 
>      * @return A copy of the Nested Diagnostic Context or null;
> @@ -130,9 +120,9 @@ public interface LogEvent extends Serial
>     ThrowableProxy getThrownProxy();
> 
>     /**
> -     * Returns {@code true} if this event is the last one in a batch, {@code 
> false} otherwise. Used by asynchronous
> -     * Loggers and Appenders to signal to buffered downstream components 
> when to flush to disk, as a more efficient
> -     * alternative to the {@code immediateFlush=true} configuration.
> +     * Returns {@code true} if this event is the last one in a batch, {@code 
> false} otherwise. Used by asynchronous Loggers and Appenders to
> +     * signal to buffered downstream components when to flush to disk, as a 
> more efficient alternative to the {@code immediateFlush=true}
> +     * configuration.
>      * 
>      * @return whether this event is the last one in a batch.
>      */
> @@ -140,9 +130,8 @@ public interface LogEvent extends Serial
>     boolean isEndOfBatch();
> 
>     /**
> -     * Returns whether the source of the logging request is required 
> downstream. Asynchronous Loggers and Appenders use
> -     * this flag to determine whether to take a {@code StackTrace} snapshot 
> or not before handing off this event to
> -     * another thread.
> +     * Returns whether the source of the logging request is required 
> downstream. Asynchronous Loggers and Appenders use this flag to
> +     * determine whether to take a {@code StackTrace} snapshot or not before 
> handing off this event to another thread.
>      * 
>      * @return {@code true} if the source of the logging request is required 
> downstream, {@code false} otherwise.
>      * @see #getSource()
> @@ -151,22 +140,18 @@ public interface LogEvent extends Serial
>     boolean isIncludeLocation();
> 
>     /**
> -     * Sets whether this event is the last one in a batch. Used by 
> asynchronous Loggers and Appenders to signal to
> -     * buffered downstream components when to flush to disk, as a more 
> efficient alternative to the
> -     * {@code immediateFlush=true} configuration.
> +     * Sets whether this event is the last one in a batch. Used by 
> asynchronous Loggers and Appenders to signal to buffered downstream
> +     * components when to flush to disk, as a more efficient alternative to 
> the {@code immediateFlush=true} configuration.
>      * 
> -     * @param endOfBatch
> -     *            {@code true} if this event is the last one in a batch, 
> {@code false} otherwise.
> +     * @param endOfBatch {@code true} if this event is the last one in a 
> batch, {@code false} otherwise.
>      */
>     void setEndOfBatch(boolean endOfBatch);
> 
>     /**
> -     * Sets whether the source of the logging request is required 
> downstream. Asynchronous Loggers and Appenders use
> -     * this flag to determine whether to take a {@code StackTrace} snapshot 
> or not before handing off this event to
> -     * another thread.
> +     * Sets whether the source of the logging request is required 
> downstream. Asynchronous Loggers and Appenders use this flag to determine
> +     * whether to take a {@code StackTrace} snapshot or not before handing 
> off this event to another thread.
>      * 
> -     * @param locationRequired
> -     *            {@code true} if the source of the logging request is 
> required downstream, {@code false} otherwise.
> +     * @param locationRequired {@code true} if the source of the logging 
> request is required downstream, {@code false} otherwise.
>      * @see #getSource()
>      */
>     void setIncludeLocation(boolean locationRequired);
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java
>  Sun May 18 21:52:43 2014
> @@ -207,18 +207,6 @@ public abstract class BasicLogEventEntit
>     }
> 
>     /**
> -     * Gets the value at the given key in the context map.
> -     * 
> -     * @param key the key to query
> -     * @return the value to which the specified key is mapped, or {@code 
> null} if this map contains no mapping for the key or there is no
> -     *         map.
> -     */
> -    @Override
> -    public String getContextMap(String key) {
> -        return this.getWrappedEvent().getContextMap(key);
> -    }
> -
> -    /**
>      * Gets the context stack. Annotated with {@code @Convert(converter = 
> ContextStackAttributeConverter.class)}.
>      *
>      * @return the context stack.
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
>  Sun May 18 21:52:43 2014
> @@ -164,15 +164,15 @@ public class RingBufferLogEvent implemen
>    }
> 
>    @Override
> -    public Throwable getThrown() {
> -        // after deserialization, thrown is null but thrownProxy may be 
> non-null
> -        if (thrown == null) {
> -            if (thrownProxy != null) {
> -                thrown = thrownProxy.getThrowable();
> -            }
> -        }
> -  return thrown;
> -    }
> +    public Throwable getThrown() {
> +        // after deserialization, thrown is null but thrownProxy may be 
> non-null
> +        if (thrown == null) {
> +            if (thrownProxy != null) {
> +                thrown = thrownProxy.getThrowable();
> +            }
> +        }
> +        return thrown;
> +    }
> 
>    @Override
>    public ThrowableProxy getThrownProxy() {
> @@ -190,11 +190,6 @@ public class RingBufferLogEvent implemen
>        return contextMap;
>    }
> 
> -    @Override
> -    public String getContextMap(String key) {
> -        return contextMap == null ? null : contextMap.get(key);
> -    }
> -
>    @Override
>    public ContextStack getContextStack() {
>        return contextStack;
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
>  Sun May 18 21:52:43 2014
> @@ -168,7 +168,7 @@ public class Log4jLogEvent implements Lo
>         this.level = (level == null) ? Level.OFF : level; // LOG4J2-462, 
> LOG4J2-465
>         this.message = message;
>         this.thrownProxy = thrownProxy;
> -        this.contextMap = contextMap;
> +        this.contextMap = contextMap == null ? ThreadContext.EMPTY_MAP : 
> contextMap;
>         this.contextStack = contextStack;
>         this.timeMillis = message instanceof TimestampMessage ? 
> ((TimestampMessage) message).getTimestamp() : timestamp;
>         this.threadName = threadName;
> @@ -287,7 +287,7 @@ public class Log4jLogEvent implements Lo
>      */
>     @Override
>     public Map<String, String> getContextMap() {
> -        return contextMap == null ? ThreadContext.EMPTY_MAP : contextMap;
> +        return contextMap;
>     }
> 
>     /**
> @@ -300,18 +300,6 @@ public class Log4jLogEvent implements Lo
>     }
> 
>     /**
> -     * Gets the value at the given key in the context map.
> -     * 
> -     * @param key the key to query
> -     * @return the value to which the specified key is mapped, or {@code 
> null} if this map contains no mapping for the key or there is no
> -     *         map.
> -     */
> -    @Override
> -    public String getContextMap(String key) {
> -        return contextMap == null ? null : contextMap.get(key);
> -    }
> -
> -    /**
>      * Returns the StackTraceElement for the caller. This will be the entry 
> that occurs right
>      * before the first occurrence of FQCN as a class name.
>      * @return the StackTraceElement for the caller.
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
>  Sun May 18 21:52:43 2014
> @@ -143,11 +143,6 @@ public class TestBaseEntity extends Abst
>     }
> 
>     @Override
> -    public String getContextMap(String key) {
> -        return this.getWrappedEvent().getContextMap(key);
> -    }
> -
> -    @Override
>     @Transient
>     public ThreadContext.ContextStack getContextStack() {
>         return this.getWrappedEvent().getContextStack();
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java?rev=1595698&r1=1595697&r2=1595698&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
>  Sun May 18 21:52:43 2014
> @@ -295,18 +295,6 @@ public class FlumeEvent extends SimpleEv
>     }
> 
>     /**
> -     * Gets the value at the given key in the context map.
> -     * 
> -     * @param key the key to query
> -     * @return the value to which the specified key is mapped, or {@code 
> null} if this map contains no mapping for the key or there is no
> -     *         map.
> -     */
> -    @Override
> -    public String getContextMap(String key) {
> -        return contextMap == null ? null : contextMap.get(key);
> -    }
> -
> -    /**
>      * Returns a copy of the context stack.
>      * @return a copy of the context stack.
>      */
> 
> 

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

Reply via email to