Wow, that's interesting. The current problem I see with our implementation is that ThreadContext.EMPTY_STACK is not read-only while org.apache.logging.log4j.ThreadContext.EMPTY_MAP is read-only, as it should be.
Gary On Fri, May 16, 2014 at 12:07 PM, Ralph Goers <[email protected]>wrote: > Believe it or not, when I tested ArrayDeque I found that it was slower > than Stack. > > Ralph > > On May 16, 2014, at 7:33 AM, Gary Gregory <[email protected]> wrote: > > It's also hard to think of a "stack" as _not_ being a "collection". > > This is a good time to talk about it since we'll be stuck with it when we > ship 2.0. > > Also I could understand why we would not want a java.util.Stack since it > is a Vector, but Java offers ArrayDeque. So why not use that? > > Gary > > > On Fri, May 16, 2014 at 10:29 AM, Gary Gregory <[email protected]>wrote: > >> All of the ThreadContextStack implementations we have are Collections >> though... (that was the case before the refactoring) >> >> Gary >> >> >> On Thu, May 15, 2014 at 11:19 AM, Ralph Goers < >> [email protected]> wrote: >> >>> I actually dislike ThreadContextStack but it is there for compatibility >>> with Log4j 1.x. I guess there are people who use it. I didn’t make it a >>> Collection in the first place for the exact reasons you mention - they >>> aren’t used. >>> >>> Ralph >>> >>> On May 14, 2014, at 9:24 PM, Remko Popma <[email protected]> wrote: >>> >>> > Well, the difference is that now the api (the >>> ThreadContext.ContextStack interface) extends Collection, so all >>> implementations now *must* support all methods declared on Collection. This >>> was not a requirement before. >>> > (Not sure why spi.ThreadContextStack extends Collection, by the way. >>> ThreadContext will not use these methods...) >>> > >>> > Remko >>> > >>> > Sent from my iPhone >>> > >>> >> On 2014/05/08, at 4:35, [email protected] wrote: >>> >> >>> >> Author: ggregory >>> >> Date: Wed May 7 19:35:45 2014 >>> >> New Revision: 1593125 >>> >> >>> >> URL: http://svn.apache.org/r1593125 >>> >> Log: >>> >> ThreadContext.ContextStack is already (conceptually) a collection of >>> Strings so it should be a Collection<String> instead of it's sub-interface >>> ThreadContextStack being a Collection<String>. What's the value of >>> ThreadContextStack now? Should we keep it as a placeholder? It is not >>> documented in its Javadoc. Note that all implementations of ContextStack >>> are implementations of ThreadContextStack, so this change has no effect on >>> implementors. Note that Log4jLogEvent holds a ContextStack so this makes it >>> a Collection<String> which happens to save a lot of work for XML and JSON >>> IO for the Jackson based receivers and layouts I am working on. >>> >> >>> >> Modified: >>> >> >>> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java >>> >> >>> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.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=1593125&r1=1593124&r2=1593125&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 7 19:35:45 2014 >>> >> @@ -347,12 +347,7 @@ public final class ThreadContext { >>> >> /** >>> >> * The ThreadContext Stack interface. >>> >> */ >>> >> - public interface ContextStack extends Serializable { >>> >> - >>> >> - /** >>> >> - * Clears all elements from the stack. >>> >> - */ >>> >> - void clear(); >>> >> + public interface ContextStack extends Serializable, >>> Collection<String> { >>> >> >>> >> /** >>> >> * Returns the element at the top of the stack. >>> >> >>> >> Modified: >>> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java >>> >> URL: >>> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java?rev=1593125&r1=1593124&r2=1593125&view=diff >>> >> >>> ============================================================================== >>> >> --- >>> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java >>> (original) >>> >> +++ >>> logging/log4j/log4j2/trunk/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextStack.java >>> Wed May 7 19:35:45 2014 >>> >> @@ -16,12 +16,10 @@ >>> >> */ >>> >> package org.apache.logging.log4j.spi; >>> >> >>> >> -import java.util.Collection; >>> >> - >>> >> import org.apache.logging.log4j.ThreadContext; >>> >> >>> >> /** >>> >> * >>> >> */ >>> >> -public interface ThreadContextStack extends >>> ThreadContext.ContextStack, Collection<String> { >>> >> +public interface ThreadContextStack extends >>> ThreadContext.ContextStack { >>> >> } >>> >> >>> >> >>> > >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: [email protected] >>> > For additional commands, e-mail: [email protected] >>> > >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >> >> >> -- >> E-Mail: [email protected] | [email protected] >> Java Persistence with Hibernate, Second >> Edition<http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: [email protected] | [email protected] > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > -- E-Mail: [email protected] | [email protected] Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory
