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;
+
+}


Reply via email to