    001// Licensed under the Apache License, Version 2.0 (the "License");
    002// you may not use this file except in compliance with the License.
    003// You may obtain a copy of the License at
    004//
    005//     http://www.apache.org/licenses/LICENSE-2.0
    006//
    007// Unless required by applicable law or agreed to in writing, software
    008// distributed under the License is distributed on an "AS IS" BASIS,
    009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    010// See the License for the specific language governing permissions and
    011// limitations under the License.
    012
    013package org.apache.tapestry5.services;
    014
    015import org.apache.tapestry5.EventContext;
    016import org.apache.tapestry5.http.Link;
    017
    018/**
    019 * A service that allows other services to create page render links.
    020 *
    021 * @since 5.1.0.2
    022 */
    023public interface PageRenderLinkSource
    024{
    025    /**
    026     * Creates a page render link using the page's normal passivation context (if it has one).
    027     *
    028     * @param pageName
    029     *         name of page to create link to
    030     * @return render link for the page
    031     */
    032    Link createPageRenderLink(String pageName);
    033
    034    /**
    035     * Creates a page render link using an override of the page's passivation context (possibly an empty one).
    036     *
    037     * @param pageName
    038     *         name of page to create link to
    039     * @param context
    040     *         zero or more values to encode as the passiviation context
    041     * @return render link for the page
    042     */
    043    Link createPageRenderLinkWithContext(String pageName, Object... context);
    044
    045    /**
    046     * Creates a page render link using an override of the page's passivation context.
    047     *
    048     * @param pageName
    049     *         name of page to create link to
    050     * @param eventContext
    051     *         the EventContext to encode as the passiviation context
    052     * @return render link for the page
    053     * @since 5.2.0.0
    054     */
    055    public Link createPageRenderLinkWithContext(String pageName, EventContext eventContext);
    056
    057    /**
    058     * Creates a page render link using the page's class to identify the target page, and using the pages normal
    059     * passivation context (if it has one).
    060     *
    061     * @param pageClass
    062     * @return render link for the page
    063     */
    064    Link createPageRenderLink(Class pageClass);
    065
    066    /**
    067     * Creates a page render link using the page's class to identify the target page, and using an override of the
    068     * page's passivation context (possibly an empty one).
    069     *
    070     * @param pageClass
    071     * @param context
    072     *         zero or more values to encode as the passiviation context
    073     * @return render link for the page
    074     */
    075    Link createPageRenderLinkWithContext(Class pageClass, Object... context);
    076
    077    /**
    078     * Creates a page render link using the page's class to identify the target page, and using an override of the
    079     * page's passivation context
    080     *
    081     * @param pageClass
    082     * @param eventContext
    083     *         the EventContext to encode as the passiviation context
    084     * @return render link for the page
    085     * @since 5.2.0.0
    086     */
    087    Link createPageRenderLinkWithContext(Class pageClass, EventContext eventContext);
    088
    089}