Author: lukaszlenart
Date: Mon Dec 17 14:50:18 2012
New Revision: 1422955

URL: http://svn.apache.org/viewvc?rev=1422955&view=rev
Log:
Moves documentation to the wiki

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/RestfulActionMapper.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java?rev=1422955&r1=1422954&r2=1422955&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapper.java
 Mon Dec 17 14:50:18 2012
@@ -33,111 +33,8 @@ import java.util.HashMap;
 import java.util.StringTokenizer;
 
 /**
- * <!-- START SNIPPET: description -->
- *
- * Improved restful action mapper that adds several ReST-style improvements to
- * action mapping, but supports fully-customized URL's via XML.  The two 
primary
- * ReST enhancements are:
- * <ul>
- *  <li>If the method is not specified (via '!' or 'method:' prefix), the 
method is
- *      "guessed" at using ReST-style conventions that examine the URL and the 
HTTP
- *      method.</li>
- *  <li>Parameters are extracted from the action name, if parameter name/value 
pairs
- *      are specified using PARAM_NAME/PARAM_VALUE syntax.
- * </ul>
- * <p>
- * These two improvements allow a GET request for 
'category/action/movie/Thrillers' to
- * be mapped to the action name 'movie' with an id of 'Thrillers' with an 
extra parameter
- * named 'category' with a value of 'action'.  A single action mapping can 
then handle
- * all CRUD operations using wildcards, e.g.
- * </p>
- * <pre>
- *   &lt;action name="movie/*" className="app.MovieAction"&gt;
- *     &lt;param name="id"&gt;{0}&lt;/param&gt;
- *     ...
- *   &lt;/action&gt;
- * </pre>
- * <p>
- *   This mapper supports the following parameters:
- * </p>
- * <ul>
- *   <li><code>struts.mapper.idParameterName</code> - If set, this value will 
be the name
- *       of the parameter under which the id is stored.  The id will then be 
removed
- *       from the action name.  This allows restful actions to not require 
wildcards.
- *   </li>
- * </ul>
- * <p>
- * The following URL's will invoke its methods:
- * </p>
- * <ul> 
- *  <li><code>GET:    /movie/               => method="index"</code></li>
- *  <li><code>GET:    /movie/Thrillers      => method="view", 
id="Thrillers"</code></li>
- *  <li><code>GET:    /movie/Thrillers!edit => method="edit", 
id="Thrillers"</code></li>
- *  <li><code>GET:    /movie/new            => method="editNew"</code></li>
- *  <li><code>POST:   /movie/               => method="create"</code></li>
- *  <li><code>PUT:    /movie/Thrillers      => method="update", 
id="Thrillers"</code></li>
- *  <li><code>DELETE: /movie/Thrillers      => method="remove", 
id="Thrillers"</code></li>
- * </ul>
- * <p>
- * To simulate the HTTP methods PUT and DELETE, since they aren't supported by 
HTML,
- * the HTTP parameter "__http_method" will be used.
- * </p>
- * <p>
- * The syntax and design for this feature was inspired by the ReST support in 
Ruby on Rails.
- * See <a 
href="http://ryandaigle.com/articles/2006/08/01/whats-new-in-edge-rails-simply-restful-support-and-how-to-use-it";>
- * 
http://ryandaigle.com/articles/2006/08/01/whats-new-in-edge-rails-simply-restful-support-and-how-to-use-it
- * </a>
- * </p>
- *
- * <!-- END SNIPPET: description -->
- *
- * <!-- START SNIPPET: example -->
- *
- * To use the Restful2ActionMapper in an existing struts application we have 
to change
- * the strus.mapper.class constant and let it point to the Restful2ActionMapper
- * {code:xml}
- * <constant name="struts.mapper.class" 
value="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper" />
- * {code}
- *
- * The problem with the above approach is that we may break existing actions 
because
- * the Restful2ActionMapper tries to guess the method name using conventions
- * that aren't applicable to normal action classes.
- *
- * To overcome the above problem, we have to use a different action mapper 
depending on the url we want to process.
- * REST actions will be processed by the Restful2ActionMapper and non-REST 
actions by the {@link DefaultActionMapper}
- *
- * To achieve that we have to rely on nampespaces and the {@link 
PrefixBasedActionMapper} that can choose
- * which action mapper to use for a particular url based on a prefix (the 
action namespace).
- *
- * To put everything together, we create a package for our rest actions
- * {code:xml}
- * <package name="rest" namespace="/rest" extends="struts-default">
- *   ....interceptor config
- *    <action name="movie/*" class="app.MovieAction">
- *   <param name="id">{0}</param>
- *       ....results
- *    </action>
- *   ....
- * </package>
- * {code}
- *
- * All other actions remain in their existing packages and namespaces
- * we use the PrefixBasedActionMapper telling it to use the 
Restful2ActionMapper for actions
- * in the /rest namespace and the DefaultActionMapper for all other actions
- *
- * {code:xml}
- * <constant name="struts.mapper.class" 
value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" />
- * <constant name="struts.mapper.prefixMapping" value="/rest:restful2,:struts" 
/>
- * {code}
- *
- * For the Restful2ActionMapper to work we also have to set
- *
- * {code:xml}
- * <constant name="struts.enable.SlashesInActionNames" value="true" />
- * <constant name="struts.mapper.alwaysSelectFullNamespace" value="false" />
- * {code}
- *
- * <!-- END SNIPPET: example -->
+ * Extended version of {@link RestfulActionMapper}, see documentation for more 
details
+ * http://struts.apache.org/2.x/docs/restfulactionmapper.html
  */
 public class Restful2ActionMapper extends DefaultActionMapper {
 

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=1422955&r1=1422954&r2=1422955&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
 Mon Dec 17 14:50:18 2012
@@ -21,47 +21,21 @@
 
 package org.apache.struts2.dispatcher.mapper;
 
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts2.RequestUtils;
-
 import com.opensymphony.xwork2.config.ConfigurationManager;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.struts2.RequestUtils;
 
+import javax.servlet.http.HttpServletRequest;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
 
 /**
- * <!-- START SNIPPET: description -->
- *
- * A custom action mapper using the following format:
- * <p/>
- * <p/>
- * 
<ul><tt>http://HOST/ACTION_NAME/PARAM_NAME1/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2</tt></ul>
- * <p/>
- * You can have as many parameters you'd like to use. Alternatively the URL 
can be shortened to the following:
- * <p/>
- * 
<ul><tt>http://HOST/ACTION_NAME/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2</tt></ul>
- * <p/>
- * This is the same as:
- * <p/>
- * <ul><tt>http://HOST/ACTION_NAME/ACTION_NAME + 
"Id"/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2</tt></ul>
- * <p/>
- * Suppose for example we would like to display some articles by id at using 
the following URL sheme:
- * <p/>
- * <ul><tt>http://HOST/article/Id</tt></ul>
- * <p/>
- * <p/>
- * Your action just needs a setArticleId() method, and requests such as 
/article/1, /article/2, etc will all map
- * to that URL pattern.
- *
- * <!-- END SNIPPET: description -->
- *
+ * Simple Restfull Action Mapper to support REST application
+ * See docs for more information
+ * http://struts.apache.org/2.x/docs/restfulactionmapper.html
  */
 public class RestfulActionMapper implements ActionMapper {
     protected static final Logger LOG = 
LoggerFactory.getLogger(RestfulActionMapper.class);


Reply via email to