Package org.apache.struts2.rest

# Class RestActionMapper

java.lang.Object
org.apache.struts2.dispatcher.mapper.DefaultActionMapper
org.apache.struts2.rest.RestActionMapper

All Implemented Interfaces:
  `ActionMapper`

public class RestActionMapper extends DefaultActionMapper
This Restful action mapper enforces Ruby-On-Rails Rest-style mappings. 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. Special care has been given to ensure this mapper works correctly with the codebehind plugin so that XML configuration is unnecessary.

This mapper supports the following parameters:

- `struts.mapper.idParameterName` - 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. Whether or not the method is specified, the mapper will try to truncate the identifier from the url and store it as a parameter.
- `struts.mapper.indexMethodName` - The method name to call for a GET request with no id parameter. Defaults to 'index'.
- `struts.mapper.getMethodName` - The method name to call for a GET request with an id parameter. Defaults to 'show'.
- `struts.mapper.postMethodName` - The method name to call for a POST request with no id parameter. Defaults to 'create'.
- `struts.mapper.putMethodName` - The method name to call for a PUT request with an id parameter. Defaults to 'update'.
- `struts.mapper.deleteMethodName` - The method name to call for a DELETE request with an id parameter. Defaults to 'destroy'.
- `struts.mapper.editMethodName` - The method name to call for a GET request with an id parameter and the 'edit' view specified. Defaults to 'edit'.
- `struts.mapper.newMethodName` - The method name to call for a GET request with no id parameter and the 'new' view specified. Defaults to 'editNew'.

The following URL's will invoke its methods:

- `GET: /movies => method="index"`
- `GET: /movies/Thrillers => method="show", id="Thrillers"`
- `GET: /movies/Thrillers;edit => method="edit", id="Thrillers"`
- `GET: /movies/Thrillers/edit => method="edit", id="Thrillers"`
- `GET: /movies/new => method="editNew"`
- `POST: /movies => method="create"`
- `PUT: /movies/Thrillers => method="update", id="Thrillers"`
- `DELETE: /movies/Thrillers => method="destroy", id="Thrillers"`

