Skip to content
This repository was archived by the owner on Dec 15, 2021. It is now read-only.

Commit b742560

Browse files
committed
Merge pull request #8 from dturanski/master
SPR-8769
2 parents d76b671 + bfbeccc commit b742560

12 files changed

+259
-0
lines changed

SPR-8769/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
target
2+
.classpath
3+
.project

SPR-8769/pom.xml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>org.springframework.issues</groupId>
5+
<artifactId>SPR-8769</artifactId>
6+
<version>1.0-SNAPSHOT</version>
7+
<packaging>jar</packaging>
8+
9+
<properties>
10+
<!-- Take your pick -->
11+
<!-- <spring.version>3.1.0.M2</spring.version> -->
12+
<spring.version>3.0.6.RELEASE</spring.version>
13+
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
14+
</properties>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>log4j</groupId>
19+
<artifactId>log4j</artifactId>
20+
<version>1.2.15</version>
21+
</dependency>
22+
23+
<dependency>
24+
<groupId>org.mockito</groupId>
25+
<artifactId>mockito-all</artifactId>
26+
<version>1.8.5</version>
27+
<scope>test</scope>
28+
</dependency>
29+
30+
<dependency>
31+
<groupId>org.easymock</groupId>
32+
<artifactId>easymock</artifactId>
33+
<version>3.0</version>
34+
<scope>test</scope>
35+
</dependency>
36+
37+
<dependency>
38+
<groupId>org.springframework</groupId>
39+
<artifactId>spring-beans</artifactId>
40+
<version>${spring.version}</version>
41+
</dependency>
42+
43+
<dependency>
44+
<groupId>org.springframework</groupId>
45+
<artifactId>spring-core</artifactId>
46+
<version>${spring.version}</version>
47+
</dependency>
48+
49+
<dependency>
50+
<groupId>org.springframework</groupId>
51+
<artifactId>spring-context</artifactId>
52+
<version>${spring.version}</version>
53+
</dependency>
54+
55+
<dependency>
56+
<groupId>log4j</groupId>
57+
<artifactId>log4j</artifactId>
58+
<version>1.2.16</version>
59+
</dependency>
60+
61+
<dependency>
62+
<groupId>junit</groupId>
63+
<artifactId>junit</artifactId>
64+
<version>4.8.2</version>
65+
<scope>test</scope>
66+
</dependency>
67+
</dependencies>
68+
<!-- <repositories> -->
69+
<!-- <repository> -->
70+
<!-- <id>spring-maven-snapshot</id> -->
71+
<!-- <name>Springframework Maven Snapshot Repository</name> -->
72+
<!-- <url>http://maven.springframework.org/snapshot</url> -->
73+
<!-- <snapshots><enabled>true</enabled></snapshots> -->
74+
<!-- </repository> -->
75+
<!-- </repositories> -->
76+
77+
<build>
78+
<plugins>
79+
<plugin>
80+
<artifactId>maven-compiler-plugin</artifactId>
81+
<version>2.3.2</version>
82+
<configuration>
83+
<source>1.6</source>
84+
<target>1.6</target>
85+
</configuration>
86+
</plugin>
87+
<plugin>
88+
<artifactId>maven-surefire-plugin</artifactId>
89+
<version>2.7.2</version>
90+
<configuration>
91+
<includes>
92+
<include>**/*Tests.java</include>
93+
</includes>
94+
<excludes>
95+
<exclude>**/*Abstract*.java</exclude>
96+
</excludes>
97+
</configuration>
98+
</plugin>
99+
</plugins>
100+
</build>
101+
</project>
102+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package dturanski.autowire.bug;
2+
3+
import static org.junit.Assert.assertNotNull;
4+
import static org.junit.Assert.fail;
5+
6+
import org.apache.log4j.Logger;
7+
import org.easymock.EasyMock;
8+
import org.junit.Test;
9+
import org.springframework.context.ApplicationContext;
10+
import org.springframework.context.support.ClassPathXmlApplicationContext;
11+
12+
public class AutoWireMockTests {
13+
ApplicationContext ctx;
14+
private static final Logger logger = Logger.getLogger(AutoWireMockTests.class);
15+
@Test
16+
public void thisWorks() {
17+
ctx = new ClassPathXmlApplicationContext("/AutoWireMockTest-context-works.xml");
18+
}
19+
20+
@Test
21+
public void thisFails() throws ClassNotFoundException {
22+
try {
23+
ctx = new ClassPathXmlApplicationContext("/AutoWireMockTest-context-fails.xml");
24+
} catch (Exception e) {
25+
logger.error(e.getMessage(),e);
26+
fail();
27+
}
28+
}
29+
30+
@Test
31+
public void thisAlsoWorks() {
32+
ctx = new ClassPathXmlApplicationContext("/AutoWireMockTest-context-xml-di-works.xml");
33+
}
34+
35+
@Test
36+
public void thisAlsoWorksForSomeReason() {
37+
ctx = new ClassPathXmlApplicationContext("/AutoWireMockTest-context-factory-init-works.xml");
38+
Bar bar = ctx.getBean(Bar.class);
39+
assertNotNull(bar.foo);
40+
}
41+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dturanski.autowire.bug;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
5+
public class Bar {
6+
@Autowired
7+
Foo foo;
8+
9+
public void setFoo(Foo foo) {
10+
this.foo = foo;
11+
}
12+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dturanski.autowire.bug;
2+
3+
public interface Foo {
4+
5+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package dturanski.autowire.bug;
2+
3+
public class FooFactory {
4+
public static Foo init() {
5+
System.out.println("called init()");
6+
return new FooImpl();
7+
}
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dturanski.autowire.bug;
2+
3+
public class FooImpl implements Foo {
4+
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<beans xmlns="http://www.springframework.org/schema/beans"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:context="http://www.springframework.org/schema/context"
5+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
6+
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
7+
8+
<context:annotation-config/>
9+
10+
<bean id="bar" class="dturanski.autowire.bug.Bar"/>
11+
12+
<bean id="foo" class="dturanski.autowire.bug.FooFactory" factory-method="init"/>
13+
14+
</beans>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<beans xmlns="http://www.springframework.org/schema/beans"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:context="http://www.springframework.org/schema/context"
5+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
6+
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
7+
8+
<context:annotation-config/>
9+
10+
11+
<bean id="bar" class="dturanski.autowire.bug.Bar"/>
12+
13+
<!-- Autowire fails because beans 'out of order' -->
14+
15+
<!-- <bean class="org.mockito.Mockito" factory-method="mock"> -->
16+
<!-- <constructor-arg value="dturanski.autowire.bug.Foo"/> -->
17+
<!-- </bean> -->
18+
19+
20+
<bean class="org.easymock.EasyMock" factory-method="createMock">
21+
<constructor-arg value="dturanski.autowire.bug.Foo"/>
22+
</bean>
23+
24+
25+
</beans>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<beans xmlns="http://www.springframework.org/schema/beans"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:context="http://www.springframework.org/schema/context"
5+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
6+
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
7+
8+
<context:annotation-config/>
9+
10+
<!-- Autowire works because beans 'in order' -->
11+
<!-- <bean class="org.mockito.Mockito" factory-method="mock"> -->
12+
<!-- <constructor-arg value="dturanski.autowire.bug.Foo"/> -->
13+
<!-- </bean> -->
14+
15+
16+
<bean class="org.easymock.EasyMock" factory-method="createMock">
17+
<constructor-arg value="dturanski.autowire.bug.Foo"/>
18+
</bean>
19+
20+
<bean id="bar" class="dturanski.autowire.bug.Bar"/>
21+
22+
</beans>

0 commit comments

Comments
 (0)