commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: [CANCEL][VOTE] Release Apache Commons Lang 3.6 based on RC2
Date Thu, 25 May 2017 00:02:08 GMT
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.

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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message