To simulate the HTTP methods PUT and DELETE, since they aren't supported by HTML, the HTTP parameter "_method" will be used.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `HTTP_METHOD_PARAM`
  `protected static final org.apache.logging.log4j.Logger`
  `LOG`

  ### Fields inherited from class org.apache.struts2.dispatcher.mapper.DefaultActionMapper

  `ACTION_PREFIX, allowedActionNames, allowedMethodNames, allowedNamespaceNames, allowSlashesInActionNames, alwaysSelectFullNamespace, container, defaultActionName, defaultMethodName, defaultNamespaceName, extensions, METHOD_PREFIX, prefixTrie`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RestActionMapper()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getIdParameterName()`
  `ActionMapping`
  `getMapping(jakarta.servlet.http.HttpServletRequest request, ConfigurationManager configManager)`
  `protected boolean`
  `isDelete(jakarta.servlet.http.HttpServletRequest request)`
  `protected boolean`
  `isExpectContinue(jakarta.servlet.http.HttpServletRequest request)`
  `protected boolean`
  `isGet(jakarta.servlet.http.HttpServletRequest request)`
  `protected boolean`
  `isOptions(jakarta.servlet.http.HttpServletRequest request)`
  `protected boolean`
  `isPost(jakarta.servlet.http.HttpServletRequest request)`
  `protected boolean`
  `isPut(jakarta.servlet.http.HttpServletRequest request)`
  `protected void`
  `parseNameAndNamespace(String uri, ActionMapping mapping, ConfigurationManager configManager)`
  Parses the name and namespace from the uri.
  `void`
  `setAllowDynamicMethodCalls(String allowDynamicMethodCalls)`
  `void`
  `setDeleteMethodName(String deleteMethodName)`
  `void`
  `setEditMethodName(String editMethodName)`
  `void`
  `setGetMethodName(String getMethodName)`
  `void`
  `setIdParameterName(String idParameterName)`
  `void`
  `setIndexMethodName(String indexMethodName)`
  `void`
  `setNewMethodName(String newMethodName)`
  `void`
  `setOptionsMethodName(String optionsMethodName)`
  `void`
  `setPostContinueMethodName(String postContinueMethodName)`
  `void`
  `setPostMethodName(String postMethodName)`
  `void`
  `setPutContinueMethodName(String putContinueMethodName)`
  `void`
  `setPutMethodName(String putMethodName)`

  ### Methods inherited from class org.apache.struts2.dispatcher.mapper.DefaultActionMapper

  `addParameterAction, cleanupActionName, cleanupMethodName, cleanupNamespaceName, dropExtension, extractMethodName, getDefaultExtension, getMappingFromActionName, getUriFromActionMapping, handleDynamicMethod, handleExtension, handleName, handleNamespace, handleParams, handleSpecialParameters, isSlashesInActionNames, lookupExtension, parseActionName, setAllowActionPrefix, setAllowedActionNames, setAllowedMethodNames, setAllowedNamespaceNames, setAlwaysSelectFullNamespace, setContainer, setDefaultActionName, setDefaultMethodName, setDefaultNamespaceName, setExtensions, setSlashesInActionNames`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### LOG

    protected static final org.apache.logging.log4j.Logger LOG

  - ### HTTP_METHOD_PARAM

    public static final String HTTP_METHOD_PARAM
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### RestActionMapper

    public RestActionMapper()

- ## Method Details

  - ### getIdParameterName

    public String getIdParameterName()

  - ### setIdParameterName

    public void setIdParameterName(String idParameterName)

  - ### setIndexMethodName

    public void setIndexMethodName(String indexMethodName)

  - ### setGetMethodName

    public void setGetMethodName(String getMethodName)

  - ### setPostMethodName

    public void setPostMethodName(String postMethodName)

  - ### setEditMethodName

    public void setEditMethodName(String editMethodName)

  - ### setNewMethodName

    public void setNewMethodName(String newMethodName)

  - ### setDeleteMethodName

    public void setDeleteMethodName(String deleteMethodName)

  - ### setPutMethodName

    public void setPutMethodName(String putMethodName)

  - ### setOptionsMethodName

    public void setOptionsMethodName(String optionsMethodName)

  - ### setPostContinueMethodName

    public void setPostContinueMethodName(String postContinueMethodName)

  - ### setPutContinueMethodName

    public void setPutContinueMethodName(String putContinueMethodName)

  - ### setAllowDynamicMethodCalls

    public void setAllowDynamicMethodCalls(String allowDynamicMethodCalls)
    Overrides:
      `setAllowDynamicMethodCalls` in class `DefaultActionMapper`

  - ### getMapping

    public ActionMapping getMapping(jakarta.servlet.http.HttpServletRequest request, ConfigurationManager configManager)
    Specified by:
      `getMapping` in interface `ActionMapper`
    Overrides:
      `getMapping` in class `DefaultActionMapper`

  - ### parseNameAndNamespace

    protected void parseNameAndNamespace(String uri, ActionMapping mapping, ConfigurationManager configManager)
    Parses the name and namespace from the uri. Uses the configured package namespaces to determine the name and id parameter, to be parsed later.
    Overrides:
      `parseNameAndNamespace` in class `DefaultActionMapper`
    Parameters:
      `uri` - The uri
      `mapping` - The action mapping to populate

  - ### isGet

    protected boolean isGet(jakarta.servlet.http.HttpServletRequest request)

  - ### isPost

    protected boolean isPost(jakarta.servlet.http.HttpServletRequest request)

  - ### isPut

    protected boolean isPut(jakarta.servlet.http.HttpServletRequest request)

  - ### isDelete

    protected boolean isDelete(jakarta.servlet.http.HttpServletRequest request)

  - ### isOptions

    protected boolean isOptions(jakarta.servlet.http.HttpServletRequest request)

  - ### isExpectContinue

    protected boolean isExpectContinue(jakarta.servlet.http.HttpServletRequest request)