Author: mrdon
Date: Fri Jan 25 03:02:08 2008
New Revision: 615173

URL: http://svn.apache.org/viewvc?rev=615173&view=rev
Log:
Ensuring all action name parsing happens in ActionMapper, adding parsing to 
DWRValidator
WW-2217 WW-2323

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapper.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/NullActionMapper.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapperTest.java
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
 Fri Jan 25 03:02:08 2008
@@ -35,6 +35,8 @@
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.RequestMap;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.apache.struts2.views.annotations.StrutsTag;
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
 import org.apache.struts2.views.jsp.TagUtils;
@@ -124,6 +126,7 @@
     protected ValueStackFactory valueStackFactory;
     protected ActionProxyFactory actionProxyFactory;
     protected ActionProxy proxy;
+    protected ActionMapper actionMapper;
     protected String name;
     protected String namespace;
     protected boolean executeResult;
@@ -149,6 +152,11 @@
         this.valueStackFactory = valueStackFactory;
     }
 
+    @Inject
+    public void setActionMapper(ActionMapper mapper) {
+        this.actionMapper = mapper;
+    }
+
     public boolean end(Writer writer, String body) {
         boolean end = super.end(writer, "", false);
         try {
@@ -255,14 +263,9 @@
         final String actionName;
         final String methodName;
 
-        int exclamation = actualName.lastIndexOf("!");
-        if (exclamation != -1) {
-            actionName = actualName.substring(0, exclamation);
-            methodName = actualName.substring(exclamation + 1);
-        } else {
-            actionName = actualName;
-            methodName = null;
-        }
+        ActionMapping mapping = 
actionMapper.getMappingFromActionName(actualName);
+        actionName = mapping.getName();
+        methodName = mapping.getMethod();
 
         String namespace;
 

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java 
Fri Jan 25 03:02:08 2008
@@ -103,7 +103,6 @@
     protected String acceptcharset;
     protected String focusElement;
     
-    protected boolean enableDynamicMethodInvocation = true;
     protected Configuration configuration;
     protected ObjectFactory objectFactory;
     protected UrlRenderer urlRenderer;
@@ -123,11 +122,6 @@
 
     protected String getDefaultTemplate() {
         return TEMPLATE;
-    }
-
-    @Inject(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)
-    public void setEnableDynamicMethodInvocation(String enable) {
-        enableDynamicMethodInvocation = "true".equals(enable);
     }
 
     @Inject

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
 Fri Jan 25 03:02:08 2008
@@ -24,8 +24,11 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.struts2.views.annotations.StrutsTagAttribute;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
 import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.inject.Inject;
 
 /**
  * FormButton.
@@ -40,6 +43,7 @@
     protected String method;
     protected String align;
     protected String type;
+    protected ActionMapper actionMapper;
 
     public FormButton(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
@@ -70,11 +74,13 @@
             String name;
 
             if (action != null) {
-                name = "action:" + findString(action);
-
+                ActionMapping mapping = new ActionMapping();
+                mapping.setName(findString(action));
                 if (method != null) {
-                    name += "!" + findString(method);
+                    mapping.setMethod(findString(method));
                 }
+                mapping.setExtension("");
+                name = "action:" + 
actionMapper.getUriFromActionMapping(mapping);
             } else {
                 name = "method:" + findString(method);
             }
@@ -140,6 +146,11 @@
      * @return <tt>true</tt> if type image is supported.
      */
     protected abstract boolean supportsImageType();
+
+    @Inject
+    public void setActionMapper(ActionMapper mapper) {
+        this.actionMapper = mapper;
+    }
 
     @StrutsTagAttribute(description="Set action attribute.")
     public void setAction(String action) {

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ServletUrlRenderer.java
 Fri Jan 25 03:02:08 2008
@@ -25,10 +25,12 @@
 
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
 import org.apache.struts2.views.util.UrlHelper;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
@@ -43,8 +45,15 @@
      */
     private static final Logger LOG = 
LoggerFactory.getLogger(ServletUrlRenderer.class);
 
+    private ActionMapper actionMapper;
 
-       /**
+    @Inject
+    public void setActionMapper(ActionMapper mapper) {
+        this.actionMapper = mapper;
+    }
+
+
+    /**
         * [EMAIL PROTECTED]
         */
        public void renderUrl(Writer writer, URL urlComponent) {
@@ -112,21 +121,12 @@
                        }
                }
 
-               String actionMethod = "";
-               // FIXME: our implementation is flawed - the only concept of ! 
should be
-               // in DefaultActionMapper
-               // handle "name!method" convention.
-               if (formComponent.enableDynamicMethodInvocation) {
-                       if (action.indexOf("!") != -1) {
-                               int endIdx = action.lastIndexOf("!");
-                               actionMethod = action.substring(endIdx + 1, 
action.length());
-                               action = action.substring(0, endIdx);
-                       }
-               }
+        ActionMapping nameMapping = 
actionMapper.getMappingFromActionName(action);
+        String actionName = nameMapping.getName();
+        String actionMethod = nameMapping.getMethod();
 
                final ActionConfig actionConfig = 
formComponent.configuration.getRuntimeConfiguration().getActionConfig(
                                namespace, action);
-               String actionName = action;
                if (actionConfig != null) {
 
                        ActionMapping mapping = new ActionMapping(action, 
namespace, actionMethod, formComponent.parameters);

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapper.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/ActionMapper.java
 Fri Jan 25 03:02:08 2008
@@ -55,6 +55,15 @@
     ActionMapping getMapping(HttpServletRequest request, ConfigurationManager 
configManager);
 
     /**
+     * Expose the ActionMapping for the specified action name
+     *
+     * @param actionName The name of the action that may have other 
information embedded in it
+     * @return The appropriate action mapping
+     * @since 2.1.1
+     */
+    ActionMapping getMappingFromActionName(String actionName);
+
+    /**
      * Convert an ActionMapping into a URI string
      *
      * @param mapping The action mapping

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapper.java
 Fri Jan 25 03:02:08 2008
@@ -76,9 +76,7 @@
  * <!-- END SNIPPET: description -->
  *
  * @see ActionMapper
- * @see ActionMapperFactory
  * @see ActionMapping
- * @see IndividualActionMapperEntry
  *
  * @version $Date$ $Id$
  */
@@ -113,6 +111,28 @@
 
         for (ActionMapper actionMapper : actionMappers) {
             ActionMapping actionMapping = actionMapper.getMapping(request, 
configManager);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Using ActionMapper "+actionMapper);
+            }
+            if (actionMapping == null) {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("ActionMapper "+actionMapper+" failed to return 
an ActionMapping (null)");
+                }
+            }
+            else {
+                return actionMapping;
+            }
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("exhausted from ActionMapper that could return an 
ActionMapping");
+        }
+        return null;
+    }
+
+    public ActionMapping getMappingFromActionName(String actionName) {
+
+        for (ActionMapper actionMapper : actionMappers) {
+            ActionMapping actionMapping = 
actionMapper.getMappingFromActionName(actionName);
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Using ActionMapper "+actionMapper);
             }

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java
 Fri Jan 25 03:02:08 2008
@@ -279,6 +279,12 @@
             this.extensions = null;
         }
     }
+
+    public ActionMapping getMappingFromActionName(String actionName) {
+        ActionMapping mapping = new ActionMapping();
+        mapping.setName(actionName);
+        return parseActionName(mapping);
+    }
     
     /*
      * (non-Javadoc)
@@ -306,6 +312,15 @@
             return null;
         }
 
+        parseActionName(mapping);
+
+        return mapping;
+    }
+
+    protected ActionMapping parseActionName(ActionMapping mapping) {
+        if (mapping.getName() == null) {
+            return mapping;
+        }
         if (allowDynamicMethodCalls) {
             // handle "name!method" convention.
             String name = mapping.getName();
@@ -315,7 +330,6 @@
                 mapping.setMethod(name.substring(exclamation + 1));
             }
         }
-
         return mapping;
     }
 
@@ -494,9 +508,11 @@
     public String getUriFromActionMapping(ActionMapping mapping) {
         StringBuffer uri = new StringBuffer();
 
-        uri.append(mapping.getNamespace());
-        if (!"/".equals(mapping.getNamespace())) {
-            uri.append("/");
+        if (mapping.getNamespace() != null) {
+            uri.append(mapping.getNamespace());
+            if (!"/".equals(mapping.getNamespace())) {
+                uri.append("/");
+            }
         }
         String name = mapping.getName();
         String params = "";
@@ -510,16 +526,19 @@
             uri.append("!").append(mapping.getMethod());
         }
 
-        String extension = getDefaultExtension();
-        
-        // Look for the current extension, if available
-        ActionContext context = ActionContext.getContext();
-        if (context != null) {
-            ActionMapping orig = (ActionMapping) 
context.get(ServletActionContext.ACTION_MAPPING);
-            if (orig != null) {
-                extension = orig.getExtension();
+        String extension = mapping.getExtension();
+        if (extension == null) {
+            extension = getDefaultExtension();
+            // Look for the current extension, if available
+            ActionContext context = ActionContext.getContext();
+            if (context != null) {
+                ActionMapping orig = (ActionMapping) 
context.get(ServletActionContext.ACTION_MAPPING);
+                if (orig != null) {
+                    extension = orig.getExtension();
+                }
             }
         }
+        
         if (extension != null) {
             
             if (extension.length() == 0 || (extension.length() > 0 && 
uri.indexOf('.' + extension) == -1)) {

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java
 Fri Jan 25 03:02:08 2008
@@ -111,6 +111,10 @@
         return new ActionMapping(actionName, "", "", parameters);
     }
 
+    public ActionMapping getMappingFromActionName(String actionName) {
+        return new ActionMapping(actionName, null, null, null);
+    }
+
     /* (non-Javadoc)
      * @see 
org.apache.struts2.dispatcher.mapper.ActionMapper#getUriFromActionMapping(org.apache.struts2.dispatcher.mapper.ActionMapping)
      */

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
 Fri Jan 25 03:02:08 2008
@@ -31,6 +31,8 @@
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.RequestMap;
 import org.apache.struts2.dispatcher.SessionMap;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
 import uk.ltd.getahead.dwr.WebContextFactory;
 
@@ -68,7 +70,13 @@
     private static final Logger LOG = 
LoggerFactory.getLogger(DWRValidator.class);
     
     private ActionProxyFactory actionProxyFactory;
-    
+    private ActionMapper actionMapper;
+
+    @Inject
+    public void setActionMapper(ActionMapper actionMapper) {
+        this.actionMapper = actionMapper;
+    }
+
     @Inject
     public void setActionProxyFactory(ActionProxyFactory fac) {
         this.actionProxyFactory = fac;
@@ -98,9 +106,9 @@
                 servletContext);
 
         try {
-            Configuration cfg = 
du.getConfigurationManager().getConfiguration();
+            ActionMapping mapping = 
actionMapper.getMappingFromActionName(action);
             ActionInvocation inv = new ValidatorActionInvocation(ctx, true);
-            ActionProxy proxy = actionProxyFactory.createActionProxy(inv, 
namespace, action, null, true, true);
+            ActionProxy proxy = actionProxyFactory.createActionProxy(inv, 
namespace, mapping.getName(), mapping.getMethod(), true, true);
             proxy.execute();
             Object a = proxy.getAction();
 

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
 Fri Jan 25 03:02:08 2008
@@ -196,6 +196,10 @@
             return new ActionMapping();
         }
 
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        }
+
         public String getUriFromActionMapping(ActionMapping mapping) {
             return null;
         }
