commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: [CANCEL][VOTE] Release Apache Commons Lang 3.6 based on RC2
Date Thu, 25 May 2017 11:16:33 GMT
On 25 May 2017 at 01:02, Gary Gregory <garydgregory@gmail.com> wrote:
> On Wed, May 24, 2017 at 4:46 PM, Gary Gregory <garydgregory@gmail.com>
> wrote:
>
>> On Wed, May 24, 2017 at 2:12 PM, Rob Tompkins <chtompki@gmail.com> wrote:
>>
>>>
>>> > On May 24, 2017, at 2:49 AM, Gary Gregory <garydgregory@gmail.com>
>>> wrote:
>>> >
>>> > When I build with the IBM JDK 8 that IBM includes with some Eclipse
>>> version
>>> > I have laying around, I indeed get:
>>> >
>>> > java (2)
>>> > org.apache.commons.lang3.time.FastDateParser_TimeZoneStrategyTest
>>> > testLang1219(org.apache.commons.lang3.time.FastDateParser_Ti
>>> meZoneStrategyTest)
>>> > java.text.ParseException: Unparseable date: 26.10.2014 02:00:00 MESZ
>>>
>>
>> As I mentioned, the above test passes with the current IBM SDK 8:
>>
>> Java(TM) SE Runtime Environment (build pwi3280sr4fp5-20170421_01(SR4 FP5))
>> IBM J9 VM (build 2.8, JRE 1.8.0 Windows 10 x86-32 20170419_344392 (JIT
>> enabled, AOT enabled)
>> J9VM - R28_20170419_1004_B344392
>> JIT  - tr.r14.java_20170419_344392
>> GC   - R28_20170419_1004_B344392
>> J9CL - 20170419_344392)
>> JCL - 20170420_01 based on Oracle jdk8u131-b11
>>
>> So IMO the only test we should look at is:
>>
>> > org.apache.commons.lang3.builder.ToStringBuilderTest
>> > testReflectionHierarchyArrayList(org.apache.commons.lang3.bu
>> ilder.ToStringBuilderTest)
>> > org.junit.ComparisonFailure:
>> > expected:<...700dfa[elementData={[<null>,<null>,<null>,<
>> null>,<null>,<null>,<null>,<null>,<null>,<null>]},size=0,modCount=0]>
>> > but was:<...700dfa[elementData={[]},size=0,modCount=0]>
>>
>
> Looking at this a little more, I would say that IBM Java changed how it
> implemented ArrayList between it's 1.6 and 1.8 releases. I only have the
> current 1.8 IBM release. I cannot verify that this test makes sense on IBM
> 1.6. I propose we update the test to reflect IBM Java 8 and document the
> test as such.

If the test makes assumptions about how ArrayList is implemented, then
I would say the test is wrong.

If possible it should be fixed so as to work regardless of the
implementation details.
Rather than changing the test to work with a different version of the
implementation.

