Return-Path: X-Original-To: apmail-logging-log4j-dev-archive@www.apache.org Delivered-To: apmail-logging-log4j-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1C8CE114DC for ; Wed, 21 May 2014 05:34:35 +0000 (UTC) Received: (qmail 99943 invoked by uid 500); 21 May 2014 05:34:35 -0000 Delivered-To: apmail-logging-log4j-dev-archive@logging.apache.org Received: (qmail 99889 invoked by uid 500); 21 May 2014 05:34:35 -0000 Mailing-List: contact log4j-dev-help@logging.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Log4J Developers List" Reply-To: "Log4J Developers List" Delivered-To: mailing list log4j-dev@logging.apache.org Received: (qmail 99881 invoked by uid 99); 21 May 2014 05:34:35 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 May 2014 05:34:34 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of ralph.goers@dslextreme.com designates 209.85.160.47 as permitted sender) Received: from [209.85.160.47] (HELO mail-pb0-f47.google.com) (209.85.160.47) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 May 2014 05:34:30 +0000 Received: by mail-pb0-f47.google.com with SMTP id rp16so1045963pbb.6 for ; Tue, 20 May 2014 22:34:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:content-type:message-id:mime-version :subject:date:references:to:in-reply-to; bh=hh2R9D+rdko0QM5y9MA+mQI5hkRDBddxTuWBGSd6Eg4=; b=Y2+X7uIi55Z6pgu5AonP2W8eehQZeGHjv/aN9QfgXp2ADfArUoRXERJp2pB+offh5A iXghOqnfDwSqrQkzrEDx47Iw21K4/bLmlmMpTVvoDSJ0s+u609xqv869OPxqTaLT5tbk JnQ50XUoK0ojUKFKrEfkVsJwWALCb24ERBb0Uczyn4PTd23aOZI3DpTOv4DEjrJANoB3 1c7OF8HwwcvHzdH0OtiMU8hdlyNkCzHjwRIZQF5ihAs/HO78HI2/qanLMcJ+RnVm8jZ0 SrE8zin89odb1q7B4uQUnmb3eh7Or1YNnWYFrLviBmdjx9ZOgptWtTwIjz07wwZo2rmc 4wWw== X-Gm-Message-State: ALoCoQmeArZJSgy1iwjCiRfqsWJC088D++y+g2GRlLWsNAchVmmNeryq1tgrTJuuFJRsDenlNfBZ X-Received: by 10.68.237.133 with SMTP id vc5mr56058167pbc.92.1400650445694; Tue, 20 May 2014 22:34:05 -0700 (PDT) Received: from [192.168.10.64] (99-180-69-21.lightspeed.irvnca.sbcglobal.net. [99.180.69.21]) by mx.google.com with ESMTPSA id au4sm6056391pbc.10.2014.05.20.22.34.04 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 20 May 2014 22:34:05 -0700 (PDT) X-Google-Original-From: Ralph Goers From: Ralph Goers Content-Type: multipart/alternative; boundary="Apple-Mail=_143EF2C4-AA59-44C4-B082-E13ED89C21C1" Message-Id: <5C7871F8-6799-4BE3-AAC5-CDEED0421116@dslextreme.com> Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\)) Subject: Re: svn commit: r1596446 - /logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java Date: Tue, 20 May 2014 22:33:56 -0700 References: <20140521030017.8B10F2388AAA@eris.apache.org> To: Log4J Developers List In-Reply-To: X-Mailer: Apple Mail (2.1874) X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail=_143EF2C4-AA59-44C4-B082-E13ED89C21C1 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 Yeah, I=92m against that for 2.0 GA. Ralph On May 20, 2014, at 8:09 PM, Gary Gregory = 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... >=20 > Gary >=20 > ---------- Forwarded message ---------- > From: > 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/log= 4j/ThreadContext.java > To: commits@logging.apache.org >=20 >=20 > Author: mattsicker > Date: Wed May 21 03:00:17 2014 > New Revision: 1596446 >=20 > 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). >=20 > Modified: > = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/ThreadContext.java >=20 > Modified: = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/ThreadContext.java > URL: = http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main= /java/org/apache/logging/log4j/ThreadContext.java?rev=3D1596446&r1=3D15964= 45&r2=3D1596446&view=3Ddiff > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/ThreadContext.java (original) > +++ = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/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; >=20 > import org.apache.logging.log4j.message.ParameterizedMessage; > import org.apache.logging.log4j.spi.DefaultThreadContextMap; > @@ -52,6 +53,8 @@ public final class ThreadContext { >=20 > private static final long serialVersionUID =3D 1L; >=20 > + private static final Iterator EMPTY_ITERATOR =3D new = EmptyIterator(); > + > @Override > public String pop() { > return null; > @@ -131,8 +134,7 @@ public final class ThreadContext { >=20 > @Override > public Iterator iterator() { > - List empty =3D Collections.emptyList(); > - return empty.iterator(); > + return EMPTY_ITERATOR; > } >=20 > @Override > @@ -143,13 +145,37 @@ public final class ThreadContext { > } >=20 > /** > + * An empty iterator. Since Java 1.7 added the = Collections.emptyIterator() method, we have to make do. > + * @param the type of the empty iterator > + */ > + private static class EmptyIterator implements Iterator { > + > + @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 EMPTY_MAP =3D = Collections.emptyMap(); >=20 > /** > * Empty, immutable ContextStack. > */ > + @SuppressWarnings("PublicStaticCollectionField") > public static final ThreadContextStack EMPTY_STACK =3D new = EmptyThreadContextStack(); >=20 > private static final String DISABLE_MAP =3D = "disableThreadContextMap"; > @@ -334,7 +360,7 @@ public final class ThreadContext { > * @param stack The stack to use. > */ > public static void setStack(final Collection stack) { > - if (stack.size() =3D=3D 0 || !useStack) { > + if (stack.isEmpty() || !useStack) { > return; > } > contextStack.clear(); >=20 >=20 >=20 >=20 >=20 > --=20 > E-Mail: garydgregory@gmail.com | ggregory@apache.org=20 > Java Persistence with Hibernate, Second Edition > JUnit in Action, Second Edition > Spring Batch in Action > Blog: http://garygregory.wordpress.com=20 > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory --Apple-Mail=_143EF2C4-AA59-44C4-B082-E13ED89C21C1 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252
Yeah, I=92m against that for 2.0 = GA.

Ralph

On May 20, 2014, = at 8:09 PM, Gary Gregory <garydgregory@gmail.com> = 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: <mattsicker@apache.org>=
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/log= 4j/ThreadContext.java
To: commits@logging.apache.org<= br>

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/log4= j/ThreadContext.java

Modified: = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/ThreadContext.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/= log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java?rev=3D= 1596446&r1=3D1596445&r2=3D1596446&view=3Ddiff
= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D
--- = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/ThreadContext.java (original)
+++ = logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4= j/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 =3D 1L;

+        private static final Iterator<String> = EMPTY_ITERATOR =3D 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 =3D = 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 =3D Collections.emptyMap();

     /**
      * Empty, immutable ContextStack.
      */
+    @SuppressWarnings("PublicStaticCollectionField")
     public static final ThreadContextStack EMPTY_STACK =3D= new EmptyThreadContextStack();

     private static final String DISABLE_MAP =3D = "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() =3D=3D 0 || !useStack) = {
+        if (stack.isEmpty() || !useStack) {
             return;
         }
         contextStack.clear();





--

= --Apple-Mail=_143EF2C4-AA59-44C4-B082-E13ED89C21C1--