From 3767ad774325797341087b4894f9ca20a6573d38 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Apr 2012 18:32:17 +0200 Subject: [PATCH 1/5] Add project for SPR-9181 --- SPR-9181/pom.xml | 62 +++++++++++++++++++ SPR-9181/pom.xml.bak | 62 +++++++++++++++++++ .../java/org/springframework/issues/Bar.java | 5 ++ .../java/org/springframework/issues/Foo.java | 14 +++++ SPR-9181/src/main/resources/.gitignore | 0 .../springframework/issues/ReproTests.java | 28 +++++++++ SPR-9181/src/test/resources/log4j.properties | 7 +++ .../issues/ReproTests-context.xml | 14 +++++ 8 files changed, 192 insertions(+) create mode 100644 SPR-9181/pom.xml create mode 100644 SPR-9181/pom.xml.bak create mode 100644 SPR-9181/src/main/java/org/springframework/issues/Bar.java create mode 100644 SPR-9181/src/main/java/org/springframework/issues/Foo.java create mode 100644 SPR-9181/src/main/resources/.gitignore create mode 100644 SPR-9181/src/test/java/org/springframework/issues/ReproTests.java create mode 100644 SPR-9181/src/test/resources/log4j.properties create mode 100644 SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml diff --git a/SPR-9181/pom.xml b/SPR-9181/pom.xml new file mode 100644 index 00000000..b09312a0 --- /dev/null +++ b/SPR-9181/pom.xml @@ -0,0 +1,62 @@ + + 4.0.0 + org.springframework.issues + SPR-9181 + 1.0-SNAPSHOT + jar + + + org.springframework + spring-context + 3.2.0.BUILD-SNAPSHOT + + + log4j + log4j + 1.2.16 + + + junit + junit + 4.8 + test + + + + + spring-maven-snapshot + Springframework Maven Snapshot Repository + http://repo.springsource.org/snapshot + true + + + + UTF8 + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + maven-surefire-plugin + 2.7.2 + + + **/*Tests.java + + + **/*Abstract*.java + + + + + + + diff --git a/SPR-9181/pom.xml.bak b/SPR-9181/pom.xml.bak new file mode 100644 index 00000000..fdec4712 --- /dev/null +++ b/SPR-9181/pom.xml.bak @@ -0,0 +1,62 @@ + + 4.0.0 + org.springframework.issues + SPR-0000 + 1.0-SNAPSHOT + jar + + + org.springframework + spring-context + 3.2.0.BUILD-SNAPSHOT + + + log4j + log4j + 1.2.16 + + + junit + junit + 4.8 + test + + + + + spring-maven-snapshot + Springframework Maven Snapshot Repository + http://repo.springsource.org/snapshot + true + + + + UTF8 + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + maven-surefire-plugin + 2.7.2 + + + **/*Tests.java + + + **/*Abstract*.java + + + + + + + diff --git a/SPR-9181/src/main/java/org/springframework/issues/Bar.java b/SPR-9181/src/main/java/org/springframework/issues/Bar.java new file mode 100644 index 00000000..2180bac3 --- /dev/null +++ b/SPR-9181/src/main/java/org/springframework/issues/Bar.java @@ -0,0 +1,5 @@ +package org.springframework.issues; + +public class Bar { + +} diff --git a/SPR-9181/src/main/java/org/springframework/issues/Foo.java b/SPR-9181/src/main/java/org/springframework/issues/Foo.java new file mode 100644 index 00000000..ceefd968 --- /dev/null +++ b/SPR-9181/src/main/java/org/springframework/issues/Foo.java @@ -0,0 +1,14 @@ +package org.springframework.issues; + +public class Foo { + + private final Bar bar; + + public Foo(Bar bar) { + this.bar = bar; + } + + public Bar getBar() { + return this.bar; + } +} diff --git a/SPR-9181/src/main/resources/.gitignore b/SPR-9181/src/main/resources/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java b/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java new file mode 100644 index 00000000..229e0b31 --- /dev/null +++ b/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java @@ -0,0 +1,28 @@ +package org.springframework.issues; + +import static org.hamcrest.CoreMatchers.sameInstance; +import static org.junit.Assert.assertThat; + +import org.junit.Test; +import org.springframework.context.support.GenericXmlApplicationContext; + +/** + * Unit test that reproduces an issue reported against SPR JIRA. @Test methods within + * need not pass with the green bar! Rather they should fail in such a way that + * demonstrates the reported issue. + */ +public class ReproTests { + + @Test + public void repro() { + GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); + ctx.load("classpath:org/springframework/issues/ReproTests-context.xml"); + ctx.refresh(); + + Foo foo = ctx.getBean(Foo.class); + Bar bar = ctx.getBean(Bar.class); + + assertThat(foo.getBar(), sameInstance(bar)); + } + +} diff --git a/SPR-9181/src/test/resources/log4j.properties b/SPR-9181/src/test/resources/log4j.properties new file mode 100644 index 00000000..82776b7b --- /dev/null +++ b/SPR-9181/src/test/resources/log4j.properties @@ -0,0 +1,7 @@ +log4j.rootCategory=ERROR, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n + +log4j.category.org.springframework=WARN \ No newline at end of file diff --git a/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml b/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml new file mode 100644 index 00000000..66aad198 --- /dev/null +++ b/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml @@ -0,0 +1,14 @@ + + + + + + + + + + From 049dffc58d6a31a2819a7b6d90e09f825ad68bf9 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Apr 2012 18:42:34 +0200 Subject: [PATCH 2/5] SPR-9181 --- SPR-9181/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPR-9181/pom.xml b/SPR-9181/pom.xml index b09312a0..97d248d3 100644 --- a/SPR-9181/pom.xml +++ b/SPR-9181/pom.xml @@ -9,7 +9,8 @@ org.springframework spring-context - 3.2.0.BUILD-SNAPSHOT + + 3.1.1.RELEASE log4j From a05ac4d7ee11547b0ec749440f8bf43b264a3252 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Apr 2012 19:38:02 +0200 Subject: [PATCH 3/5] First version --- SPR-9181/pom.xml | 8 ++++++- .../java/org/springframework/issues/Bar.java | 24 +++++++++++++++++++ .../java/org/springframework/issues/Foo.java | 17 +++++++------ .../springframework/issues/ReproTests.java | 10 ++++---- .../issues/ReproTests-context.xml | 22 ++++++++++------- 5 files changed, 60 insertions(+), 21 deletions(-) diff --git a/SPR-9181/pom.xml b/SPR-9181/pom.xml index 97d248d3..c76dd849 100644 --- a/SPR-9181/pom.xml +++ b/SPR-9181/pom.xml @@ -23,7 +23,13 @@ 4.8 test - + + javax.inject + javax.inject + 1 + + + spring-maven-snapshot diff --git a/SPR-9181/src/main/java/org/springframework/issues/Bar.java b/SPR-9181/src/main/java/org/springframework/issues/Bar.java index 2180bac3..4871de2c 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/Bar.java +++ b/SPR-9181/src/main/java/org/springframework/issues/Bar.java @@ -1,5 +1,29 @@ package org.springframework.issues; +import org.springframework.context.annotation.Scope; + +import javax.inject.Inject; +import javax.inject.Named; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +@Named +@Scope(SCOPE_PROTOTYPE) public class Bar { + + Foo foo; + + @Inject + public Bar(@Named("testFactory") Foo foo){ + this.foo = foo; + } + + public Foo getFoo(){ + return foo; + } + + + + } diff --git a/SPR-9181/src/main/java/org/springframework/issues/Foo.java b/SPR-9181/src/main/java/org/springframework/issues/Foo.java index ceefd968..d260b3ec 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/Foo.java +++ b/SPR-9181/src/main/java/org/springframework/issues/Foo.java @@ -1,14 +1,17 @@ package org.springframework.issues; +import javax.inject.Provider; + + public class Foo { - private final Bar bar; + Provider> testProvider; - public Foo(Bar bar) { - this.bar = bar; - } + public Foo(Provider> testProvider) { + this.testProvider = testProvider; + } - public Bar getBar() { - return this.bar; - } + public ProviderClass getProviderClass(){ + return testProvider.get(); + } } diff --git a/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java b/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java index 229e0b31..2fd7488b 100644 --- a/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java +++ b/SPR-9181/src/test/java/org/springframework/issues/ReproTests.java @@ -1,8 +1,5 @@ package org.springframework.issues; -import static org.hamcrest.CoreMatchers.sameInstance; -import static org.junit.Assert.assertThat; - import org.junit.Test; import org.springframework.context.support.GenericXmlApplicationContext; @@ -19,10 +16,13 @@ public void repro() { ctx.load("classpath:org/springframework/issues/ReproTests-context.xml"); ctx.refresh(); - Foo foo = ctx.getBean(Foo.class); + // First time works Bar bar = ctx.getBean(Bar.class); + bar.getFoo().getProviderClass(); - assertThat(foo.getBar(), sameInstance(bar)); + // Second call crashes + bar = ctx.getBean(Bar.class); + bar.getFoo().getProviderClass(); } } diff --git a/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml b/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml index 66aad198..4572805d 100644 --- a/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml +++ b/SPR-9181/src/test/resources/org/springframework/issues/ReproTests-context.xml @@ -1,14 +1,20 @@ + xmlns:aop="http://www.springframework.org/schema/aop" + xmlns:tx="http://www.springframework.org/schema/tx" + xmlns:context="http://www.springframework.org/schema/context" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" + default-lazy-init="true"> - - - - + + + + + From 4b0ad6ad660e4474712941c2c057268929b54e90 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Apr 2012 19:39:44 +0200 Subject: [PATCH 4/5] Still crashes --- .../org/springframework/issues/Factory.java | 27 +++++++++++++++++++ .../springframework/issues/ProviderClass.java | 9 +++++++ .../issues/ProviderClassImpl.java | 21 +++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 SPR-9181/src/main/java/org/springframework/issues/Factory.java create mode 100644 SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java create mode 100644 SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java diff --git a/SPR-9181/src/main/java/org/springframework/issues/Factory.java b/SPR-9181/src/main/java/org/springframework/issues/Factory.java new file mode 100644 index 00000000..c5d2bb01 --- /dev/null +++ b/SPR-9181/src/main/java/org/springframework/issues/Factory.java @@ -0,0 +1,27 @@ +package org.springframework.issues; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Scope; + +import javax.inject.Named; +import javax.inject.Provider; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * TODO Beschreibung angeben + * + * @author andr + */ +@Named +@Lazy(false) +public class Factory { + @Bean + @Scope(SCOPE_PROTOTYPE) + public Foo testFactory( + final Provider> testProvider + ) { + return new Foo(testProvider); + } +} diff --git a/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java b/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java new file mode 100644 index 00000000..4e309cb3 --- /dev/null +++ b/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java @@ -0,0 +1,9 @@ +package org.springframework.issues; + +/** + * TODO Beschreibung angeben + * + * @author andr + */ +public interface ProviderClass { +} diff --git a/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java b/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java new file mode 100644 index 00000000..f21a85ec --- /dev/null +++ b/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java @@ -0,0 +1,21 @@ +package org.springframework.issues; + +import org.springframework.context.annotation.Scope; + +import javax.inject.Named; + +import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE; + +/** + * TODO Beschreibung angeben + * + * @author andr + */ +@Named +@Scope(SCOPE_PROTOTYPE) +public class ProviderClassImpl implements ProviderClass { + + public ProviderClassImpl(){ + + } +} From f8684a7b949e35d5b2ce1bb262b252385dbb3f3f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 27 Apr 2012 19:45:33 +0200 Subject: [PATCH 5/5] Still crashes --- SPR-9181/pom.xml | 5 ++++- .../src/main/java/org/springframework/issues/Factory.java | 2 +- SPR-9181/src/main/java/org/springframework/issues/Foo.java | 4 ++-- .../main/java/org/springframework/issues/ProviderClass.java | 2 +- .../java/org/springframework/issues/ProviderClassImpl.java | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/SPR-9181/pom.xml b/SPR-9181/pom.xml index c76dd849..02ecd711 100644 --- a/SPR-9181/pom.xml +++ b/SPR-9181/pom.xml @@ -9,8 +9,11 @@ org.springframework spring-context - + + 3.1.1.RELEASE + + log4j diff --git a/SPR-9181/src/main/java/org/springframework/issues/Factory.java b/SPR-9181/src/main/java/org/springframework/issues/Factory.java index c5d2bb01..672fe3aa 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/Factory.java +++ b/SPR-9181/src/main/java/org/springframework/issues/Factory.java @@ -20,7 +20,7 @@ public class Factory { @Bean @Scope(SCOPE_PROTOTYPE) public Foo testFactory( - final Provider> testProvider + final Provider testProvider ) { return new Foo(testProvider); } diff --git a/SPR-9181/src/main/java/org/springframework/issues/Foo.java b/SPR-9181/src/main/java/org/springframework/issues/Foo.java index d260b3ec..8e81bfdb 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/Foo.java +++ b/SPR-9181/src/main/java/org/springframework/issues/Foo.java @@ -5,9 +5,9 @@ public class Foo { - Provider> testProvider; + Provider testProvider; - public Foo(Provider> testProvider) { + public Foo(Provider testProvider) { this.testProvider = testProvider; } diff --git a/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java b/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java index 4e309cb3..c40cc47f 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java +++ b/SPR-9181/src/main/java/org/springframework/issues/ProviderClass.java @@ -5,5 +5,5 @@ * * @author andr */ -public interface ProviderClass { +public interface ProviderClass { } diff --git a/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java b/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java index f21a85ec..d9e9dea3 100644 --- a/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java +++ b/SPR-9181/src/main/java/org/springframework/issues/ProviderClassImpl.java @@ -13,7 +13,7 @@ */ @Named @Scope(SCOPE_PROTOTYPE) -public class ProviderClassImpl implements ProviderClass { +public class ProviderClassImpl implements ProviderClass { public ProviderClassImpl(){