@@ -204,6 +208,10 @@
     public static class NullActionMapper implements ActionMapper {
         public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager config) {
             return null;
+        }
+
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
         }
 
         public String getUriFromActionMapping(ActionMapping mapping) {

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
 Fri Jan 25 03:02:08 2008
@@ -329,6 +329,10 @@
             return null;
         }
 
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        }
+
         public String getUriFromActionMapping(ActionMapping mapping) {
             return null;
         }
@@ -340,6 +344,10 @@
 
         public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager configManager) {
             return new ActionMapping();
+        }
+
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
         }
 
         public String getUriFromActionMapping(ActionMapping mapping) {

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/NullActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/NullActionMapper.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/NullActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/NullActionMapper.java
 Fri Jan 25 03:02:08 2008
@@ -33,19 +33,24 @@
  */
 public class NullActionMapper implements ActionMapper {
 
-        private static ActionMapping _actionMapping;
+    private static ActionMapping _actionMapping;
 
-        public NullActionMapper() {}
+    public NullActionMapper() {
+    }
 
-        public static void setActionMapping(ActionMapping 
actionMappingToBeRetrned) {
-            _actionMapping = actionMappingToBeRetrned;
-        }
+    public static void setActionMapping(ActionMapping 
actionMappingToBeRetrned) {
+        _actionMapping = actionMappingToBeRetrned;
+    }
 
-        public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager config) {
-            return _actionMapping;
-        }
+    public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager config) {
+        return _actionMapping;
+    }
 
