Class DefaultFriendlyURLMapper

Object
com.liferay.portal.kernel.portlet.BaseFriendlyURLMapper
com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper
All Implemented Interfaces:
FriendlyURLMapper

public class DefaultFriendlyURLMapper extends BaseFriendlyURLMapper
The default friendly URL mapper to use with friendly URL routes.

In most cases, to add friendly URL mapping to a portlet, simply set this class as the friendly URL mapper in liferay-portlet.xml, and write a friendly-url-routes.xml file.

If you do need to extend this class, the key methods to override are buildPath(LiferayPortletURL) and populateParams(String, Map, Map).

Author:
Connor McKay
See Also:
  • Field Details

    • defaultIgnoredParameters

      protected Set<String> defaultIgnoredParameters
    • defaultReservedParameters

      protected Map<String,String> defaultReservedParameters
  • Constructor Details

    • DefaultFriendlyURLMapper

      public DefaultFriendlyURLMapper()
  • Method Details

    • addDefaultIgnoredParameter

      public void addDefaultIgnoredParameter(String name)
      Adds a default ignored parameter.

      A default ignored parameter will always be hidden in friendly URLs.

      Parameters:
      name - the name of the parameter
    • addDefaultReservedParameter

      public void addDefaultReservedParameter(String name, String value)
      Adds a default reserved parameter.

      A default reserved parameter will be hidden in friendly URLs when it is set to its default value.

      Parameters:
      name - the name of the parameter
      value - the default value of the parameter
    • buildPath

      public String buildPath(LiferayPortletURL liferayPortletURL)
      Description copied from interface: FriendlyURLMapper
      Generates a friendly URL path from the portlet URL object.
      Parameters:
      liferayPortletURL - the portlet URL object to generate a friendly URL for
      Returns:
      the generated friendly URL, or null if one cannot be built. Returning null will cause a normal portlet URL to be generated.
    • getDefaultIgnoredParameters

      public Set<String> getDefaultIgnoredParameters()
      Returns the default ignored parameters.
      Returns:
      the ignored parameter names
      See Also:
    • getDefaultReservedParameters

      public Map<String,String> getDefaultReservedParameters()
      Returns the default reserved parameters.
      Returns:
      the default reserved parameter names and values
      See Also:
    • populateParams

      public void populateParams(String friendlyURLPath, Map<String,String[]> parameterMap, Map<String,Object> requestContext)
      Description copied from interface: FriendlyURLMapper
      Populates the parameter map with values parsed from the friendly URL path.

      This method is called by PortalImpl when a friendly URL is processed.

      Parameters:
      friendlyURLPath - the friendly URL path, including a leading slash and the friendly URL mapping. For example: /blogs/example-post
      parameterMap - the parameter map. Entries added to this map must be namespaced.
      requestContext - the request context
      See Also:
    • addParametersIncludedInPath

      protected void addParametersIncludedInPath(LiferayPortletURL liferayPortletURL, Map<String,String> routeParameters)
      Adds the parameters included in the path to the portlet URL.

      Portlet URLs track which parameters are included in the friendly URL path. This method hides all the default ignored parameters, the parameters included in the path by the router, and the reserved parameters set to their defaults.

      Parameters:
      liferayPortletURL - the portlet URL to which to add the parameters included in the path
      routeParameters - the parameter map populated by the router
      See Also:
      • com.liferay.portlet.PortletURLImpl#addParameterIncludedInPath(String)
    • buildRouteParameters

      protected void buildRouteParameters(LiferayPortletURL liferayPortletURL, Map<String,String> routeParameters)
      Builds the parameter map to be used by the router by copying parameters from the portlet URL.

      This method also populates the special virtual parameters p_p_id and instanceId for instanceable portlets.

      Parameters:
      liferayPortletURL - the portlet URL to copy parameters from
      routeParameters - the parameter map to populate for use by the router
    • getPortletInstanceKey

      protected String getPortletInstanceKey(Map<String,String> routeParameters)
      Returns the portlet instance key, including the instance ID if applicable, from the parameter map.
      Parameters:
      routeParameters - the parameter map. For an instanceable portlet, this must contain either p_p_id or instanceId.
      Returns:
      the portlet instance key, including the instance ID if applicable, or null if it cannot be determined
    • isAllPublicRenderParameters

      protected boolean isAllPublicRenderParameters(Map<String,String> routeParameters)
      Returns true if all the route parameters are public render parameters.
      Parameters:
      routeParameters - the parameter map
      Returns:
      true if all the route parameters are public render parameters; false otherwise
    • populateParams

      protected void populateParams(Map<String,String[]> parameterMap, String namespace, Map<String,String> routeParameters)
      Populates the parameter map using the parameters from the router and the default reserved parameters.
      Parameters:
      parameterMap - the parameter map to populate. This should be the map passed to populateParams(String, Map, Map) by PortalImpl.
      namespace - the namespace to use for parameters added to parameterMap
      routeParameters - the parameter map populated by the router