> Gary
>
>>
>>
>> Gary
>>
>>
>>
>>> Wondering if this change (https://github.com/apache/com
>>> mons-lang/commit/eb2b89efbe15ab0b70fd94f0ecd0aa03866fb4d2#
>>> diff-27e0ef6d1e59c634d3ba4d9cb05629a4R362 <https://github.com/apache/com
>>> mons-lang/commit/eb2b89efbe15ab0b70fd94f0ecd0aa03866fb4d2#
>>> diff-27e0ef6d1e59c634d3ba4d9cb05629a4R362>) caused this one. It doesn’t
>>> make sense to me that it would, but it’s the only change to the code in
>>> that area. Does the released version have the same issue?
>>>
>>> Still investigating the second test failure. I’ll keep you guys posted
>>> with anything I can come up with.
>>>
>>> -Rob
>>>
>>> >
>>> > at
>>> > org.apache.commons.lang3.time.FastDateParser.parse(FastDateP
>>> arser.java:369)
>>> >
>>> > at
>>> > org.apache.commons.lang3.time.FastDateParser_TimeZoneStrateg
>>> yTest.testLang1219(FastDateParser_TimeZoneStrategyTest.java:62)
>>> >
>>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> >
>>> > at
>>> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>> ssorImpl.java:95)
>>> >
>>> > at
>>> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>> thodAccessorImpl.java:55)
>>> >
>>> > at java.lang.reflect.Method.invoke(Method.java:508)
>>> >
>>> > at
>>> > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>>> FrameworkMethod.java:50)
>>> >
>>> > at
>>> > org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>>> ectiveCallable.java:12)
>>> >
>>> > at
>>> > org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>>> ameworkMethod.java:47)
>>> >
>>> > at
>>> > org.junit.internal.runners.statements.InvokeMethod.evaluate(
>>> InvokeMethod.java:17)
>>> >
>>> > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>> >
>>> > at
>>> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:78)
>>> >
>>> > at
>>> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:57)
>>> >
>>> > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>> >
>>> > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>> >
>>> > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>> >
>>> > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>> >
>>> > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>> >
>>> > at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
>>> run(JUnit4TestReference.java:86)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.TestExecution.run(
>>> TestExecution.java:38)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:459)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:678)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>>> RemoteTestRunner.java:382)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>>> RemoteTestRunner.java:192)
>>> >
>>> >
>>> >
>>> > org.apache.commons.lang3.builder.ToStringBuilderTest
>>> > testReflectionHierarchyArrayList(org.apache.commons.lang3.bu
>>> ilder.ToStringBuilderTest)
>>> > org.junit.ComparisonFailure:
>>> > expected:<...700dfa[elementData={[<null>,<null>,<null>,<
>>> null>,<null>,<null>,<null>,<null>,<null>,<null>]},size=0,modCount=0]>
>>> > but was:<...700dfa[elementData={[]},size=0,modCount=0]>
>>> >
>>> > at org.junit.Assert.assertEquals(Assert.java:115)
>>> >
>>> > at org.junit.Assert.assertEquals(Assert.java:144)
>>> >
>>> > at
>>> > org.apache.commons.lang3.builder.ToStringBuilderTest.testRef
>>> lectionHierarchyArrayList(ToStringBuilderTest.java:324)
>>> >
>>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> >
>>> > at
>>> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>> ssorImpl.java:95)
>>> >
>>> > at
>>> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>> thodAccessorImpl.java:55)
>>> >
>>> > at java.lang.reflect.Method.invoke(Method.java:508)
>>> >
>>> > at
>>> > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
>>> FrameworkMethod.java:50)
>>> >
>>> > at
>>> > org.junit.internal.runners.model.ReflectiveCallable.run(Refl
>>> ectiveCallable.java:12)
>>> >
>>> > at
>>> > org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
>>> ameworkMethod.java:47)
>>> >
>>> > at
>>> > org.junit.internal.runners.statements.InvokeMethod.evaluate(
>>> InvokeMethod.java:17)
>>> >
>>> > at
>>> > org.junit.internal.runners.statements.RunAfters.evaluate(Run
>>> Afters.java:27)
>>> >
>>> > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>>> >
>>> > at
>>> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:78)
>>> >
>>> > at
>>> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
>>> 4ClassRunner.java:57)
>>> >
>>> > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>>> >
>>> > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>>> >
>>> > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>>> >
>>> > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>>> >
>>> > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>>> >
>>> > at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.
>>> run(JUnit4TestReference.java:86)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.TestExecution.run(
>>> TestExecution.java:38)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:459)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
>>> sts(RemoteTestRunner.java:678)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
>>> RemoteTestRunner.java:382)
>>> >
>>> > at
>>> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
>>> RemoteTestRunner.java:192)
>>> >
>>> >
>>> >
>>> >
>>> > On Tue, May 23, 2017 at 4:25 PM, Benedikt Ritter <britter@apache.org>
>>> wrote:
>>> >
>>> >> Hello,
>>> >>
>>> >> I’m canceling this vote because:
>>> >>
>>> >> - mvn site does not work from the src distribution
>>> >> - test failures on IBM JDK (where else…)
>>> >>
>>> >> I don’t know when I have the time to work an this. Any help is highly
>>> >> appreciated.
>>> >>
>>> >> Regards,
>>> >> Benedikt
>>> >>
>>> >>> Am 19.05.2017 um 16:52 schrieb Benedikt Ritter <britter@apache.org>:
>>> >>>
>>> >>> Hello,
>>> >>>
>>> >>>> Am 17.05.2017 um 12:02 schrieb Benedikt Ritter <britter@apache.org>:
>>> >>>>
>>> >>>> Hello,
>>> >>>>
>>> >>>> we have fixed quite a few bugs and added some nice new features
since
>>> >> Commons Lang 3.5 was released, so I would like to release Commons Lang
>>> 3.6
>>> >> based on RC2.
>>> >>>> The reason we had to cut a second release is, that there were
some
>>> >> discussions around the annotations for documenting concurrency
>>> properties
>>> >> in the o.a.c.l.concurrent.annotation package. I’ve removed those
>>> >> annotations, so that we can fix them after the release.
>>> >>>>
>>> >>>> Commons Lang 3.6 R2 is available for review here:
>>> >>>> https://dist.apache.org/repos/dist/dev/commons/lang (svn revision
>>> >> 19714)
>>> >>>>
>>> >>>> The tag is here:
>>> >>>> https://git-wip-us.apache.org/repos/asf?p=commons-lang.git;a=tag;h=
>>> >> 75c28fc4678774c1d2c21b839b048db6b563b9ae
>>> >>>>
>>> >>>> Commit ID the tag points at:
>>> >>>> 3a64cf6aff408a9cbdcb4d7456360a97d1a880f0
>>> >>>>
>>> >>>> Maven Artifacts:
>>> >>>> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247
>>> >>>>
>>> >>>> These are the Maven artifacts and their hashes:
>>> >>>>
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-javadoc.jar
>>> <
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-javadoc.jar>
>>> >>>> (SHA1: eb05c235b85ffb6f70ea72082eb904a9fe1969d7)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-sour
>>> ces.jar.asc
>>> >> <https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-sources.jar.asc>
>>> >>>> (SHA1: 7b98c8ab56e16e974c85963b2497840405a3375e)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.pom.asc
<
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6.pom.asc>
>>> >>>> (SHA1: 7524211600afb0deb3a5cab8ad9236299e3434a4)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.pom
<
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6.pom>
>>> >>>> (SHA1: b38df078df7623b708cd439b1cb750619bd659cc)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar.asc
<
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6.jar.asc>
>>> >>>> (SHA1: 4bf4d61116adcf699f1d7a866bcabcb50fc7b47f)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-java
>>> doc.jar.asc
>>> >> <https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-javadoc.jar.asc>
>>> >>>> (SHA1: d547ce41d41f38b143f5e5377d6bc990f0abbff6)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-sources.jar
>>> <
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-sources.jar>
>>> >>>> (SHA1: d9c5bbfb0b97c1f87e3f75cedd7eedbc5ec81182)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar
<
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6.jar>
>>> >>>> (SHA1: e6e1ca5e4574da2af0f8d2891410857e36ce5969)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-tests.jar.asc
>>> <
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-tests.jar.asc>
>>> >>>> (SHA1: b8d25f4a01a5f50ab450044dd2a7688e37554bed)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-test
>>> -sources.jar.asc
>>> >> <https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-test-sources.jar.asc>
>>> >>>> (SHA1: ccca81cd4539437f3def2644119a6f187168963c)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-test
>>> -sources.jar
>>> >> <https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-test-sources.jar>
>>> >>>> (SHA1: 8daf4979fb38811bd4a5bf39e38bc7a3a6582104)
>>> >>>> /org/apache/commons/commons-lang3/3.6/commons-lang3-3.6-tests.jar
<
>>> >> https://repository.apache.org/content/repositories/
>>> >> orgapachecommons-1247/org/apache/commons/commons-lang3/
>>> >> 3.6/commons-lang3-3.6-tests.jar>
>>> >>>> (SHA1: 1f158e950250efab7cbca635e8393ab2ef666bca)
>>> >>>>
>>> >>>> I have tested this with JDK 7, JDK 8 and JDK 9 EA b165 using
Maven
>>> >> 3.5.0.
>>> >>>>
>>> >>>> Details of changes since 3.5 are in the release notes:
>>> >>>>  https://dist.apache.org/repos/dist/dev/commons/lang/RELEASE-
>>> NOTES.txt
>>> >>>>  http://home.apache.org/~britter/commons/lang/LANG_3_6_
>>> >> RC2/changes-report.html
>>> >>>>
>>> >>>> Site:
>>> >>>>    http://home.apache.org/~britter/commons/lang/LANG_3_6_RC2/
>>> >>>> (note some *relative* links are broken and the 3.6 directories
are
>>> >>>> not yet created - these will be OK once the site is deployed)
>>> >>>>
>>> >>>> Clirr Report (compared to 3.5):
>>> >>>>  http://home.apache.org/~britter/commons/lang/LANG_3_6_
>>> >> RC2/clirr-report.html
>>> >>>>
>>> >>>> RAT Report:
>>> >>>>      http://home.apache.org/~britter/commons/lang/LANG_3_6_
>>> >> RC2/rat-report.html
>>> >>>>
>>> >>>> KEYS:
>>> >>>> https://www.apache.org/dist/commons/KEYS
>>> >>>>
>>> >>>> Please review the release candidate and vote.
>>> >>>> This vote will close no sooner that 72 hours from now,
>>> >>>> i.e. sometime after 12:00 EDT (UTC-4) 20-May 2017
>>> >>>>
>>> >>>> [ ] +1 Release these artifacts
>>> >>>> [ ] +0 OK, but...
>>> >>>> [ ] -0 OK, but really should fix...
>>> >>>> [ ] -1 I oppose this release because…
>>> >>>
>>> >>> This vote is still pending. Please review the RC and cast your vote.
>>> The
>>> >> following issues have been found:
>>> >>>
>>> >>> - mvn site does not work from the source archive
>>> >>> - Jigsaw meta data is missing
>>> >>>
>>> >>> I consider neither as a blocker for releasing 3.6 and would rather
>>> like
>>> >> to fix those in 3.6.1 (which I can prepare after my vacation). So
>>> unless
>>> >> nobody finds something else, I’d like to release this code.
>>> >>>
>>> >>> Thank you,
>>> >>> Benedikt
>>> >>>
>>> >>>>
>>> >>>> Thanks!
>>> >>>> Benedikt
>>> >>>
>>> >>>
>>> >>> ---------------------------------------------------------------------
>>> >>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>>> >>> For additional commands, e-mail: dev-help@commons.apache.org
>>> >>>
>>> >>
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> 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
>>> > <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?
>>> ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&link
>>> Code=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&link
>>> Code=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&link
>>> Code=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Bli
>>> nk_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: 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>
>>
>> <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: 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>
>
> <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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message