From cae4e442edea80d5934730f9d179d9b70b0191eb Mon Sep 17 00:00:00 2001 From: "Donald J. Brown" Date: Thu, 26 Apr 2007 14:27:47 +0000 Subject: [PATCH] Fixing initialisation order problem WW-1753 git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/branches/STRUTS_2_0_X@532759 13f79535-47bb-0310-9956-ffa450edef68 --- .../spring/StrutsSpringObjectFactory.java | 23 +++++++------------ .../spring/StrutsSpringObjectFactoryTest.java | 12 +++------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java index 9b547c629..c6b9ecd77 100644 --- a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java +++ b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java @@ -43,22 +43,15 @@ import com.opensymphony.xwork2.spring.SpringObjectFactory; */ public class StrutsSpringObjectFactory extends SpringObjectFactory { private static final Log log = LogFactory.getLog(StrutsSpringObjectFactory.class); - - private String autoWire; - private boolean useClassCache = true; - - @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE,required=false) - public void setAutoWire(String val) { - autoWire = val; - } - - @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE,required=false) - public void setUseClassCache(String val) { - useClassCache = "true".equals(val); - } - + @Inject - public void setServletContext(ServletContext servletContext) { + public StrutsSpringObjectFactory( + @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE,required=false) String autoWire, + @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE,required=false) String useClassCacheStr, + @Inject ServletContext servletContext) { + + super(); + boolean useClassCache = "true".equals(useClassCacheStr); log.info("Initializing Struts-Spring integration..."); ApplicationContext appContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); diff --git a/plugins/spring/src/test/java/org/apache/struts2/spring/StrutsSpringObjectFactoryTest.java b/plugins/spring/src/test/java/org/apache/struts2/spring/StrutsSpringObjectFactoryTest.java index 283c8723e..c8136964a 100644 --- a/plugins/spring/src/test/java/org/apache/struts2/spring/StrutsSpringObjectFactoryTest.java +++ b/plugins/spring/src/test/java/org/apache/struts2/spring/StrutsSpringObjectFactoryTest.java @@ -38,18 +38,13 @@ public class StrutsSpringObjectFactoryTest extends TestCase { public void testNoSpringContext() throws Exception { // to cover situations where there will be logged an error - StrutsSpringObjectFactory fac = new StrutsSpringObjectFactory(); - ServletContext msc = (ServletContext) new MockServletContext(); - fac.setServletContext(msc); + StrutsSpringObjectFactory fac = new StrutsSpringObjectFactory(null, null, new MockServletContext()); assertEquals(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, fac.getAutowireStrategy()); } public void testWithSpringContext() throws Exception { - StrutsSpringObjectFactory fac = new StrutsSpringObjectFactory(); - - // autowire by constructure, we try a non default setting in this unit test - fac.setAutoWire("constructor"); + ConfigurableWebApplicationContext ac = new XmlWebApplicationContext(); ServletContext msc = (ServletContext) new MockServletContext(); @@ -57,8 +52,7 @@ public class StrutsSpringObjectFactoryTest extends TestCase { ac.setServletContext(msc); ac.setConfigLocations(new String[] {"org/apache/struts2/spring/StrutsSpringObjectFactoryTest-applicationContext.xml"}); ac.refresh(); - - fac.setServletContext(msc); + StrutsSpringObjectFactory fac = new StrutsSpringObjectFactory("constructor", null, msc); assertEquals(AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, fac.getAutowireStrategy()); }