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
> JUnit in Action, Second Edition
> Spring Batch in Action
> 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
> 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