Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 62CC0200BDB for ; Mon, 28 Nov 2016 03:49:28 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 61431160B20; Mon, 28 Nov 2016 02:49:28 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B77CB160B12 for ; Mon, 28 Nov 2016 03:49:26 +0100 (CET) Received: (qmail 41774 invoked by uid 500); 28 Nov 2016 02:49:25 -0000 Mailing-List: contact dev-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Commons Developers List" Delivered-To: mailing list dev@commons.apache.org Received: (qmail 41762 invoked by uid 99); 28 Nov 2016 02:49:25 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 28 Nov 2016 02:49:25 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 9FD651A040F for ; Mon, 28 Nov 2016 02:49:24 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.43 X-Spam-Level: * X-Spam-Status: No, score=1.43 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, KAM_LOTSOFHASH=0.25, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id 72iXPJhSGe5E for ; Mon, 28 Nov 2016 02:49:12 +0000 (UTC) Received: from mail-oi0-f41.google.com (mail-oi0-f41.google.com [209.85.218.41]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 2CF825F256 for ; Mon, 28 Nov 2016 02:49:11 +0000 (UTC) Received: by mail-oi0-f41.google.com with SMTP id b126so135582124oia.2 for ; Sun, 27 Nov 2016 18:49:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=Foz0ECwj5ETc5x3mmjT+v9dJFkh1qCy4EqlrZPJ0xDg=; b=kcwSlUVx+qwfdakcVOAEoemyO0qzB9n2Xs2oPHTjoFlKOH95b51dGDOKFpKDjvj/+K b1rXpUX32ap03fUdNfNAbLr+v47jDRurUa3U73/cT5Y/lQpRWysJqzfmK7z1zQRu0wvV yBW/1rlThDdFZ5L3gWSrT2v+IWMta5uwTya1bCZOXlQk4UQSFQmO70Qg5y9Dm+S1dB/s R4RcetbG0YDYzkmekC/Yl5yOZa0cYFJ/cdPiESLtxHw1HLtGqgbItUzohH4z+2a+GWL9 IrkvmqXV90OCzJe74Y82gr0mntXA1my8URqIDp/1zTI5fOFy3lMADtKaBm0/visDnAi7 sZDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=Foz0ECwj5ETc5x3mmjT+v9dJFkh1qCy4EqlrZPJ0xDg=; b=GSjVQrzCzcTGXDzYIgX+Y2iqWJNCR+/1QNYvwHIRKAgaaV7wq3wpT4bSZ4cS6TXXeA 82M63cRZRw49rD1r4E+gR2zXc4DG6wO8OXth7I3N+rTVIsK33TqkSUXKlMGreVpm/5KN OokPBpe1bsjdK3prpPkl+D83Os5MwrsUSOBTJ4IM0SVffF+strCVTKC5TqMEyD55rJ+B tAlstxYDtnozwsP61f23Kyd6tbdTEH3ioAdzPw+xDEFOA64OCAFo4Amc6wBnMnSXP/7A CYGWcn7+Bm73bAzuqA0LWdR0Qa0wkRHcOHYbBUGtcOFaVy8cNhWNa1Bm4bQl/V1HkKZ3 V/hw== X-Gm-Message-State: AKaTC00A1pS3tjOu4lxtSFaFv5KIU7ZPyNTm6iKAHYtCtYzxcVlHqVUFgz7kHhwW5VL7kShJKtQovVyx1VbY3Q== X-Received: by 10.202.83.85 with SMTP id h82mr10227974oib.119.1480301346536; Sun, 27 Nov 2016 18:49:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.35.40 with HTTP; Sun, 27 Nov 2016 18:49:05 -0800 (PST) Received: by 10.157.35.40 with HTTP; Sun, 27 Nov 2016 18:49:05 -0800 (PST) In-Reply-To: References: From: Gary Gregory Date: Sun, 27 Nov 2016 18:49:05 -0800 Message-ID: Subject: Re: [lang] Thread safety annotations To: Commons Developers List Content-Type: multipart/alternative; boundary=001a113df0b4ebc34a05425383f2 archived-at: Mon, 28 Nov 2016 02:49:28 -0000 --001a113df0b4ebc34a05425383f2 Content-Type: text/plain; charset=UTF-8 Oh, and JSR 305 does not actually specify any concurrency annotations. Gary On Nov 27, 2016 6:46 PM, "Matt Sicker" wrote: > I'd be in favor of just including this as an internal annotation similar to > how it's done in HttpClient. > > On 27 November 2016 at 20:44, Gary Gregory wrote: > > > I do not think we should use an official Java package because the JSR 305 > > page says "The Executive Committee voted to list this JSR as dormant in > May > > 2012." > > > > Gary > > > > On Nov 27, 2016 6:39 PM, "Matt Sicker" wrote: > > > > > If you're going to share the annotations between projects, why not use > a > > > JSR package for it like the google one? I thought the idea of embedding > > the > > > annotations in [lang] was to prevent the need for the dependency and to > > use > > > it internally, not as a public annotation for other projects to use. > > > > > > On 27 November 2016 at 19:55, Gary Gregory > > wrote: > > > > > > > Are you suggesting [lang] becomes a multi-module project? > > > > > > > > Gary > > > > > > > > On Nov 27, 2016 5:01 PM, "sebb" wrote: > > > > > > > > > On 28 November 2016 at 00:11, Gary Gregory > > > > > wrote: > > > > > > On Sun, Nov 27, 2016 at 4:09 PM, sebb wrote: > > > > > > > > > > > >> On 27 November 2016 at 23:51, Gary Gregory < > > garydgregory@gmail.com> > > > > > wrote: > > > > > >> > On Sun, Nov 27, 2016 at 3:41 PM, sebb > wrote: > > > > > >> > > > > > > >> >> On 27 November 2016 at 22:31, Gary Gregory < > > > garydgregory@gmail.com > > > > > > > > > > >> wrote: > > > > > >> >> > On Sun, Nov 27, 2016 at 2:14 PM, sebb > > > wrote: > > > > > >> >> > > > > > > >> >> >> On 27 November 2016 at 22:03, Gary Gregory < > > > > > garydgregory@gmail.com> > > > > > >> >> wrote: > > > > > >> >> >> > These annotations are the SAME as have been published > all > > > over > > > > > the > > > > > >> >> place, > > > > > >> >> >> > so I do not think we need a PR for review. Reviewing the > > > code > > > > in > > > > > >> the > > > > > >> >> repo > > > > > >> >> >> > should be enough, but I'm not sure _what_ there is to > > review > > > > > >> really. > > > > > >> >> I've > > > > > >> >> >> > already posted a link to the sources (a pastebin link). > > I'll > > > > > >> create a > > > > > >> >> >> Jira > > > > > >> >> >> > of course. > > > > > >> >> >> > > > > > >> >> >> There is one aspect that needs review: does the annotation > > > > belong > > > > > in > > > > > >> >> LANG? > > > > > >> >> >> If we want to use the annotation in other components, do > > they > > > > > have to > > > > > >> >> >> depend on LANG? > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > No see below and previous messages. > > > > > >> >> > > > > > > >> >> > > > > > > >> >> >> If not, do they all have their own copies? > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > No. > > > > > >> >> > > > > > > >> >> > > > > > > >> >> >> > > > > > >> >> >> And what happens when LANG needs a non-BC release? > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > What is the issue I am missing? > > > > > >> >> > > > > > > >> >> > > > > > >> >> The package name for the annotation might need to change > > > > > >> >> That would be a downstream nuisance. > > > > > >> >> > > > > > >> > > > > > > >> > Hi All, > > > > > >> > > > > > > >> > How is that different than changing the package name for any > of > > > our > > > > > other > > > > > >> > lang types? > > > > > >> > > > > > >> It's not. > > > > > >> > > > > > >> > If you want move a package, you have to break BC and we have > > clear > > > > > >> > guidelines for that task. > > > > > >> > > > > > >> But why should I have to change package imports for annotations > > just > > > > > >> because they happen to be in LANG? > > > > > >> > > > > > >> Note that this could get confusing. > > > > > >> > > > > > >> Say XYZ component starts out only needing lang for the > > annotations. > > > > > >> So they include LANG 3.x and code the annotations. > > > > > >> > > > > > >> Later they find they want LANG 4.x for runtime. > > > > > >> They would then need to drop the LANG 3.x dependency, fix up all > > the > > > > > >> annotation imports etc. > > > > > >> Unnecessary work if the annotations were in a separate > component. > > > > > >> > > > > > >> Also, any tool that wants to check the annotations will have to > > look > > > > > >> for them in lots of packages. > > > > > >> > > > > > >> Whilst it can no doubt be made to work, it's going to cause > > problems > > > > > later. > > > > > >> > > > > > > > > > > > > To be on the playful side, this is what my mother calls > "borrowing > > > > > trouble" > > > > > > ;-) > > > > > > > > > > > > We can future-trip ourselves in all sorts of troubles. Our > > > imaginations > > > > > > know no bounds! :-) > > > > > > > > > > This is not an imaginary scenario. > > > > > > > > > > We know that LANG will have a non-BC release at some point. > > > > > The plan is to allow non-LANG components to share the LANG > > annotations. > > > > > We know that components which originally don't need LANG may end up > > > > > needing LANG at run-time. > > > > > Therefore the problem will occur. > > > > > > > > > > In this case, "look before you leap" is appropriate. > > > > > > > > > > > Gary > > > > > > > > > > > > > > > > > >> > > > > > >> > Since already have a package called org.apache.commons.lang3. > > > > > concurrent, > > > > > >> I > > > > > >> > propose we place these annottaions in > > > > > >> > org.apache.commons.lang3.concurrent.annotation. > > > > > >> > > > > > > >> > > > > > > >> >> >> > > > > > >> >> >> My expectation for such annotations is that they would be > > > > > >> >> >> self-contained (or built-in to the languange, not LANG). > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > It is _because_ they are NOT built-in the language or JRE > > that > > > we > > > > > are > > > > > >> >> > proposing they belong in [lang]. > > > > > >> >> > > > > > > >> >> > Since we are providing the annotation with CLASS retention > > only > > > > > >> >> > (initially), there is no hard dependency on [lang] at > > runtime. > > > > > >> >> > > > > > > >> >> > Is there some subtlety we are missing? > > > > > >> >> > > > > > >> >> Yes, the compile-time dependency. > > > > > >> >> > > > > > >> > > > > > > >> > No surprise, right? You can't use an annotation without > > compiling > > > > the > > > > > >> > source file. > > > > > >> > > > > > > >> > > > > > > >> >> AFAIK it's not possible to have a Maven compile-only > > dependency; > > > > > >> >> compile-time implies run-time. > > > > > >> >> > > > > > >> > > > > > > >> > That's a tooling issue of course which should not invalidate > the > > > > > >> worthiness > > > > > >> > of this feature. > > > > > >> > > > > > > >> > If I am a downstream user of Commons Lang's new annotations, I > > > would > > > > > >> need a > > > > > >> > Maven scope that says "I need [lang] as a compile time only > > > > > dependency" I > > > > > >> > do not see such a scope on > > > > > >> > https://maven.apache.org/guides/introduction/ > > > > > introduction-to-dependency- > > > > > >> mechanism.html#Dependency_Scope > > > > > >> > > > > > > >> > Time for a Jira! > > > > > >> > > > > > > >> > I wonder what Gradle offers users in this dept.? > > > > > >> > > > > > > >> > Gary > > > > > >> > > > > > > >> > > > > > > >> >> > > > > > >> >> > Gary > > > > > >> >> > > > > > > >> >> > > > > > > >> >> >> > Gary > > > > > >> >> >> > > > > > > >> >> >> > On Sun, Nov 27, 2016 at 1:20 PM, Benedikt Ritter < > > > > > >> britter@apache.org> > > > > > >> >> >> wrote: > > > > > >> >> >> > > > > > > >> >> >> >> Hi, > > > > > >> >> >> >> > > > > > >> >> >> >> Gary Gregory schrieb am So., > > 27. > > > > Nov. > > > > > >> 2016 > > > > > >> >> um > > > > > >> >> >> >> 21:01 Uhr: > > > > > >> >> >> >> > > > > > >> >> >> >> > So let's start with the CLASS retention annotations > > > first. > > > > > I'll > > > > > >> >> commit > > > > > >> >> >> >> > later today. > > > > > >> >> >> >> > > > > > > >> >> >> >> > > > > > >> >> >> >> Maybe create a GitHub PR so people can have a look > before > > > it > > > > > goes > > > > > >> to > > > > > >> >> >> >> master? > > > > > >> >> >> >> > > > > > >> >> >> >> Benedikt > > > > > >> >> >> >> > > > > > >> >> >> >> > > > > > >> >> >> >> > > > > > > >> >> >> >> > Gary > > > > > >> >> >> >> > > > > > > >> >> >> >> > On Nov 27, 2016 9:50 AM, "Matt Sicker" < > > boards@gmail.com > > > > > > > > > >> wrote: > > > > > >> >> >> >> > > > > > > >> >> >> >> > > I feel like documenting thread safety in such a low > > > > level, > > > > > >> widely > > > > > >> >> >> used > > > > > >> >> >> >> > > library like [lang] is a great idea. Whether it > uses > > > > > >> annotations, > > > > > >> >> >> >> > javadocs, > > > > > >> >> >> >> > > or some sort of informal javadoc comments isn't too > > > big a > > > > > >> deal to > > > > > >> >> >> me, > > > > > >> >> >> >> but > > > > > >> >> >> >> > > providing some guarantees of thread safety or lack > > > > thereof > > > > > >> would > > > > > >> >> be > > > > > >> >> >> >> > > invaluable information. > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > On 27 November 2016 at 07:11, Benedikt Ritter < > > > > > >> >> britter@apache.org> > > > > > >> >> >> >> > wrote: > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > I thought we decided to abstain from documenting > > > thread > > > > > >> safety > > > > > >> >> >> since > > > > > >> >> >> >> it > > > > > >> >> >> >> > > > would get outdated quickly anyway. > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > Gary Gregory schrieb am > > > So., > > > > > 27. > > > > > >> Nov. > > > > > >> >> >> 2016 > > > > > >> >> >> >> um > > > > > >> >> >> >> > > > 09:11 Uhr: > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > > But if we then want a runtime version we had an > > odd > > > > > >> packaging > > > > > >> >> >> with > > > > > >> >> >> >> > > CLASS > > > > > >> >> >> >> > > > > retention in .concurrent. and RUNTIME in > > > > > >> .concurrent.runtime. > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > I might be in YAGNI territory here... > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > Gary > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > On Sat, Nov 26, 2016 at 10:07 PM, Matt Sicker < > > > > > >> >> boards@gmail.com > > > > > >> >> >> > > > > > > >> >> >> >> > > wrote: > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > I think adding the additional clazz/runtime > > > package > > > > > >> would > > > > > >> >> be a > > > > > >> >> >> >> > little > > > > > >> >> >> >> > > > > > overkill if you only include one packaging > > option > > > > for > > > > > >> now. > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > On 27 November 2016 at 00:04, Gary Gregory < > > > > > >> >> >> >> garydgregory@gmail.com > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > wrote: > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > On Nov 26, 2016 8:40 PM, "Matt Sicker" < > > > > > >> boards@gmail.com > > > > > >> >> > > > > > > >> >> >> >> wrote: > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > I can think of a couple use cases for > > runtime > > > > > >> retention > > > > > >> >> >> for > > > > > >> >> >> >> > > thread > > > > > >> >> >> >> > > > > > safety > > > > > >> >> >> >> > > > > > > > annotations, but they're not specific to > > > > commons > > > > > >> lang. > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > 1. A framework could choose what type of > > data > > > > > >> >> structure or > > > > > >> >> >> >> > > > algorithm > > > > > >> >> >> >> > > > > to > > > > > >> >> >> >> > > > > > > use > > > > > >> >> >> >> > > > > > > > at runtime based on the presence of which > > > > thread > > > > > >> safety > > > > > >> >> >> >> > > annotation > > > > > >> >> >> >> > > > is > > > > > >> >> >> >> > > > > > on. > > > > > >> >> >> >> > > > > > > > Same for mutability. > > > > > >> >> >> >> > > > > > > > 2. A testing framework could use these > > > > > annotations > > > > > >> to > > > > > >> >> try > > > > > >> >> >> and > > > > > >> >> >> >> > > > > automate > > > > > >> >> >> >> > > > > > > some > > > > > >> >> >> >> > > > > > > > sort of thread safety tests, though that > > > sounds > > > > > >> like a > > > > > >> >> >> hard > > > > > >> >> >> >> > > problem > > > > > >> >> >> >> > > > > to > > > > > >> >> >> >> > > > > > > > actually implement. > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > However, it'd be easier to just start > with > > > > class > > > > > >> >> retention > > > > > >> >> >> >> (or > > > > > >> >> >> >> > > > source > > > > > >> >> >> >> > > > > > > > retention) just for documentation > purposes. > > > > > Higher > > > > > >> >> >> retention > > > > > >> >> >> >> > > levels > > > > > >> >> >> >> > > > > > could > > > > > >> >> >> >> > > > > > > > be added later if an important use case > > came > > > > up. > > > > > >> >> >> >> > > > > > > > > > > > >> >> >> >> > > > > > > But which packaging option? > > > > > >> >> >> >> > > > > > > > > > > > >> >> >> >> > > > > > > Gary > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > On 26 November 2016 at 19:56, Gary > Gregory > > < > > > > > >> >> >> >> > > garydgregory@gmail.com > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > wrote: > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > > On Sat, Nov 26, 2016 at 3:54 PM, sebb < > > > > > >> >> sebbaz@gmail.com > > > > > >> >> >> > > > > > > >> >> >> >> > > wrote: > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > On 26 November 2016 at 19:25, Gary > > > Gregory > > > > < > > > > > >> >> >> >> > > > > garydgregory@gmail.com > > > > > >> >> >> >> > > > > > > > > > > > >> >> >> >> > > > > > > > > wrote: > > > > > >> >> >> >> > > > > > > > > > > On a [crypto] thread, I mentioned > > > > > >> >> >> >> > > > http://pastebin.com/RKPGGdJ9 > > > > > >> >> >> >> > > > > > to > > > > > >> >> >> >> > > > > > > add > > > > > >> >> >> >> > > > > > > > > > the > > > > > >> >> >> >> > > > > > > > > > > "classic" four > > > > javax.annotation.concurrent > > > > > >> >> >> annotations > > > > > >> >> >> >> to > > > > > >> >> >> >> > > two > > > > > >> >> >> >> > > > > > > packages > > > > > >> >> >> >> > > > > > > > > > > (.clazz and .runtime) in Commons > Lang > > > for > > > > > >> CLASS > > > > > >> >> and > > > > > >> >> >> >> > RUNTIME > > > > > >> >> >> >> > > > > > > retentions. > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > You'd use the CLASS version to > avoid > > a > > > > hard > > > > > >> >> >> dependency > > > > > >> >> >> >> on > > > > > >> >> >> >> > > > > [lang]. > > > > > >> >> >> >> > > > > > > > > RUNTIME > > > > > >> >> >> >> > > > > > > > > > > to keep them around. > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > We'd use the CLASS versions in all > of > > > > > Commons > > > > > >> for > > > > > >> >> >> >> > > documenting > > > > > >> >> >> >> > > > > > > thread > > > > > >> >> >> >> > > > > > > > > > safety. > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > Thoughts? > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > Definitely Class retention, not > > Runtime. > > > > > >> >> >> >> > > > > > > > > > You don't want to have to include the > > > > > annotation > > > > > >> >> jar > > > > > >> >> >> on > > > > > >> >> >> >> the > > > > > >> >> >> >> > > > > runtime > > > > > >> >> >> >> > > > > > > > > > classpath. > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Hi Sebb, > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Right now I have both of these > packages: > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > - org.apache.commons.lang3. > > > > > >> >> annotation.concurrent.clazz > > > > > >> >> >> >> > > > > > > > > - org.apache.commons.lang3. > > > > > >> >> >> annotation.concurrent.runtime > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Each with a copy of: > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > GuardedBy > > > > > >> >> >> >> > > > > > > > > Immutable > > > > > >> >> >> >> > > > > > > > > NotThreadSafe > > > > > >> >> >> >> > > > > > > > > ThreadSafe > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Should we include what I have as is? > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > If we were to only provide the > annotation > > > at > > > > > the > > > > > >> >> CLASS > > > > > >> >> >> >> > > retention > > > > > >> >> >> >> > > > > > level, > > > > > >> >> >> >> > > > > > > > > should we still package them in > > > > > >> >> >> >> > ...annotation.concurrent.clazz > > > > > >> >> >> >> > > in > > > > > >> >> >> >> > > > > > case > > > > > >> >> >> >> > > > > > > we > > > > > >> >> >> >> > > > > > > > > want to provide > > > annotation.concurrent.runtime > > > > > >> later? > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > If we know for certain we never want to > > > > provide > > > > > >> >> RUNTIME > > > > > >> >> >> >> > > > retention, > > > > > >> >> >> >> > > > > we > > > > > >> >> >> >> > > > > > > can > > > > > >> >> >> >> > > > > > > > > put them all in annotation.concurrent > > now. > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Thoughts? > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > Gary > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > [I don't know why the annotations > were > > > ever > > > > > >> >> considered > > > > > >> >> >> >> > > suitable > > > > > >> >> >> >> > > > > for > > > > > >> >> >> >> > > > > > > > > > runtime] > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > Gary > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > -- > > > > > >> >> >> >> > > > > > > > > > > E-Mail: garydgregory@gmail.com | > > > > > >> >> >> ggregory@apache.org > > > > > >> >> >> >> > > > > > > > > > > Java Persistence with Hibernate, > > Second > > > > > >> Edition > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> product/1617290459/ref=as_li_ > > > > > >> >> >> >> > > > > > > > > > tl?ie=UTF8&camp=1789&creative= > > > > > >> >> >> >> 9325&creativeASIN=1617290459& > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > >> >> >> >> > > > > linkCode=as2&tag=garygregory-20&linkId= > > > > > >> >> >> >> cadb800f39946ec62ea2b1af9fe6a2 > > > > > >> >> >> >> > > b8> > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > ir-na.amazon-adsystem.com/e/ > > > > > >> >> ir?t=garygregory-20&l=am2&o=1& > > > > > >> >> >> a= > > > > > >> >> >> >> > > > > > > > > > 1617290459> > > > > > >> >> >> >> > > > > > > > > > > JUnit in Action, Second Edition > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> product/1935182021/ref=as_li_ > > > > > >> >> >> >> > > > > > > > > > tl?ie=UTF8&camp=1789&creative= > > > > > >> >> >> >> 9325&creativeASIN=1935182021& > > > > > >> >> >> >> > > > > > > > > > linkCode=as2&tag=garygregory- > > 20&linkId= > > > > > >> >> >> >> > > > > > > 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > >> >> >> >> > > > > > > > > 18%22 > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > ir-na.amazon-adsystem.com/e/ > > > > > >> >> ir?t=garygregory-20&l=am2&o=1& > > > > > >> >> >> a= > > > > > >> >> >> >> > > > > > > > > > 1935182021> > > > > > >> >> >> >> > > > > > > > > > > Spring Batch in Action > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> 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> > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > 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-unsubscribe@commons. > > > > > >> >> >> >> apache.org > > > > > >> >> >> >> > > > > > > > > > For additional commands, e-mail: > > > > > >> >> >> >> > dev-help@commons.apache.org > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > -- > > > > > >> >> >> >> > > > > > > > > E-Mail: garydgregory@gmail.com | > > > > > >> ggregory@apache.org > > > > > >> >> >> >> > > > > > > > > Java Persistence with Hibernate, Second > > > > Edition > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> product/1617290459/ref=as_li_ > > > > > >> >> >> >> > > > > > > > > tl?ie=UTF8&camp=1789&creative= > > > > > >> >> >> >> 9325&creativeASIN=1617290459& > > > > > >> >> >> >> > > > > > > > > linkCode=as2&tag=garygregory- > 20&linkId= > > > > > >> >> >> >> > > > > > cadb800f39946ec62ea2b1af9fe6a2 > > > > > >> >> >> >> > > > > > > b8> > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > adsystem.com/e/ir?t= > > > > > >> >> >> >> > > > > > garygregory-20&l=am2&o=1&a= > > > > > >> >> >> >> > > > > > > > > 1617290459> > > > > > >> >> >> >> > > > > > > > > JUnit in Action, Second Edition > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> product/1935182021/ref=as_li_ > > > > > >> >> >> >> > > > > > > > > tl?ie=UTF8&camp=1789&creative= > > > > > >> >> >> >> 9325&creativeASIN=1935182021& > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > linkCode=as2&tag=garygregory-20&linkId= > > > > > >> >> >> >> > > > 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > >> >> >> >> > > > > > 18%22 > > > > > >> >> >> >> > > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > adsystem.com/e/ir?t= > > > > > >> >> >> >> > > > > > garygregory-20&l=am2&o=1&a= > > > > > >> >> >> >> > > > > > > > > 1935182021> > > > > > >> >> >> >> > > > > > > > > Spring Batch in Action > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> 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> > > > > > >> >> >> >> > > > > > > > > > > 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 > > > > > >> >> >> >> > > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > > > > > > >> >> >> >> > > > > > > > -- > > > > > >> >> >> >> > > > > > > > Matt Sicker > > > > > >> >> >> >> > > > > > > > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > -- > > > > > >> >> >> >> > > > > > Matt Sicker > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > -- > > > > > >> >> >> >> > > > > E-Mail: garydgregory@gmail.com | > > > ggregory@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 > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > 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= > > > > > >> >> >> >> 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > >> >> >> >> > > 18%22 > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > 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 > > > > > >> >> >> >> > > > > > > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > 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 > > > > > >> >> >> >> > > > > > > > > > >> >> >> >> > > > > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > -- > > > > > >> >> >> >> > > Matt Sicker > > > > > >> >> >> >> > > > > > > > >> >> >> >> > > > > > > >> >> >> >> > > > > > >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > -- > > > > > >> >> >> > E-Mail: garydgregory@gmail.com | ggregory@apache.org > > > > > >> >> >> > Java Persistence with Hibernate, Second Edition > > > > > >> >> >> > product/1617290459/ref=as_li_ > > > > > >> >> >> tl?ie=UTF8&camp=1789&creative= > 9325&creativeASIN=1617290459& > > > > > >> >> >> linkCode=as2&tag=garygregory-20&linkId= > > > > > >> cadb800f39946ec62ea2b1af9fe6a2 > > > > > >> >> b8> > > > > > >> >> >> > > > > > > >> >> >> > > > > > >> >> garygregory-20&l=am2&o=1&a= > > > > > >> >> >> 1617290459> > > > > > >> >> >> > JUnit in Action, Second Edition > > > > > >> >> >> > product/1935182021/ref=as_li_ > > > > > >> >> >> tl?ie=UTF8&camp=1789&creative= > 9325&creativeASIN=1935182021& > > > > > >> >> >> linkCode=as2&tag=garygregory-20&linkId= > > > > > >> 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > >> >> 18%22 > > > > > >> >> >> > > > > > > >> >> >> > > > > > > >> >> >> > > > > > >> >> garygregory-20&l=am2&o=1&a= > > > > > >> >> >> 1935182021> > > > > > >> >> >> > Spring Batch in Action > > > > > >> >> >> > 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> > > > > > >> >> >> > > > > > >> >> 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-unsubscribe@commons. > apache.org > > > > > >> >> >> For additional commands, e-mail: > > dev-help@commons.apache.org > > > > > >> >> >> > > > > > >> >> >> > > > > > >> >> > > > > > > >> >> > > > > > > >> >> > -- > > > > > >> >> > E-Mail: garydgregory@gmail.com | ggregory@apache.org > > > > > >> >> > Java Persistence with Hibernate, Second Edition > > > > > >> >> > > > > > >> >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > > > > > >> >> linkCode=as2&tag=garygregory-20&linkId= > > > > > cadb800f39946ec62ea2b1af9fe6a2 > > > > > >> b8> > > > > > >> >> > > > > > > >> >> > > > > > >> garygregory-20&l=am2&o=1&a= > > > > > >> >> 1617290459> > > > > > >> >> > JUnit in Action, Second Edition > > > > > >> >> > > > > > >> >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > > > > > >> >> linkCode=as2&tag=garygregory-20&linkId= > > > > > 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > >> 18%22 > > > > > >> >> > > > > > > >> >> > > > > > > >> >> > > > > > >> garygregory-20&l=am2&o=1&a= > > > > > >> >> 1935182021> > > > > > >> >> > Spring Batch in Action > > > > > >> >> > > > > > >> >> 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> > > > > > >> >> > > > > > >> 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-unsubscribe@commons.apache.org > > > > > >> >> For additional commands, e-mail: dev-help@commons.apache.org > > > > > >> >> > > > > > >> >> > > > > > >> > > > > > > >> > > > > > > >> > -- > > > > > >> > E-Mail: garydgregory@gmail.com | ggregory@apache.org > > > > > >> > Java Persistence with Hibernate, Second Edition > > > > > >> > > > > > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > > > > > >> linkCode=as2&tag=garygregory-20&linkId= > > > cadb800f39946ec62ea2b1af9fe6a2 > > > > > b8> > > > > > >> > > > > > > >> > > > > > garygregory-20&l=am2&o=1&a= > > > > > >> 1617290459> > > > > > >> > JUnit in Action, Second Edition > > > > > >> > > > > > >> tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > > > > > >> linkCode=as2&tag=garygregory-20&linkId= > > > 31ecd1f6b6d1eaf8886ac902a24de4 > > > > > 18%22 > > > > > >> > > > > > > >> > > > > > > >> > > > > > garygregory-20&l=am2&o=1&a= > > > > > >> 1935182021> > > > > > >> > Spring Batch in Action > > > > > >> > > > > > >> 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> > > > > > >> > > > > > 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-unsubscribe@commons.apache.org > > > > > >> For additional commands, e-mail: dev-help@commons.apache.org > > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > -- > > > > > > E-Mail: garydgregory@gmail.com | ggregory@apache.org > > > > > > Java Persistence with Hibernate, Second Edition > > > > > > > > > > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459& > > > > > linkCode=as2&tag=garygregory-20&linkId= > > cadb800f39946ec62ea2b1af9fe6a2 > > > b8> > > > > > > > > > > > > > > garygregory-20&l=am2&o=1&a= > > > > > 1617290459> > > > > > > JUnit in Action, Second Edition > > > > > > > > > > tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021& > > > > > linkCode=as2&tag=garygregory-20&linkId= > > 31ecd1f6b6d1eaf8886ac902a24de4 > > > > 18%22 > > > > > > > > > > > > > > > > > > > > garygregory-20&l=am2&o=1&a= > > > > > 1935182021> > > > > > > Spring Batch in Action > > > > > > > > > > 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> > > > > > > > > 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-unsubscribe@commons.apache.org > > > > > For additional commands, e-mail: dev-help@commons.apache.org > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Matt Sicker > > > > > > > > > -- > Matt Sicker > --001a113df0b4ebc34a05425383f2--