Author: lukaszlenart
Date: Wed Mar 16 20:49:41 2011
New Revision: 1082295

URL: http://svn.apache.org/viewvc?rev=1082295&view=rev
Log:
Solves WW-3590 - adds dedicated namespace for REST services

Modified:
    
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java

Modified: 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java?rev=1082295&r1=1082294&r2=1082295&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java
 Wed Mar 16 20:49:41 2011
@@ -24,6 +24,7 @@ package org.apache.struts2.rest;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.DefaultActionProxyFactory;
+import com.opensymphony.xwork2.inject.Inject;
 
 import java.util.Map;
 
@@ -33,11 +34,24 @@ import java.util.Map;
  */
 public class RestActionProxyFactory extends DefaultActionProxyFactory {
 
+    public static final String STRUTS_REST_NAMESPACE = "struts.rest.namespace";
+
+    protected String namespace = "/";
+
+    @Inject(STRUTS_REST_NAMESPACE)
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+
     @Override
     public ActionProxy createActionProxy(String namespace, String actionName, 
String methodName, Map extraContext, boolean executeResult, boolean 
cleanupContext) {
-        ActionInvocation inv = new RestActionInvocation(extraContext, true);
-        container.inject(inv);
-        return createActionProxy(inv, namespace, actionName, methodName, 
executeResult, cleanupContext);
+        if (namespace.startsWith(this.namespace)) {
+            ActionInvocation inv = new RestActionInvocation(extraContext, 
true);
+            container.inject(inv);
+            return createActionProxy(inv, namespace, actionName, methodName, 
executeResult, cleanupContext);
+        } else {
+            return super.createActionProxy(namespace, actionName, methodName, 
extraContext, executeResult, cleanupContext);
+        }
     }
 
 }


Reply via email to