Package org.apache.tapestry5.internal.services

## Class LinkImpl

- java.lang.Object
- - org.apache.tapestry5.internal.services.LinkImpl

- All Implemented Interfaces:
    `Link`

      public class LinkImpl
      extends java.lang.Object
      implements Link

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LinkImpl​(java.lang.String basePath, boolean forForm, LinkSecurity defaultSecurity, Response response, ContextPathEncoder contextPathEncoder, BaseURLSource baseURLSource)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Link` | `addParameter​(java.lang.String parameterName, java.lang.String value)` | Adds a parameter value.
    `Link` | `addParameterValue​(java.lang.String parameterName, java.lang.Object value)` | Adds a parameter value as a value object; the value object is converted to a string via ContextPathEncoder.encodeValue(Object) from tapestry-core and the result is added via `Link.addParameter(String, String)`.
    `Link` | `copyWithBasePath​(java.lang.String basePath)` | Creates a copy of this link that has the same parameters, anchor, and other attributes, but a different base path.
    `java.lang.String` | `getAnchor()` | Returns the link anchor.
    `java.lang.String` | `getBasePath()` | Returns the completely unadorned base path.
    `java.util.List<java.lang.String>` | `getParameterNames()` | Returns the names of any additional query parameters for the URI.
    `java.lang.String` | `getParameterValue​(java.lang.String name)` | Returns the value of a specifically named query parameter, or `null` if no such query parameter is stored in the link.
    `java.lang.String[]` | `getParameterValues​(java.lang.String parameterName)` | Returns the parameter values for the given name.
    `LinkSecurity` | `getSecurity()` | Returns the current security for this link, which reflects whether the targeted page is itself secure or insecure.
    `Link` | `removeParameter​(java.lang.String parameterName)` | Removes a parameter value, which is occasionally useful when transforming a parameter into a portion of the path.
    `Link` | `setAnchor​(java.lang.String anchor)` | Sets the link anchor.
    `void` | `setSecurity​(LinkSecurity newSecurity)` | Changes the link's security, which can be useful to force a link to be either secure or insecure when normally it might not be.
    `java.lang.String` | `toAbsoluteURI()` | Returns the absolute URL, which includes the scheme, hostname and possibly port (as per `BaseURLSource.getBaseURL(boolean)`).
    `java.lang.String` | `toAbsoluteURI​(boolean secure)` | Returns either the secure or insecure URL, with complete scheme, hostname and possibly port (as per `BaseURLSource.getBaseURL(boolean)`).
    `java.lang.String` | `toRedirectURI()` | Returns the link as a redirect URI.
    `java.lang.String` | `toString()` | Returns the value from `toURI()`
    `java.lang.String` | `toURI()` | Returns the URI portion of the link.

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

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

- - ### Constructor Detail

    - #### LinkImpl

          public LinkImpl​(java.lang.String basePath,
                          boolean forForm,
                          LinkSecurity defaultSecurity,
                          Response response,
                          ContextPathEncoder contextPathEncoder,
                          BaseURLSource baseURLSource)

  - ### Method Detail

    - #### copyWithBasePath

          public Link copyWithBasePath​(java.lang.String basePath)

      Description copied from interface: `Link`
      Creates a copy of this link that has the same parameters, anchor, and other attributes, but a different base path.
      Specified by:
        `copyWithBasePath` in interface `Link`
      Returns:
        a new Link instance

    - #### addParameter

          public Link addParameter​(java.lang.String parameterName,
                                   java.lang.String value)

      Description copied from interface: `Link`
      Adds a parameter value. The value will be added, as is, to the URL. In many cases, the value should be URL encoded via `URLCodec`.
      Specified by:
        `addParameter` in interface `Link`
      Parameters:
        `parameterName` - the name of the parameter to store
        `value` - the value to store, a null or blank value is allowed (as of Tapestry 5.3)
      Returns:
        this Link, to support method chaining

    - #### getBasePath

          public java.lang.String getBasePath()

      Description copied from interface: `Link`
      Returns the completely unadorned base path. Other methods (such as `Link.toURI()`), may append an anchor or query parameters.
      Specified by:
        `getBasePath` in interface `Link`

    - #### removeParameter

          public Link removeParameter​(java.lang.String parameterName)

      Description copied from interface: `Link`
      Removes a parameter value, which is occasionally useful when transforming a parameter into a portion of the path.
      Specified by:
        `removeParameter` in interface `Link`
      Returns:
        this Link, to support method chaining

    - #### getAnchor

          public java.lang.String getAnchor()

      Description copied from interface: `Link`
      Returns the link anchor. If this link does not have an anchor, this method returns `null`.
      Specified by:
        `getAnchor` in interface `Link`
      Returns:
        the link anchor

    - #### getParameterNames

          public java.util.List<java.lang.String> getParameterNames()

      Description copied from interface: `Link`
      Returns the names of any additional query parameters for the URI. Query parameters store less regular or less often used values that can not be expressed in the path. They also are used to store, or link to, persistent state.
      Specified by:
        `getParameterNames` in interface `Link`
      Returns:
        list of query parameter names, is alphabetical order

    - #### getParameterValue

          public java.lang.String getParameterValue​(java.lang.String name)

      Description copied from interface: `Link`
      Returns the value of a specifically named query parameter, or `null` if no such query parameter is stored in the link. Use this method only when you are sure the parameter has only one value. If the parameter might have more than one value, use `Link.getParameterValues(java.lang.String)`. If you use this method with a multivalued parameter, the value returned is equal to the first value in the array returned by `getParameterValues`.
      Specified by:
        `getParameterValue` in interface `Link`
      Returns:
        a string representing the single value of the named parameter

    - #### setAnchor

          public Link setAnchor​(java.lang.String anchor)

      Description copied from interface: `Link`
      Sets the link anchor. Null and empty anchors will be ignored when building the link URI.
      Specified by:
        `setAnchor` in interface `Link`
      Parameters:
        `anchor` - the link anchor
      Returns:
        this Link, to support method chaining

    - #### toAbsoluteURI

          public java.lang.String toAbsoluteURI()

      Description copied from interface: `Link`
      Returns the absolute URL, which includes the scheme, hostname and possibly port (as per `BaseURLSource.getBaseURL(boolean)`). By default, the scheme is chosen to match the security of the current request. Note: the semantics of this method changed between Tapestry 5.1 and 5.2. Most code should use toString() or `Link.toURI()` (which are equivalent) instead.
      Specified by:
        `toAbsoluteURI` in interface `Link`
      Returns:
        the complete, qualified URL, including query parameters.

    - #### toAbsoluteURI

          public java.lang.String toAbsoluteURI​(boolean secure)

      Description copied from interface: `Link`
      Returns either the secure or insecure URL, with complete scheme, hostname and possibly port (as per `BaseURLSource.getBaseURL(boolean)`).
      Specified by:
        `toAbsoluteURI` in interface `Link`
      Returns:
        the complete, qualified URL, including query parameters.

    - #### setSecurity

          public void setSecurity​(LinkSecurity newSecurity)

      Description copied from interface: `Link`
      Changes the link's security, which can be useful to force a link to be either secure or insecure when normally it might not be.
      Specified by:
        `setSecurity` in interface `Link`
      Parameters:
        `newSecurity` - new security value, not null, typically `LinkSecurity.FORCE_SECURE` or `LinkSecurity.FORCE_INSECURE`

    - #### getSecurity

          public LinkSecurity getSecurity()

      Description copied from interface: `Link`
      Returns the current security for this link, which reflects whether the targeted page is itself secure or insecure.
      Specified by:
        `getSecurity` in interface `Link`

    - #### toRedirectURI

          public java.lang.String toRedirectURI()

      Description copied from interface: `Link`
      Returns the link as a redirect URI. The URI includes any query parameters.
      Specified by:
        `toRedirectURI` in interface `Link`

    - #### toURI

          public java.lang.String toURI()

      Description copied from interface: `Link`
      Returns the URI portion of the link. When the link is created for a form, this will not include query parameters. This is the same value returned from toString().
      Specified by:
        `toURI` in interface `Link`
      Returns:
        the URI, ready to be added as an element attribute

    - #### toString

          public java.lang.String toString()

      Returns the value from `toURI()`
      Overrides:
        `toString` in class `java.lang.Object`

    - #### addParameterValue

          public Link addParameterValue​(java.lang.String parameterName,
                                        java.lang.Object value)

      Description copied from interface: `Link`
      Adds a parameter value as a value object; the value object is converted to a string via ContextPathEncoder.encodeValue(Object) from tapestry-core and the result is added via `Link.addParameter(String, String)`. The Link object is returned for further configuration.
      Specified by:
        `addParameterValue` in interface `Link`

    - #### getParameterValues

          public java.lang.String[] getParameterValues​(java.lang.String parameterName)

      Description copied from interface: `Link`
      Returns the parameter values for the given name. Returns null if no such parameter is stored in the link.
      Specified by:
        `getParameterValues` in interface `Link`