/*
* Copyright 2000-2001,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.services.forward;
import java.util.Collection;
import java.util.Map;
import org.apache.turbine.services.Service;
import org.apache.turbine.util.RunData;
import org.apache.turbine.util.DynamicURI;
import org.apache.jetspeed.services.forward.configuration.Forward;
import org.apache.jetspeed.services.forward.configuration.PortletForward;
/**
* <P>This is the interface to the Jetspeed Forward services.
* The interface defines methods for forwarding navigation to
* other pages or panes in the portal. The Forward service
* provides an abstraction, by removing the hard-coding of
* portal resources in your actions. Instead, all forward targets
* are defined in a centralized configuration file. By using the
* forward service, you use logical forward names in your java code.</P>
*
* @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
* @version $Id: ForwardService.java,v 1.5 2004/02/23 03:51:09 jford Exp $
*/
public interface ForwardService extends Service
{
/** The name of this service */
public String SERVICE_NAME = "ForwardService";
/**
* Forward to a specific forward by name.
* All parameters are resolved statically (via the forward definition)
*
* @param rundata The turbine rundata context for this request.
* @param forwardName Forward to this abstract forward name.
* @return DynamicURI the full link to the referenced page
*/
public DynamicURI forward(RunData rundata, String forwardName);
/**
* For the given portlet and given action, forward to the target
* defined in the forward configuration for the portlet + action.
* All parameters are resolved statically (via the forward definition)
*
* @param portlet The name of the portlet for which we are forwarding.
* @param target A logical target name. Portlets can have 1 or more targets.
* @return DynamicURI the full link to the referenced page
*/
public DynamicURI forward(RunData rundata, String portlet, String target);
/**
* Forward to a specific forward by name.
* Parameters are resolved both statically and dynamically, with the
* dynamic parameter overriding the static parameter definitions.
*
* @param rundata The turbine rundata context for this request.
* @param forwardName Forward to this abstract forward name.
* @param parameters The dynamic Validation Parameters used in creating validation forwards
* @return DynamicURI the full link to the referenced page
*/
public DynamicURI forwardDynamic(RunData rundata, String forwardName, Map parameters);
/**
* For the given portlet and given action, forward to the target
* defined in the forward configuration for the portlet + action.
* Parameters are resolved both statically and dynamically, with the
* dynamic parameter overriding the static parameter definitions.
*
* @param portlet The name of the portlet for which we are forwarding.
* @param target A logical target name. Portlets can have 1 or more targets.
* @param parameters The dynamic Validation Parameters used in creating validation forwards
* @return DynamicURI the full link to the referenced page
*/
public DynamicURI forwardDynamic(RunData rundata,
String portlet,
String target,
Map parameters);
/**
* Get a collection of all forwards in the system.
*
* @return Collection of all forward definitions
*/
public Collection getForwards();
/**
* Get a collection of all portlet forwards in the system.
*
* @return Collection of all portlet forward definitions
*/
public Collection getPortletForwards();
/**
* Lookup a single forward definition by forward name
*
* @param forwardName The name of the Forward to find
* @return Forward The found forward definition or null if not found
*/
public Forward getForward(String forwardName);
/**
* Lookup a single portlet forward definition by portlet name + target name
*
* @param portlet The name of the portlet in the Portlet Forward to find
* @param target The name of the target in the Portlet Forward to find
* @return Forward The found portlet forward definition or null if not found
*/
public PortletForward getPortletForward(String portlet, String target);
}