-        public String getUriFromActionMapping(ActionMapping mapping) {
-            throw new UnsupportedOperationException("operation not supported");
-        }
+    public ActionMapping getMappingFromActionName(String actionName) {
+        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+    }
+
+    public String getUriFromActionMapping(ActionMapping mapping) {
+        throw new UnsupportedOperationException("operation not supported");
+    }
 }

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapperTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapperTest.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapperTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/CompositeActionMapperTest.java
 Fri Jan 25 03:02:08 2008
@@ -97,6 +97,11 @@
         public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager configManager) {
             return null;
         }
+
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        }
+
         public String getUriFromActionMapping(ActionMapping mapping) {
             return null;
         }
@@ -108,6 +113,11 @@
         public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager configManager) {
             return null;
         }
+
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        }
+
         public String getUriFromActionMapping(ActionMapping mapping) {
             return null;
         }
@@ -119,6 +129,11 @@
         public ActionMapping getMapping(HttpServletRequest request, 
ConfigurationManager configManager) {
             return actionMapping;
         }
+
+        public ActionMapping getMappingFromActionName(String actionName) {
+            return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        }
+
         public String getUriFromActionMapping(ActionMapping mapping) {
             return uri;
         }

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java?rev=615173&r1=615172&r2=615173&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
 Fri Jan 25 03:02:08 2008
