Yeah, I’m against that for 2.0 GA.

Ralph

On May 20, 2014, at 8:09 PM, Gary Gregory <[email protected]> wrote:

> Java 7 keeps creeping in here and there. I'm all for making Java 7 the 
> required platform... I'm probably in the minority...
> 
> Gary
> 
> ---------- Forwarded message ----------
> From: <[email protected]>
> Date: Tue, May 20, 2014 at 11:00 PM
> Subject: svn commit: r1596446 - 
> /logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
> To: [email protected]
> 
> 
> Author: mattsicker
> Date: Wed May 21 03:00:17 2014
> New Revision: 1596446
> 
> URL: http://svn.apache.org/r1596446
> Log:
> Add empty iterator implementation (yay 1.7) along with some warning 
> suppression (it's ok to share immutable collection classes as public fields).
> 
> Modified:
>     
> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
> 
> Modified: 
> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java?rev=1596446&r1=1596445&r2=1596446&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java
>  Wed May 21 03:00:17 2014
> @@ -24,6 +24,7 @@ import java.util.Collections;
>  import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.NoSuchElementException;
> 
>  import org.apache.logging.log4j.message.ParameterizedMessage;
>  import org.apache.logging.log4j.spi.DefaultThreadContextMap;
> @@ -52,6 +53,8 @@ public final class ThreadContext  {
> 
>          private static final long serialVersionUID = 1L;
> 
> +        private static final Iterator<String> EMPTY_ITERATOR = new 
> EmptyIterator<String>();
> +
>          @Override
>          public String pop() {
>              return null;
> @@ -131,8 +134,7 @@ public final class ThreadContext  {
> 
>          @Override
>          public Iterator<String> iterator() {
> -            List<String> empty = Collections.emptyList();
> -            return empty.iterator();
> +            return EMPTY_ITERATOR;
>          }
> 
>          @Override
> @@ -143,13 +145,37 @@ public final class ThreadContext  {
>      }
> 
>      /**
> +     * An empty iterator. Since Java 1.7 added the 
> Collections.emptyIterator() method, we have to make do.
> +     * @param <E> the type of the empty iterator
> +     */
> +    private static class EmptyIterator<E> implements Iterator<E> {
> +
> +        @Override
> +        public boolean hasNext() {
> +            return false;
> +        }
> +
> +        @Override
> +        public E next() {
> +            throw new NoSuchElementException("This is an empty iterator!");
> +        }
> +
> +        @Override
> +        public void remove() {
> +            // no-op
> +        }
> +    }
> +
> +    /**
>       * Empty, immutable Map.
>       */
> +    @SuppressWarnings("PublicStaticCollectionField")
>      public static final Map<String, String> EMPTY_MAP = 
> Collections.emptyMap();
> 
>      /**
>       * Empty, immutable ContextStack.
>       */
> +    @SuppressWarnings("PublicStaticCollectionField")
>      public static final ThreadContextStack EMPTY_STACK = new 
> EmptyThreadContextStack();
> 
>      private static final String DISABLE_MAP = "disableThreadContextMap";
> @@ -334,7 +360,7 @@ public final class ThreadContext  {
>       * @param stack The stack to use.
>       */
>      public static void setStack(final Collection<String> stack) {
> -        if (stack.size() == 0 || !useStack) {
> +        if (stack.isEmpty() || !useStack) {
>              return;
>          }
>          contextStack.clear();
> 
> 
> 
> 
> 
> -- 
> E-Mail: [email protected] | [email protected] 
> Java Persistence with Hibernate, Second Edition
> JUnit in Action, Second Edition
> Spring Batch in Action
> Blog: http://garygregory.wordpress.com 
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

Reply via email to