Author: lukaszlenart Date: Sun Mar 14 10:50:19 2010 New Revision: 922811 URL: http://svn.apache.org/viewvc?rev=922811&view=rev Log: Resolved WW-3407 - added flag to turn off eager loading of actioon classess
Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java Modified: struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java?rev=922811&r1=922810&r2=922811&view=diff ============================================================================== --- struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java (original) +++ struts/struts2/trunk/plugins/convention/src/main/java/org/apache/struts2/convention/PackageBasedActionConfigBuilder.java Sun Mar 14 10:50:19 2010 @@ -105,6 +105,7 @@ public class PackageBasedActionConfigBui private boolean slashesInActionNames; private static final String DEFAULT_METHOD = "execute"; + private boolean eagerLoading = false; /** * Constructs actions based on a list of packages. @@ -281,6 +282,15 @@ public class PackageBasedActionConfigBui this.mapAllMatches = "true".equals(mapAllMatches); } + /** + * @param eagerLoading (Optional) If set, found action classes will be instantiated by the ObjectFactory to accelerate future use + * setting it up can clash with Spring managed beans + */ + @Inject(value = "struts.convention.action.eagerLoading", required = false) + public void setEagerLoading(String eagerLoading) { + this.eagerLoading = "true".equals(eagerLoading); + } + protected void initReloadClassLoader() { //when the configuration is reloaded, a new classloader will be setup if (isReloadEnabled() && reloadingClassLoader == null) @@ -567,13 +577,15 @@ public class PackageBasedActionConfigBui continue; } - // Tell the ObjectFactory about this class - try { - objectFactory.getClassInstance(actionClass.getName()); - } catch (ClassNotFoundException e) { - if (LOG.isErrorEnabled()) - LOG.error("Object Factory was unable to load class [#0]", e, actionClass.getName()); - throw new StrutsException("Object Factory was unable to load class " + actionClass.getName(), e); + if (eagerLoading) { + // Tell the ObjectFactory about this class + try { + objectFactory.getClassInstance(actionClass.getName()); + } catch (ClassNotFoundException e) { + if (LOG.isErrorEnabled()) + LOG.error("Object Factory was unable to load class [#0]", e, actionClass.getName()); + throw new StrutsException("Object Factory was unable to load class " + actionClass.getName(), e); + } } // Determine the action package