001// Copyright 2004, 2005 The Apache Software Foundation
002//
003// Licensed under the Apache License, Version 2.0 (the "License");
004// you may not use this file except in compliance with the License.
005// You may obtain a copy of the License at
006//
007//     http://www.apache.org/licenses/LICENSE-2.0
008//
009// Unless required by applicable law or agreed to in writing, software
010// distributed under the License is distributed on an "AS IS" BASIS,
011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012// See the License for the specific language governing permissions and
013// limitations under the License.
014
015package org.apache.tapestry.link;
016
017import org.apache.tapestry.IRequestCycle;
018import org.apache.tapestry.engine.ILink;
019
020/**
021 *  A component for creating a link for an arbitrary {@link org.apache.tapestry.engine.IEngineService
022 *  engine service}.  A ServiceLink component can emulate an {@link ActionLink},
023 *  {@link PageLink} or {@link DirectLink} component, but is most often used in
024 *  conjunction with an application-specific service.  
025 *
026 *  [<a href="../../../../../ComponentReference/ServiceLink.html">Component Reference</a>]
027 *
028 *  @author Howard Lewis Ship
029 *
030 **/
031
032public abstract class ServiceLink extends AbstractLinkComponent
033{
034    public ILink getLink(IRequestCycle cycle)
035    {
036        Object[] parameters = DirectLink.constructServiceParameters(getParameters());
037
038        return getLink(cycle, getService(), parameters);
039    }
040
041    public abstract String getService();
042
043    public abstract Object getParameters();
044}