On 28 November 2016 at 00:11, Gary Gregory <garydgregory@gmail.com> wrote:
> On Sun, Nov 27, 2016 at 4:09 PM, sebb <sebbaz@gmail.com> wrote:
>
>> On 27 November 2016 at 23:51, Gary Gregory <garydgregory@gmail.com> wrote:
>> > On Sun, Nov 27, 2016 at 3:41 PM, sebb <sebbaz@gmail.com> wrote:
>> >
>> >> On 27 November 2016 at 22:31, Gary Gregory <garydgregory@gmail.com>
>> wrote:
>> >> > On Sun, Nov 27, 2016 at 2:14 PM, sebb <sebbaz@gmail.com> 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 nonBC 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 futuretrip ourselves in all sorts of troubles. Our imaginations
> know no bounds! :)
This is not an imaginary scenario.
We know that LANG will have a nonBC release at some point.
The plan is to allow nonLANG components to share the LANG annotations.
We know that components which originally don't need LANG may end up
needing LANG at runtime.
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
>> >> >> selfcontained (or builtin to the languange, not LANG).
>> >> >>
>> >> >
>> >> > It is _because_ they are NOT builtin 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 compiletime dependency.
>> >>
>> >
>> > No surprise, right? You can't use an annotation without compiling the
>> > source file.
>> >
>> >
>> >> AFAIK it's not possible to have a Maven compileonly dependency;
>> >> compiletime implies runtime.
>> >>
>> >
>> > 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/introductiontodependency
>> 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 <garydgregory@gmail.com> 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 <garydgregory@gmail.com>
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
>> >> >> >> > > > > > > > > > >
>> >> >> >> > > > > > > > > > > 
>> >> >> >> > > > > > > > > > > EMail:
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=garygregory20&linkId=
>> >> >> >> cadb800f39946ec62ea2b1af9fe6a2
>> >> >> >> > > b8>
>> >> >> >> > > > > > > > > > >
>> >> >> >> > > > > > > > > > > <http:////
>> >> >> >> > > > > > > irna.amazonadsystem.com/e/
>> >> ir?t=garygregory20&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=garygregory20&linkId=
>> >> >> >> > > > > > > 31ecd1f6b6d1eaf8886ac902a24de4
>> >> >> >> > > > > > > > > 18%22
>> >> >> >> > > > > > > > > > >
>> >> >> >> > > > > > > > > > >
>> >> >> >> > > > > > > > > > > <http:////
>> >> >> >> > > > > > > irna.amazonadsystem.com/e/
>> >> ir?t=garygregory20&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=garygregory20&linkId=%7B%
>> >> >> >> > > > > > > > > > 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> >> >> >> > > > > > > > > > > <http:////
>> >> >> >> > > > > > > irna.amazonadsystem.com/e/
>> >> ir?t=garygregory20&l=am2&o=1&
>> >> >> a=
>> >> >> >> > > > > > > > > > 1935182951>
>> >> >> >> > > > > > > > > > > Blog:
http://garygregory.wordpress.com
>> >> >> >> > > > > > > > > > > Home:
http://garygregory.com/
>> >> >> >> > > > > > > > > > > Tweet!
http://twitter.com/GaryGregory
>> >> >> >> > > > > > > > > >
>> >> >> >> > > > > > > > > >
>> >> >> >> > 
>> >> >> >> > > > > > > 
>> >> >> >> > > > > > > > > > To unsubscribe,
email: devunsubscribe@commons.
>> >> >> >> apache.org
>> >> >> >> > > > > > > > > > For additional
commands, email:
>> >> >> >> > devhelp@commons.apache.org
>> >> >> >> > > > > > > > > >
>> >> >> >> > > > > > > > > >
>> >> >> >> > > > > > > > >
>> >> >> >> > > > > > > > >
>> >> >> >> > > > > > > > > 
>> >> >> >> > > > > > > > > EMail: 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=garygregory20&linkId=
>> >> >> >> > > > > > cadb800f39946ec62ea2b1af9fe6a2
>> >> >> >> > > > > > > b8>
>> >> >> >> > > > > > > > >
>> >> >> >> > > > > > > > > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> >> >> > > > > > garygregory20&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=garygregory20&linkId=
>> >> >> >> > > > 31ecd1f6b6d1eaf8886ac902a24de4
>> >> >> >> > > > > > 18%22
>> >> >> >> > > > > > > > > >
>> >> >> >> > > > > > > > >
>> >> >> >> > > > > > > > > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> >> >> > > > > > garygregory20&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=garygregory20&linkId=%7B%
>> >> >> >> > > > > > > > > 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> >> >> >> > > > > > > > > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> >> >> > > > > > garygregory20&l=am2&o=1&a=
>> >> >> >> > > > > > > > > 1935182951>
>> >> >> >> > > > > > > > > Blog: http://garygregory.wordpress.com
>> >> >> >> > > > > > > > > Home: http://garygregory.com/
>> >> >> >> > > > > > > > > Tweet! http://twitter.com/GaryGregory
>> >> >> >> > > > > > > > >
>> >> >> >> > > > > > > >
>> >> >> >> > > > > > > >
>> >> >> >> > > > > > > >
>> >> >> >> > > > > > > > 
>> >> >> >> > > > > > > > Matt Sicker <boards@gmail.com>
>> >> >> >> > > > > > >
>> >> >> >> > > > > >
>> >> >> >> > > > > >
>> >> >> >> > > > > >
>> >> >> >> > > > > > 
>> >> >> >> > > > > > Matt Sicker <boards@gmail.com>
>> >> >> >> > > > > >
>> >> >> >> > > > >
>> >> >> >> > > > >
>> >> >> >> > > > >
>> >> >> >> > > > > 
>> >> >> >> > > > > EMail: 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=garygregory20&linkId=
>> >> >> >> cadb800f39946ec62ea2b1af9fe6a2b8
>> >> >> >> > > > > >
>> >> >> >> > > > >
>> >> >> >> > > > > <http:////
>> >> >> >> > > > >
>> >> >> >> > irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=
>> >> >> >> 31ecd1f6b6d1eaf8886ac902a24de4
>> >> >> >> > > 18%22
>> >> >> >> > > > > >
>> >> >> >> > > > >
>> >> >> >> > > > > <http:////
>> >> >> >> > > > >
>> >> >> >> > irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=%7B%
>> >> >> >> > > > 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action
>> >> >> >> > > > > >
>> >> >> >> > > > > <http:////
>> >> >> >> > > > >
>> >> >> >> > irna.amazonadsystem.com/e/ir?t=garygregory20&l=am2&o=1&
>> >> >> a=1935182951
>> >> >> >> > > >
>> >> >> >> > > > > Blog: http://garygregory.wordpress.com
>> >> >> >> > > > > Home: http://garygregory.com/
>> >> >> >> > > > > Tweet! http://twitter.com/GaryGregory
>> >> >> >> > > > >
>> >> >> >> > > >
>> >> >> >> > >
>> >> >> >> > >
>> >> >> >> > >
>> >> >> >> > > 
>> >> >> >> > > Matt Sicker <boards@gmail.com>
>> >> >> >> > >
>> >> >> >> >
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > 
>> >> >> > EMail: 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=garygregory20&linkId=
>> cadb800f39946ec62ea2b1af9fe6a2
>> >> b8>
>> >> >> >
>> >> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> garygregory20&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=garygregory20&linkId=
>> 31ecd1f6b6d1eaf8886ac902a24de4
>> >> 18%22
>> >> >> >
>> >> >> >
>> >> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> garygregory20&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=garygregory20&linkId=%7B%
>> >> >> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> >> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> >> garygregory20&l=am2&o=1&a=
>> >> >> 1935182951>
>> >> >> > Blog: http://garygregory.wordpress.com
>> >> >> > Home: http://garygregory.com/
>> >> >> > Tweet! http://twitter.com/GaryGregory
>> >> >>
>> >> >> 
>> 
>> >> >> To unsubscribe, email: devunsubscribe@commons.apache.org
>> >> >> For additional commands, email: devhelp@commons.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> > 
>> >> > EMail: 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=garygregory20&linkId=cadb800f39946ec62ea2b1af9fe6a2
>> b8>
>> >> >
>> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> garygregory20&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=garygregory20&linkId=31ecd1f6b6d1eaf8886ac902a24de4
>> 18%22
>> >> >
>> >> >
>> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> garygregory20&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=garygregory20&linkId=%7B%
>> >> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> >> > <http:////irna.amazonadsystem.com/e/ir?t=
>> garygregory20&l=am2&o=1&a=
>> >> 1935182951>
>> >> > Blog: http://garygregory.wordpress.com
>> >> > Home: http://garygregory.com/
>> >> > Tweet! http://twitter.com/GaryGregory
>> >>
>> >> 
>> >> To unsubscribe, email: devunsubscribe@commons.apache.org
>> >> For additional commands, email: devhelp@commons.apache.org
>> >>
>> >>
>> >
>> >
>> > 
>> > EMail: 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=garygregory20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>
>> >
>> > <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22
>> >
>> >
>> > <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=%7B%
>> 7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
>> > <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&l=am2&o=1&a=
>> 1935182951>
>> > Blog: http://garygregory.wordpress.com
>> > Home: http://garygregory.com/
>> > Tweet! http://twitter.com/GaryGregory
>>
>> 
>> To unsubscribe, email: devunsubscribe@commons.apache.org
>> For additional commands, email: devhelp@commons.apache.org
>>
>>
>
>
> 
> EMail: 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=garygregory20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>
>
> <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22>
>
> <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&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=garygregory20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
> <http:////irna.amazonadsystem.com/e/ir?t=garygregory20&l=am2&o=1&a=1935182951>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory

To unsubscribe, email: devunsubscribe@commons.apache.org
For additional commands, email: devhelp@commons.apache.org
