/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you 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 the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>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.apereo.portal.api.portlet;
import java.io.IOException;
import java.io.Writer;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import org.apereo.portal.portlet.om.IPortletWindowId;
import org.apereo.portal.portlet.rendering.PortletOutputHandler;
import org.apereo.portal.portlet.rendering.PortletResourceOutputHandler;
/**
* Used to dispatch requests to a delegate portlet window. Also provides information about the state
* of the delegate portlet window.
*
*/
public interface PortletDelegationDispatcher {
/**
* @return The ID of the delegate portlet window, useful for retrieving this dispatcher again
* from the {@link PortletDelegationLocator}
*/
public IPortletWindowId getPortletWindowId();
/** @return The current sate of the delegate window */
public DelegateState getDelegateState();
/**
* Calls {@link #doAction(ActionRequest, ActionResponse, DelegationRequest)} with no {@link
* DelegationRequest} data
*
* @see #doAction(ActionRequest, ActionResponse, DelegationRequest)
*/
public DelegationActionResponse doAction(
ActionRequest actionRequest, ActionResponse actionResponse) throws IOException;
/**
* Executes a portlet action request on the delegate window. The state, mode and parameters in
* the delegation request (if set) are used by the delegate.
*
* @param actionRequest The current portlet's action request
* @param actionResponse The current portlet's action response
* @param delegationRequest The state to set for the delegate and the basis for generated URLs
* @return The delegation response state, will indicate if the delegate sent a redirect
*/
public DelegationActionResponse doAction(
ActionRequest actionRequest,
ActionResponse actionResponse,
DelegationRequest delegationRequest)
throws IOException;
/**
* Calls {@link #doAction(ResourceRequest, ResourceResponse, DelegationRequest)} with no {@link
* DelegationRequest} data
*
* @see #doServeResource(ResourceRequest, ResourceResponse, DelegationRequest)
*/
public DelegationResponse doServeResource(
ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException;
/**
* Calls @link {@link #doServeResource(ResourceRequest, ResourceResponse, DelegationRequest,
* PortletOutputHandler)} wrapping the {@link ResourceResponse} for the {@link
* PortletOutputHandler}
*
* @see #doServeResource(ResourceRequest, ResourceResponse, DelegationRequest,
* PortletOutputHandler)
*/
public DelegationResponse doServeResource(
ResourceRequest resourceRequest,
ResourceResponse resourceResponse,
DelegationRequest delegationRequest)
throws IOException;
/**
* Executes a portlet resource request on the delegate window. The state, mode and parameters in
* the delegation request (if set) are used by the delegate.
*
* @param resourceRequest The current portlet's resource request
* @param resourceResponse The current portlet's resource response
* @param delegationRequest The state to set for the delegate and the basis for generated URLs
* @param portletOutputHandler The output handler to write to
* @return The delegation response state, will indicate if the delegate sent a redirect
*/
public DelegationResponse doServeResource(
ResourceRequest resourceRequest,
ResourceResponse resourceResponse,
DelegationRequest delegationRequest,
PortletResourceOutputHandler portletOutputHandler)
throws IOException;
/**
* Calls {@link #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)} with no
* {@link DelegationRequest} data wrapping the {@link RenderResponse} for the {@link
* PortletOutputHandler}
*
* @see #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)
*/
public DelegationResponse doRender(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException;
/**
* Calls {@link #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)} with no
* {@link DelegationRequest} data.
*
* @see #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)
*/
public DelegationResponse doRender(
RenderRequest renderRequest,
RenderResponse renderResponse,
PortletOutputHandler portletOutputHandler)
throws IOException;
/**
* Calls {@link #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)} wrapping
* the {@link RenderResponse} for the {@link PortletOutputHandler}
*
* @see #doRender(RenderRequest, RenderResponse, DelegationRequest, Writer)
*/
public DelegationResponse doRender(
RenderRequest renderRequest,
RenderResponse renderResponse,
DelegationRequest delegationRequest)
throws IOException;
/**
* Executes a portlet render request on the delegate window. The state, mode and parameters in
* the delegation request (if set) are used by the delegate. The output of the portlet's
* rendering is written to the provided {@link PortletOutputHandler}
*
* @param renderRequest The current portlet's render request
* @param renderResponse The current portlet's render response
* @param delegationRequest The state to set for the delegate and the basis for generated URLs
* @param portletOutputHandler The PortletOutputHandler to send all content from the delegate
* portlet to
* @return The delegation response state, will indicate if the delegate sent a redirect
*/
public DelegationResponse doRender(
RenderRequest renderRequest,
RenderResponse renderResponse,
DelegationRequest delegationRequest,
PortletOutputHandler portletOutputHandler)
throws IOException;
}