Author: lukaszlenart Date: Thu Jul 25 09:42:16 2013 New Revision: 1506865 URL: http://svn.apache.org/r1506865 Log: WW-4144 Defines new extension point to build Results and adjusts ObjectFactory to use it
Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ResultBuilder.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java?rev=1506865&r1=1506864&r2=1506865&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java Thu Jul 25 09:42:16 2013 @@ -20,6 +20,7 @@ import com.opensymphony.xwork2.config.en import com.opensymphony.xwork2.config.entities.InterceptorConfig; import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.conversion.TypeConverter; +import com.opensymphony.xwork2.factory.ResultBuilder; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.interceptor.Interceptor; @@ -53,6 +54,8 @@ public class ObjectFactory implements Se private Container container; protected ReflectionProvider reflectionProvider; + private ResultBuilder resultBuilder; + @Inject(value="objectFactory.classloader", required=false) public void setClassLoader(ClassLoader cl) { this.ccl = cl; @@ -75,6 +78,11 @@ public class ObjectFactory implements Se this.container = container; } + @Inject(required = false) + public void setResultBuilder(ResultBuilder resultBuilder) { + this.resultBuilder = resultBuilder; + } + /** * @deprecated Since 2.1 */ @@ -221,6 +229,9 @@ public class ObjectFactory implements Se * @param extraContext a Map of extra context which uses the same keys as the {@link com.opensymphony.xwork2.ActionContext} */ public Result buildResult(ResultConfig resultConfig, Map<String, Object> extraContext) throws Exception { + if (resultBuilder != null) { + return resultBuilder.buildResult(resultConfig, extraContext); + } String resultClassName = resultConfig.getClassName(); Result result = null; Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ResultBuilder.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ResultBuilder.java?rev=1506865&view=auto ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ResultBuilder.java (added) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/factory/ResultBuilder.java Thu Jul 25 09:42:16 2013 @@ -0,0 +1,15 @@ +package com.opensymphony.xwork2.factory; + +import com.opensymphony.xwork2.Result; +import com.opensymphony.xwork2.config.entities.ResultConfig; + +import java.util.Map; + +/** + * Used by {@link com.opensymphony.xwork2.ObjectFactory} to build {@link com.opensymphony.xwork2.Result} + */ +public interface ResultBuilder { + + Result buildResult(ResultConfig resultConfig, Map<String, Object> extraContext) throws Exception; + +}