Package org.apache.tapestry5.internal.services.linktransform

# Class LinkTransformerInterceptor

java.lang.Object
org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor

All Implemented Interfaces:
  `ComponentEventLinkEncoder`

public class LinkTransformerInterceptor extends Object implements ComponentEventLinkEncoder
Intercepts some methods of `ComponentEventLinkEncoder`, passing the returned `Link`s through methods of`LinkTransformer`.

Since:
  5.2.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `LinkTransformerInterceptor(LinkTransformer linkTransformer, ComponentEventLinkEncoder delegate)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Link`
  `createComponentEventLink(ComponentEventRequestParameters parameters, boolean forForm)`
  Creates a link that encapsulates a component event request, including `PersistentLocale` (if set).
  `Link`
  `createPageRenderLink(PageRenderRequestParameters parameters)`
  Creates a Link that encapsulates a page render request, including activation context and `PersistentLocale` (if set).
  `ComponentEventRequestParameters`
  `decodeComponentEventRequest(Request request)`
  Checks the request, primarily the path, to determine the if the request is a component event request.
  `PageRenderRequestParameters`
  `decodePageRenderRequest(Request request)`
  Checks the request, primarily the path, to determine the if the request is a page render request.

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

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

- ## Constructor Details

  - ### LinkTransformerInterceptor

    public LinkTransformerInterceptor(LinkTransformer linkTransformer, ComponentEventLinkEncoder delegate)

- ## Method Details

  - ### createComponentEventLink

    public Link createComponentEventLink(ComponentEventRequestParameters parameters, boolean forForm)
    Description copied from interface: `ComponentEventLinkEncoder`
    Creates a link that encapsulates a component event request, including `PersistentLocale` (if set). Forms:
    - /context/pagename:eventname -- event on the page, no action context
    - /context/pagename:eventname/foo/bar -- event on the page with action context "foo", "bar"
    - /context/pagename.foo.bar -- event on component foo.bar within the page, default event, no action context
    - /context/pagename.foo.bar/baz.gnu -- event on component foo.bar within the page, default event, with action context "baz", "gnu"
    - /context/pagename.bar.baz:eventname/foo/gnu -- event on component bar.baz within the page with action context "foo" , "gnu"
    The persistent locale may be placed in between the context name and the page name, i.e., "/context/fr/SomePage". In many cases the context name is blank, so the path begins with a "/" and then the locale name or page name. The page name portion may itself consist of a series of folder names, i.e., "admin/user/create". The context portion isn't the concern of this code, since `Request.getPath()` will already have stripped that off. We can act as if the context is always "/" (the path always starts with a slash). Passes the resulting Link through the `ComponentEventLinkTransformer` chain of command, returning the result.
    Specified by:
      `createComponentEventLink` in interface `ComponentEventLinkEncoder`
    Parameters:
      `parameters` - defining page, component, activation context and other details
      `forForm` - true if the event link will trigger a form submission
    Returns:
      link for the component event

  - ### createPageRenderLink

    public Link createPageRenderLink(PageRenderRequestParameters parameters)
    Description copied from interface: `ComponentEventLinkEncoder`
    Creates a Link that encapsulates a page render request, including activation context and `PersistentLocale` (if set). Passes the resulting Link through the `PageRenderLinkTransformer` chain of command, returning the result.
    Specified by:
      `createPageRenderLink` in interface `ComponentEventLinkEncoder`
    Parameters:
      `parameters` - defining page to render and context
    Returns:
      link for the page render

  - ### decodeComponentEventRequest

    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
    Description copied from interface: `ComponentEventLinkEncoder`
    Checks the request, primarily the path, to determine the if the request is a component event request. As a side-effect (necessary for historical reasons), responsible for setting the locale for the thread, including the `PersistentLocale` ... but only if the locale is a component event.
    Specified by:
      `decodeComponentEventRequest` in interface `ComponentEventLinkEncoder`
    Parameters:
      `request` - incoming request
    Returns:
      component event request details, if a component event request

  - ### decodePageRenderRequest

    public PageRenderRequestParameters decodePageRenderRequest(Request request)
    Description copied from interface: `ComponentEventLinkEncoder`
    Checks the request, primarily the path, to determine the if the request is a page render request. As a side-effect (necessary for historical reasons), responsible for setting the locale for the thread, including the `PersistentLocale` ... but only if the request is a page render.
    Specified by:
      `decodePageRenderRequest` in interface `ComponentEventLinkEncoder`
    Parameters:
      `request` - incoming request
    Returns:
      page render request details, if a page render request