@@ -171,6 +171,35 @@
         assertNull(mapping.getMethod());
     }
 
+    public void testGetMappingWithActionName_methodAndName() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        ActionMapping mapping = 
mapper.getMappingFromActionName("actionName!add");
+        assertEquals("actionName", mapping.getName());
+        assertEquals("add", mapping.getMethod());
+    }
+
+    public void testGetMappingWithActionName_name() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        ActionMapping mapping = mapper.getMappingFromActionName("actionName");
+        assertEquals("actionName", mapping.getName());
+        assertEquals(null, mapping.getMethod());
+    }
+
+    public void testGetMappingWithActionName_noDynamicMethod() throws 
Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        mapper.setAllowDynamicMethodCalls("false");
+        ActionMapping mapping = 
mapper.getMappingFromActionName("actionName!add");
+        assertEquals("actionName!add", mapping.getName());
+        assertEquals(null, mapping.getMethod());
+    }
+
+    public void testGetMappingWithActionName_null() throws Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        ActionMapping mapping = mapper.getMappingFromActionName(null);
+        assertEquals(null, mapping.getName());
+        assertEquals(null, mapping.getMethod());
+    }
+
     public void testGetUri() throws Exception {
         req.setupGetParameterMap(new HashMap());
         req.setupGetRequestURI("/my/namespace/actionName.action");
@@ -598,6 +627,17 @@
         String uri = mapper.getUriFromActionMapping(actionMapping);
 
         assertEquals("/myActionName.action", uri);
+    }
+
+    public void testGetUriFromActionMapper_justActionAndMethod() throws 
Exception {
+        DefaultActionMapper mapper = new DefaultActionMapper();
+        ActionMapping actionMapping = new ActionMapping();
+        actionMapping.setMethod("myMethod");
+        actionMapping.setName("myActionName");
+        actionMapping.setExtension("");
+        String uri = mapper.getUriFromActionMapping(actionMapping);
+
+        assertEquals("myActionName!myMethod", uri);
     }
     
     public void testGetUriFromActionMapperWhenBlankExtension() throws 
Exception {


Reply via email to