I haven't tried to build since a week ago, sorry, totally swamped at work. 

But I agree this should not stay this way. 

Sent from my iPhone

> On 2014/04/01, at 14:17, Gary Gregory <[email protected]> wrote:
> 
> Sadly it looks like it. I have not heard from other Windows users though. IMO 
> this is not acceptable. This could also be a bug in the test or the file 
> appender.
> 
> Gary
> 
> 
> -------- Original message --------
> From: Remko Popma 
> Date:04/01/2014 00:41 (GMT-05:00) 
> To: Log4J Developers List 
> Subject: Re: unit test failures? 
> 
> Does everyone who wants to build on windows now need to exclude certain tests 
> in order for the build to succeed?
> 
> Remko
> 
> Sent from my iPhone
> 
>> On 2014/04/01, at 12:50, Gary Gregory <[email protected]> wrote:
>> 
>> I've tweaked the POM to allow for Maven to skip specific tests like so:
>> 
>> mvn test -Dlog4j.skip.test1=**/ConfigurationTest.java 
>> -Dlog4j.skip.test2=**/FileOutputTest.java
>> 
>> Gary
>> 
>> 
>>> On Mon, Mar 31, 2014 at 9:38 PM, Gary Gregory <[email protected]> 
>>> wrote:
>>> If I change the method to:
>>> 
>>>     private void clean() {
>>>         for (final File file : files) {
>>>             if (file.exists()) {
>>>                 if (!file.delete()) {
>>>                     StatusLogger.getLogger().error(
>>>                             "TODO [FileAppender problem?] Could not delete 
>>> file " + file + ", last modifed "
>>>                                     + DateFormat.getInstance().format(new 
>>> Date(file.lastModified())));
>>>                 } else {
>>>                     file.deleteOnExit();
>>>                 }
>>>             }
>>>         }
>>> 
>>> I get 3 failures (instead of 9):
>>> 
>>> ConfigurationTest
>>> org.apache.logging.log4j.core.config.ConfigurationTest
>>> [0]
>>> testLogToFile[0](org.apache.logging.log4j.core.config.ConfigurationTest)
>>> java.lang.AssertionError: 
>>> Expected: is <1>
>>>      but: was <2>
>>> 
>>>     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:865)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:832)
>>> 
>>>     at 
>>> org.apache.logging.log4j.core.config.ConfigurationTest.testLogToFile(ConfigurationTest.java:138)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at java.lang.reflect.Method.invoke(Unknown Source)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>> 
>>>     at 
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>> 
>>>     at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
>>> 
>>>     at 
>>> org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:52)
>>> 
>>>     at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>> 
>>>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:127)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:26)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>> 
>>> 
>>> 
>>> [1]
>>> testLogToFile[1](org.apache.logging.log4j.core.config.ConfigurationTest)
>>> java.lang.AssertionError: 
>>> Expected: is <1>
>>>      but: was <3>
>>> 
>>>     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:865)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:832)
>>> 
>>>     at 
>>> org.apache.logging.log4j.core.config.ConfigurationTest.testLogToFile(ConfigurationTest.java:138)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at java.lang.reflect.Method.invoke(Unknown Source)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>> 
>>>     at 
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>> 
>>>     at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
>>> 
>>>     at 
>>> org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:52)
>>> 
>>>     at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>> 
>>>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:127)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:26)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>> 
>>> 
>>> 
>>> [2]
>>> testLogToFile[2](org.apache.logging.log4j.core.config.ConfigurationTest)
>>> java.lang.AssertionError: 
>>> Expected: is <1>
>>>      but: was <4>
>>> 
>>>     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:865)
>>> 
>>>     at org.junit.Assert.assertThat(Assert.java:832)
>>> 
>>>     at 
>>> org.apache.logging.log4j.core.config.ConfigurationTest.testLogToFile(ConfigurationTest.java:138)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> 
>>>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> 
>>>     at java.lang.reflect.Method.invoke(Unknown Source)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>>> 
>>>     at 
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>>> 
>>>     at 
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>>> 
>>>     at 
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>>> 
>>>     at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
>>> 
>>>     at 
>>> org.apache.logging.log4j.junit.InitialLoggerContext$1.evaluate(InitialLoggerContext.java:52)
>>> 
>>>     at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>> 
>>>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>>> 
>>>     at 
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:127)
>>> 
>>>     at org.junit.runners.Suite.runChild(Suite.java:26)
>>> 
>>>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>>> 
>>>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>>> 
>>>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>>> 
>>>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>>> 
>>>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>>> 
>>>     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>> 
>>>     at 
>>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>> 
>>> 
>>> Gary
>>> 
>>> 
>>> 
>>> 
>>>> On Mon, Mar 31, 2014 at 4:10 PM, Matt Sicker <[email protected]> wrote:
>>>> In log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java 
>>>> on line 48, could you try deleting the "assertTrue" part?
>>>> 
>>>> I get occasional test failures myself from the same test in my TeamCity 
>>>> instance, but it seems to be a different issue with the log file *not* 
>>>> being deleted! It's actually possible that this modified test has exposed 
>>>> a potential bug with the FileAppender code. It seems to be holding on to 
>>>> the file longer than it should.
>>>> 
>>>> 
>>>>> On 31 March 2014 13:54, Ralph Goers <[email protected]> wrote:
>>>>> I’d guess it is Windows specific.  I haven’t looked at what Matt did to 
>>>>> this yet.
>>>>> 
>>>>> Ralph
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Mar 31, 2014, at 11:08 AM, Gary Gregory <[email protected]> 
>>>>>> wrote:
>>>>>> 
>>>>>> I just tested a clean trunk and I get the following failures:
>>>>>> 
>>>>>> Failed tests:
>>>>>>   ConfigurationTest.testLogToFile[0] Could not delete target\test.log, 
>>>>>> last modifed 3/31/14 1:50 PM
>>>>>>   ConfigurationTest.testConfiguredAppenders[0] Could not delete 
>>>>>> target\test.log, last modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testLogger[0] Could not delete target\test.log, last 
>>>>>> modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testLogToFile[1] Could not delete target\test.log, 
>>>>>> last modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testConfiguredAppenders[1] Could not delete 
>>>>>> target\test.log, last modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testLogger[1] Could not delete target\test.log, last 
>>>>>> modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testLogToFile[2] Could not delete target\test.log, 
>>>>>> last modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testConfiguredAppenders[2] Could not delete 
>>>>>> target\test.log, last modifed 3/31/14 1:51 PM
>>>>>>   ConfigurationTest.testLogger[2] Could not delete target\test.log, last 
>>>>>> modifed 3/31/14 1:51 PM
>>>>>>   FileOutputTest.testConfig:59 Couldn't delete file target\status.log
>>>>>> 
>>>>>> Tests run: 542, Failures: 10, Errors: 0, Skipped: 15
>>>>>> 
>>>>>> I tested with:
>>>>>> 
>>>>>> Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 
>>>>>> 2013-02-19 08:51:28-0500)
>>>>>> Maven home: C:\Java\apache-maven-3.0.5\bin\..
>>>>>> Java version: 1.6.0_45, vendor: Sun Microsystems Inc.
>>>>>> Java home: C:\Program Files\Java\jdk1.6.0_45\jre
>>>>>> Default locale: en_US, platform encoding: Cp1252
>>>>>> OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
>>>>>> 
>>>>>> and:
>>>>>> 
>>>>>> Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 
>>>>>> 2013-02-19 08:51:28-0500)
>>>>>> Maven home: C:\Java\apache-maven-3.0.5\bin\..
>>>>>> Java version: 1.8.0_20-ea, vendor: Oracle Corporation
>>>>>> Java home: C:\Program Files\Java\jdk1.8.0_20\jre
>>>>>> Default locale: en_US, platform encoding: Cp1252
>>>>>> OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"
>>>>>> 
>>>>>> Matt? Bueller? Anybody?
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>> 
>>>>>>> On Mon, Mar 31, 2014 at 2:48 AM, Ralph Goers 
>>>>>>> <[email protected]> wrote:
>>>>>>> Trunk is building for me.
>>>>>>> 
>>>>>>> Ralph
>>>>>>> 
>>>>>>>> On Mar 30, 2014, at 7:43 PM, Gary Gregory <[email protected]> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Hi All:
>>>>>>>> 
>>>>>>>> I have a large change set (can't break it up into smaller bits) on my 
>>>>>>>> machine and it does not seem related to the following failures I see:
>>>>>>>> 
>>>>>>>> Results :
>>>>>>>> 
>>>>>>>> Failed tests:
>>>>>>>>   XmlFileAppenderTest.testFlushAtEndOfBatch:70 line1 incorrect: [  
>>>>>>>> <Event logger="com.foo.Bar" timestamp="1396233402662" level="INFO" 
>>>>>>>> thread="main" 
>>>>>>>> fcqn="org.apache.logging.log4j.spi.AbstractLoggerProvider">], does not 
>>>>>>>> contain: [<log4j:Even
>>>>>>>> t ]
>>>>>>>>   ConfigurationTest.testLogToFile[0] null
>>>>>>>>   ConfigurationTest.testConfiguredAppenders[0] null
>>>>>>>>   ConfigurationTest.testLogger[0] null
>>>>>>>>   ConfigurationTest.testLogToFile[1] null
>>>>>>>>   ConfigurationTest.testConfiguredAppenders[1] null
>>>>>>>>   ConfigurationTest.testLogger[1] null
>>>>>>>>   ConfigurationTest.testLogToFile[2] null
>>>>>>>>   ConfigurationTest.testConfiguredAppenders[2] null
>>>>>>>>   ConfigurationTest.testLogger[2] null
>>>>>>>>   FileOutputTest.testConfig:59 Couldn't delete file
>>>>>>>> 
>>>>>>>> Tests in error:
>>>>>>>>   
>>>>>>>> JpaH2AppenderTest>AbstractJpaAppenderTest.testBaseJpaEntityAppender:107
>>>>>>>>  » AppenderLogging
>>>>>>>>   
>>>>>>>> JpaH2AppenderTest>AbstractJpaAppenderTest.testPerformanceOfAppenderWith10000EventsUsingBasicEntity:224
>>>>>>>>  » AppenderLogging
>>>>>>>>   
>>>>>>>> JpaH2AppenderTest>AbstractJpaAppenderTest.testBasicJpaEntityAppender:169
>>>>>>>>  » AppenderLogging
>>>>>>>>   
>>>>>>>> JpaHyperSqlAppenderTest>AbstractJpaAppenderTest.testBaseJpaEntityAppender:107
>>>>>>>>  » AppenderLogging
>>>>>>>>   
>>>>>>>> JpaHyperSqlAppenderTest>AbstractJpaAppenderTest.testPerformanceOfAppenderWith10000EventsUsingBasicEntity:224
>>>>>>>>  » AppenderLogging
>>>>>>>>   
>>>>>>>> JpaHyperSqlAppenderTest>AbstractJpaAppenderTest.testBasicJpaEntityAppender:169
>>>>>>>>  » AppenderLogging
>>>>>>>> 
>>>>>>>> Tests run: 569, Failures: 11, Errors: 6, Skipped: 21
>>>>>>>> 
>>>>>>>> Can folks comment on whether they can do a clean build?
>>>>>>>> 
>>>>>>>> Thank you!
>>>>>>>> 
>>>>>>>> Gary
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> E-Mail: [email protected] | [email protected] 
>>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>>> JUnit in Action, Second Edition
>>>>>>>> Spring Batch in Action
>>>>>>>> Blog: http://garygregory.wordpress.com 
>>>>>>>> Home: http://garygregory.com/
>>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> E-Mail: [email protected] | [email protected] 
>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>> JUnit in Action, Second Edition
>>>>>> Spring Batch in Action
>>>>>> Blog: http://garygregory.wordpress.com 
>>>>>> Home: http://garygregory.com/
>>>>>> Tweet! http://twitter.com/GaryGregory
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Matt Sicker <[email protected]>
>>> 
>>> 
>>> 
>>> -- 
>>> E-Mail: [email protected] | [email protected] 
>>> Java Persistence with Hibernate, Second Edition
>>> JUnit in Action, Second Edition
>>> Spring Batch in Action
>>> Blog: http://garygregory.wordpress.com 
>>> Home: http://garygregory.com/
>>> Tweet! http://twitter.com/GaryGregory
>> 
>> 
>> 
>> -- 
>> E-Mail: [email protected] | [email protected] 
>> Java Persistence with Hibernate, Second Edition
>> JUnit in Action, Second Edition
>> Spring Batch in Action
>> Blog: http://garygregory.wordpress.com 
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory

Reply via email to