And an example: /** * HTTP/2 compatible extension of {@link RequestConnControl}. * * @since 5.0 */ @Contract(threading = ThreadingBehavior.IMMUTABLE) public class H2RequestConnControl extends RequestConnControl { ...
Gary On Tue, Nov 29, 2016 at 6:40 PM, Gary Gregory <garydgreg...@gmail.com> wrote: > FYI, this is how we're going to do it in HttpComponents 5: > https://svn.apache.org/repos/asf/httpcomponents/ > httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/ > annotation/ThreadingBehavior.java > > Gary > > On Tue, Nov 29, 2016 at 2:20 PM, Gary Gregory <garydgreg...@gmail.com> > wrote: > >> On Tue, Nov 29, 2016 at 1:59 PM, Benedikt Ritter <brit...@apache.org> >> wrote: >> >>> I agree with Oliver. I don't think we have consensus about if and how we >>> want to implement this. Does it even make sense to try to document this? >>> What value does such a documentation have, when it is wrong 50% of the >>> time? I just sumed up the feedback I got from one (!) user at the >>> conference. I think this needs more thought. This is why I suggested to >>> create a PR instead of committing this directly to master. >>> >> >> This is a good discussion. Let's keep in mind the audience for these new >> annotations: >> >> - Commons Lang >> - All of Commons >> - Any Java code. >> >> Just because we may not get to document thread safety properly in Commons >> Lang does not mean that any other developers will fail similarly. >> >> My goal is not to decorate all of Commons Lang with these new annotations >> and certainly not to take on the task of documenting all of Commons ;-) >> >> I look at these annotations as a tool, a Commons way of using annotations >> where some folks best see fit. >> >> Providing these annotations is one thing, using them another ;-) >> >> Gary >> >> >>> >>> Regards. >>> Benedikt >>> >>> Gary Gregory <garydgreg...@gmail.com> schrieb am Di. 29. Nov. 2016 um >>> 22:33: >>> >>> > On Tue, Nov 29, 2016 at 1:12 PM, Oliver Heger < >>> > oliver.he...@oliver-heger.de> >>> > wrote: >>> > >>> > > >>> > > >>> > > Am 28.11.2016 um 22:28 schrieb Gary Gregory: >>> > > > WRT licensing, I re-implemented the annotations in git master. >>> Notice >>> > > that >>> > > > all Javadocs are different and much simpler for now. Feel free to >>> write >>> > > > more. >>> > > >>> > > As the length of this thread shows, using annotations for the >>> purpose of >>> > > documenting thread-safety can be a controversial topic. >>> > > >>> > >>> > How is the length of a thread a reflection of its controversy? >>> > >>> > >>> > > I do not see the advantage over a plain text documentation in >>> Javadoc. >>> > > Written text can even be more comprehensive. >>> > > >>> > >>> > One does not exclude the other. Annotations are easy to search. Text in >>> > Javadoc is subject to typos and formatting oddities that makes it much >>> > harder to search. >>> > >>> > Tools can work with annotations. >>> > >>> > >>> > > >>> > > The risk that the documentation goes out of sync with the >>> implementation >>> > > is given in both scenarios. But if a class announced as thread-safe >>> is >>> > > manipulated in a way that it is no longer thread-safe, I would >>> consider >>> > > this as a bug. This is also a kind of backwards-incompatible change. >>> > > >>> > >>> > That has nothing to do with annotations. If we change behavior in some >>> > incompatible way, that's the bug. >>> > >>> > I can interpret what you wrote as: If I remove an @Override annotation, >>> > then that is backwards-incompatible change. That sounds extreme. >>> > >>> > I do not think we have talked about annotations in the context of >>> backwards >>> > compatibility. Does this deserve a separate discussion? >>> > >>> > a third penny, >>> > Gary >>> > >>> > >>> > > >>> > > My 2 cents >>> > > Oliver >>> > > >>> > > > >>> > > > Gary >>> > > > >>> > > > On Mon, Nov 28, 2016 at 12:55 PM, Gary Gregory < >>> garydgreg...@gmail.com >>> > > >>> > > > wrote: >>> > > > >>> > > >> On Mon, Nov 28, 2016 at 12:18 PM, Matt Benson < >>> gudnabr...@gmail.com> >>> > > >> wrote: >>> > > >> >>> > > >>> I hoped to stay out of this. :) Points: >>> > > >>> >>> > > >>> * "provided" scope is another Maven mechanism that compiles >>> against a >>> > > >>> given dependency but does not pull the dependency in as a runtime >>> > > >>> dependency. I personally prefer it to marking a dependency >>> optional. >>> > > >>> * For annotations with only classfile retention, a future package >>> > > >>> rename e.g. lang4 would not require a consumer to upgrade just >>> for >>> > the >>> > > >>> renamed annotation, though nothing would stop them from doing >>> so. A >>> > > >>> given project could depend on either or both of lang3 and lang4 >>> in >>> > any >>> > > >>> combination of compile-only or runtime-inclusive scope with no >>> > > >>> problems. >>> > > >>> * A standalone annotations component might be interesting, but >>> I'm >>> > not >>> > > >>> sure if the proposed annotations constitute a critical mass >>> adequate >>> > > >>> to justify it. >>> > > >>> >>> > > >> >>> > > >> I would have a hard time justifying a commons-lang3-annotations >>> module >>> > > >> with only these 4 annotations. >>> > > >> >>> > > >> I could see having a Commons Annotations component though which >>> for >>> > good >>> > > >> or bad would hold all annotations one could imagine having the >>> Commons >>> > > >> world. Hm... it smells a bit though... >>> > > >> >>> > > >> Gary >>> > > >> >>> > > >> >>> > > >>> >>> > > >>> Matt >>> > > >>> >>> > > >>> On Mon, Nov 28, 2016 at 1:21 PM, Pascal Schumacher >>> > > >>> <pascalschumac...@gmx.net> wrote: >>> > > >>>> Groovy had to change the license of its documentation from CC-A >>> 3.0 >>> > to >>> > > >>> the >>> > > >>>> Apache License during incubation: >>> > > >>>> >>> > > >>>> https://issues.apache.org/jira/browse/LEGAL-167 >>> > > >>>> http://markmail.org/message/2e7tehlwtpx625q4 >>> > > >>>> https://issues.apache.org/jira/browse/GROOVY-7470 >>> > > >>>> >>> > > >>>> So I guess Commons is probably not allowed to use these files. >>> > > >>>> >>> > > >>>> >>> > > >>>> Am 28.11.2016 um 18:58 schrieb Gary Gregory: >>> > > >>>>> >>> > > >>>>> On Mon, Nov 28, 2016 at 7:15 AM, Jochen Wiedmann >>> > > >>>>> <jochen.wiedm...@gmail.com> >>> > > >>>>> wrote: >>> > > >>>>> >>> > > >>>>>> On Mon, Nov 28, 2016 at 4:06 PM, sebb <seb...@gmail.com> >>> wrote: >>> > > >>>>>> >>> > > >>>>>>> The code would not run without the JCIP jar. >>> > > >>>>>> >>> > > >>>>>> Are there licensing issues regarding that jar? >>> > > >>>>>> >>> > > >>>>> Hm, according to https://www.apache.org/legal/resolved.html, >>> the >>> > > >>> license >>> > > >>>>> "Creative Commons Attribution (CC-A) 2.5" is discussed in the >>> > section >>> > > >>> "HOW >>> > > >>>>> SHOULD "WEAK COPYLEFT" LICENSES BE HANDLED?" >>> > > >>>>> >>> > > >>>>> It looks like we might have an issue but this is not clear to >>> me as >>> > > >>> IANAL. >>> > > >>>>> I you look at the license summary >>> > > >>>>> https://creativecommons.org/licenses/by/2.5/ it sure seems >>> OK, but >>> > > our >>> > > >>>>> resolved.html has this license on a list of licenses to watch >>> out >>> > > for. >>> > > >>>>> >>> > > >>>>> So to be on the safe side, how do we best re-implement these? >>> The >>> > > >>>>> annotation names we can keep as is but I would imagine that >>> we'd >>> > want >>> > > >>> to >>> > > >>>>> re-write the Javadoc from scratch. >>> > > >>>>> >>> > > >>>>> Thoughts? >>> > > >>>>> >>> > > >>>>> Gary >>> > > >>>>> >>> > > >>>>> >>> > > >>>>>> Jochen >>> > > >>>>>> >>> > > >>>>>> >>> > > >>>>>> -- >>> > > >>>>>> The next time you hear: "Don't reinvent the wheel!" >>> > > >>>>>> >>> > > >>>>>> http://www.keystonedevelopment.co.uk/wp-content/uploads/2014 >>> /10/ >>> > > >>>>>> evolution-of-the-wheel-300x85.jpg >>> > > >>>>>> >>> > > >>>>>> ------------------------------------------------------------ >>> > > --------- >>> > > >>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > >>>>>> For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >>>>>> >>> > > >>>>>> >>> > > >>>>> >>> > > >>>> >>> > > >>>> >>> > > >>>> >>> > --------------------------------------------------------------------- >>> > > >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > >>>> For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >>>> >>> > > >>> >>> > > >>> ------------------------------------------------------------ >>> --------- >>> > > >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > >>> For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >>> >>> > > >>> >>> > > >> >>> > > >> >>> > > >> -- >>> > > >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> > > >> Java Persistence with Hibernate, Second Edition >>> > > >> <https://www.amazon.com/gp/product/1617290459/ref=as_li_ >>> > > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& >>> > > linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b >>> 1af9fe6a2b8> >>> > > >> >>> > > >> <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= >>> > > 1617290459> >>> > > >> JUnit in Action, Second Edition >>> > > >> <https://www.amazon.com/gp/product/1935182021/ref=as_li_ >>> > > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& >>> > > >>> > linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac >>> 902a24de418%22 >>> > > > >>> > > >> >>> > > >> <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= >>> > > 1935182021> >>> > > >> Spring Batch in Action >>> > > >> <https://www.amazon.com/gp/product/1935182951/ref=as_li_ >>> > > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951& >>> > > linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B% >>> > > 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> >>> > > >> <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a= >>> > > 1935182951> >>> > > >> Blog: http://garygregory.wordpress.com >>> > > >> Home: http://garygregory.com/ >>> > > >> Tweet! http://twitter.com/GaryGregory >>> > > >> >>> > > > >>> > > > >>> > > > >>> > > >>> > > ------------------------------------------------------------ >>> --------- >>> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> > > For additional commands, e-mail: dev-h...@commons.apache.org >>> > > >>> > > >>> > >>> > >>> > -- >>> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> > Java Persistence with Hibernate, Second Edition >>> > < >>> > https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie >>> =UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCo >>> de=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8 >>> > > >>> > >>> > <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459 >>> > >>> > JUnit in Action, Second Edition >>> > < >>> > https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie >>> =UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCo >>> de=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22 >>> > > >>> > >>> > <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021 >>> > >>> > Spring Batch in Action >>> > < >>> > https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie >>> =UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCo >>> de=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink >>> _id%7D%7D%22%3ESpring+Batch+in+Action >>> > > >>> > <http://// >>> > ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951 >>> > >>> > Blog: http://garygregory.wordpress.com >>> > Home: http://garygregory.com/ >>> > Tweet! http://twitter.com/GaryGregory >>> > >>> >> >> >> >> -- >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> Java Persistence with Hibernate, Second Edition >> <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> >> >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> >> JUnit in Action, Second Edition >> <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> >> >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> >> Spring Batch in Action >> <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> >> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second Edition > <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> > JUnit in Action, Second Edition > <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> > > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> > Spring Batch in Action > <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> > <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> JUnit in Action, Second Edition <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> Spring Batch in Action <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory