Interface FriendlyURLMapper

All Known Implementing Classes:
BaseFriendlyURLMapper, DefaultFriendlyURLMapper

public interface FriendlyURLMapper
Provides friendly URL mapping for a portlet by converting portlet URL parameters to friendly URL paths and back.

Never implement this interface directly, subclass BaseFriendlyURLMapper to ensure forward compatibility.

Author:
Brian Myunghun Kim, Brian Wing Shun Chan, Jorge Ferrer
See Also:
  • Method Details

    • buildPath

      String buildPath(LiferayPortletURL liferayPortletURL)
      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.
    • getMapping

      String getMapping()
      Returns the friendly URL mapping for this portlet.

      The friendly URL mapping is used by Liferay to identify the portlet a friendly URL refers to. It generally appears directly after the /-/ in the URL.

      For instance, the blogs portlet mapping is "blogs". This produces friendly URLs similar to http://www.liferay.com/web/guest/blog/-/blogs/example-post

      Returns:
      the friendly URL mapping for this portlet, not including any leading or trailing slashes
    • getPortletId

      String getPortletId()
      Returns the ID of this portlet
      Returns:
      the ID of this portlet, not including the instance ID
    • getRouter

      Router getRouter()
      Returns the router for this friendly URL mapper
      Returns:
      the router, or null if one has not been set
    • isCheckMappingWithPrefix

      boolean isCheckMappingWithPrefix()
      Returns true if the friendly URLs for this mapper should include the friendly URL separator.

      Typically, friendly URLs will include the separator "/-/" before the friendly URL mapping. If this method returns false, a single slash will be used instead.

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

      It is strongly recommended that this method always return true.

      Returns:
      true if the "/-/" separator should be included in friendly URLs, or false if only a "/" should be used
    • isPortletInstanceable

      boolean isPortletInstanceable()
      Returns true if this portlet is instanceable.

      The value returned from this method has no effect on whether a portlet is instanceable, it is a helper method used to determine if the instance ID should be included in the URL.

      Returns:
      true if the portlet is instanceable; false otherwise
    • populateParams

      void populateParams(String friendlyURLPath, Map<String,String[]> parameterMap, Map<String,Object> requestContext)
      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:
    • setMapping

      void setMapping(String mapping)
      Sets the friendly URL mapping for this portlet.

      This method is automatically called by PortletBagFactory with the friendly URL mapping defined in liferay-portlet.xml.

      Parameters:
      mapping - the friendly URL mapping for this portlet
    • setPortletId

      void setPortletId(String portletId)
      Sets the ID of this portlet.

      This method is automatically called by PortletBagFactory with the portlet ID defined in liferay-portlet.xml.

      Parameters:
      portletId - the ID of this portlet.
    • setPortletInstanceable

      void setPortletInstanceable(boolean portletInstanceable)
      Sets whether this portlet is instanceable.
      Parameters:
      portletInstanceable - whether this portlet is instanceable
    • setRouter

      void setRouter(Router router)
      Sets the router for this friendly URL mapper.

      This method is automatically called by PortletBagFactory with a router populated with the routes defined in this portlet's friendly-url-routes.xml file. The location of this file is defined in this portlet's liferay-portlet.xml file.

      Parameters:
      router - the router for this friendly URL mapper