blob: 6aa49ff23566d240434b3a2fbc29fee414d30904 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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
*
* 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.pluto.container;
import java.io.IOException;
import javax.portlet.Event;
import javax.portlet.PortletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* The publicized entry point into Pluto. The base functionality of the portlet
* container can be enhanced or even modified by PortletContainerServices.
* <p/>
* <P> The methods of this class have to be called in the following order:
* <TABLE> <TR><TH>Method</TH><TH>Description</TH><TH>Constraints</TH></TR>
* <TR><TD>{@link #init()}</TD> <TD>Initialized the
* portlet container.</TD> <TD>Performed only once per container
* lifecycle.</TD></TR>
* <p/>
* <TR><TD>{@link #doAction(PortletWindow,
* javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}</TD>
* <TD>Perform the action for the targeted portlet</TD> <TD>Optionally performed
* for a single portlet per request</TD></TR>
* <p/>
* <TR><TD>{@link #doRender(PortletWindow,
* javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}</TD>
* <TD>Render the portlet</TD> <TD>Performed once for each portlet per
* request.</TD></TR>
* <p/>
* <TR><TD>{@link #destroy()}</TD> <TD>Destroy and remove container from
* service.</TD> <TD>Performed only once per container lifecylce</TD></TR>
*/
public interface PortletContainer {
/**
* Initializes the container
* @throws PortletContainerException if an error occurs.
*/
void init() throws PortletContainerException;
/**
* Shuts down the container. After calling this method it is no longer valid
* to call any method on the portlet container.
* @throws PortletContainerException if an error occurs while shutting down
* the container
*/
void destroy() throws PortletContainerException;
/**
* Calls the render method of the given portlet window.
* @param portletWindow the portlet Window
* @param request the servlet request
* @param response the servlet response
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws IOException if the streaming causes an I/O problem
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
void doRender(PortletWindow portletWindow,
HttpServletRequest request,
HttpServletResponse response)
throws PortletException, IOException, PortletContainerException;
/**
* Indicates that a portlet resource Serving occured in the current request and calls
* the processServeResource method of this portlet.
* @param portletWindow the portlet Window
* @param request the servlet request
* @param response the servlet response
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
void doServeResource(PortletWindow portletWindow,
HttpServletRequest request,
HttpServletResponse response)
throws PortletException, IOException, PortletContainerException;
/**
* Indicates that a portlet action occured in the current request and calls
* the processAction method of this portlet.
* @param portletWindow the portlet Window
* @param request the servlet request
* @param response the servlet response
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
void doAction(PortletWindow portletWindow,
HttpServletRequest request,
HttpServletResponse response)
throws PortletException, IOException, PortletContainerException;
/**
* Indicates that the portlet must be initialized
* @param portletWindow the portlet Window
* @param servletRequest the servlet request
* @param servletResponse the servlet response
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
void doLoad(PortletWindow portletWindow,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse)
throws PortletException, IOException, PortletContainerException;
/**
* Indicates that the portal needs to perform administrative
* actions upon the portlet and/or portlet application. An
* administrative request will be spawned and any registered
* handlers invoked.
* @param portletWindow the portlet window
* @param servletRequest the servlet request
* @param servletResponse the servlet response
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
void doAdmin(PortletWindow portletWindow,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse)
throws PortletException, IOException, PortletContainerException;
/**
* Indicates that an event should be fired in the current request and calls
* the processEvent method of this portlet.
* @param portletWindow the portlet Window
* @param request the servlet request
* @param response the servlet response
* @param event The event.
* @throws PortletException if one portlet has trouble fulfilling
* the request
* @throws PortletContainerException if the portlet container implementation
* has trouble fulfilling the request
*/
public void doEvent(PortletWindow portletWindow,
HttpServletRequest request,
HttpServletResponse response,
Event event)
throws PortletException, IOException, PortletContainerException;
/**
* Returns whether the container is already initialized or not.
* @return <code>true</code> if the container is initialized
*/
boolean isInitialized();
/**
* Retrieve the unique container name
* @return the container name.
*/
String getName();
/**
* Retreive the container services associated with this container.
* @return the container services associated with this container.
*/
ContainerServices getContainerServices();
}