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
