window.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 287 行

JAVA
287
字号
/* * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2004 Caucho Technology, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, if *    any, must include the following acknowlegement: *       "This product includes software developed by the *        Caucho Technology (http://www.caucho.com/)." *    Alternately, this acknowlegement may appear in the software itself, *    if and wherever such third-party acknowlegements normally appear. * * 4. The names "Hessian", "Resin", and "Caucho" must not be used to *    endorse or promote products derived from this software without prior *    written permission. For written permission, please contact *    info@caucho.com. * * 5. Products derived from this software may not be called "Resin" *    nor may "Resin" appear in their names without prior written *    permission of Caucho Technology. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL CAUCHO TECHNOLOGY OR ITS CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author Sam */package com.caucho.portal.generic;import javax.portlet.*;import java.io.IOException;import java.util.ArrayList;import java.util.Locale;import java.util.Map;import java.util.Set;/** * A Window represents the use of a portlet on a page. * The Window interface is the main point of contact between a portal * implementation and the generic portlet codebase. */ public interface Window{  public PortletConfig getPortletConfig();  public Renderer getRenderer();  /**   * Time in seconds, 0 disables caching and -1 means never expire.   */   public int getExpirationCache();  /**   * Return true if the contents of the portlet are private.   *   * The portlet specification states that "cached content must not be shared   * across different user clients displaying the same portlet".   *   * If a portal implementation supports caching,  then a return value of false   * will allow the portal to share the cached content across different user   * clients.   */   public boolean isPrivate();  /**   * Return the default preferences for the portlet, null if there are no   * default preferences.   */  public PortletPreferences getDefaultPreferences();  /**   * Return the preferences validators for the portlet, null if there are no   * preference validators.   */  public ArrayList<PreferencesValidator> getPreferencesValidators();  /**   * Return a map that map's role names used by the portlet to the role names   * recognized by the portal, null if the role names used by the portlet   * are to be used unchanged.   */  public Map<String, String> getRoleRefMap();   /**    * Return a list of {@link Constraint} that are applied before the    * processAction() and render() of the portlet are called, null if there    * are no Constraints.    */   public ArrayList<Constraint> getConstraints();  /**   * Return the content types supported for the mode, null if all content   * types are permitted.   */  public Set<String> getSupportedContentTypes(PortletMode portletMode);  /**   * Return the Locales supported, null if all Locales are permitted.   */  public Set<Locale> getSupportedLocales();  /**   * Return a preferred buffer size, may be overridden by the portlet    * if it calls setBufferSize().     * A value of 0 disables buffering for the portlet.    * A value of -1 allows the portal to use a default buffer size.   */   public int getBufferSize();  /**   * Return true if the WindowState is allowed.   * <code>portletRequest.getResponseContentType()</code> can be used   * if the allowed portlet modes depends on the mime type of the   * response.   */  public boolean isWindowStateAllowed(PortletRequest request,                                      WindowState windowState);  /**   * Return true if the PortletMode is allowed.   * <code>portletRequest.getResponseContentType()</code> can be used   * if the allowed portlet modes depends on the mime type of the   * response.   */  public boolean isPortletModeAllowed(PortletRequest request,                                      PortletMode portletMode);  /**   * This is called when a request arrives requesting a PortletMode   * that does not pass the isPortletModeAllowed() tests.   * It gives the Window an opportunity to return a PortletMode   * that can be used.  If the returned mode is also not allowed, a   * PortletModeException occurs.   *   * Implementations can use {@link handleException} to handle   * PortletModeException.    *   * @return a new PortletMode to try, or null to cause an exception.   */  public PortletMode handlePortletModeFailure( PortletRequest request,                                                PortletMode notAllowed );  /**   * This is called when a request arrives requesting a WindowState   * that does not pass the isWindowStateAllowed() tests.   * It gives the Window an opportunity to return a WindowState   * that can be used.  If the returned window state is also not allowed, a   * WindowStateException occurs.   *   * Implementations can use {@link handleException} to handle   * WindowStateException.    *   * @return a new WindowState to try, or null to cause an exception,   */  public WindowState handleWindowStateFailure( PortletRequest request,                                                WindowState notAllowed );  /**   * Optionally handle a constraint failure by sending some output to the   * client using the response or by hiding the window.   *   * When a Portlet fails a Constriant during processAction(), it is stored   * until the render stage, and handleConstriantFailure() is called instead of   * render().   *   * When a Portlet fails a Constraint during render(),    * handleConstriantFailure() is immediately called.   *   * If the implementation of this method does nothing, then the response of    * this window is reset() and the failure propagates to the parent window.   * If there is no parent window,    * {@link PortletConnection#handleConstraintFailure()} is called.   *   * Implementations of this method can change that behaviour by using the   * <code>event.setHandled(boolean hideWindow)</code> callback method.    *   * See {@link #handleException} for more information.   */  public void handleConstraintFailure( RenderRequest request,                                        RenderResponse response,                                        ConstraintFailureEvent event)    throws IOException, PortletException;  /**   * Optionally handle an exception by sending some output to the client   * using the response or by hiding the window.   *   * When a Portlet throws an Exception during processAction(), it is stored   * until the render stage, and handleException() is called instead of   * render().   *   * When a Portlet throws an exception during render(), the handleException()   * is immediately called.   *   * If the implementation of this method does nothing, then the repsonse of    * this window is reset() and the exception propagates to the parent window.   * If there is no parent window, {@link PortletConnection#handleException()}   * is called.   *   * Implementations of this method can change that behaviour by using the   * <code>event.setHandled(boolean hideWindow)</code> callback method.    *   * <h3>exceptionEvent.setHandled(false)</h3>   *   * If handleException calls exceptionEvent.setHandled(false) then   * the content that the portlet has written is kept, and the request   * continues.  Implementations use this when they have written some   * contents to the portlet that should be visible to the user.   *   * <pre>   * public void handleException(RenderRequest request, RenderResponse response, ExceptionEvent event)   *   throws PortletException, IOException    * {   *   if (event.getException() instanceof UnavailableException) {   *     PrintWriter out = response.getWriter();   *     response.setContentType("text/html");    *     out.println("This service is currently unavailable.");    *     event.setHandled(false);   *   }    * }    * </pre>   *   * If an implementation is handling an exception that can occur after the   * Portlet has written some content already, it should call response.reset()   * before it writes anything to the response.   *   * <pre>   * public void handleException(RenderRequest request, RenderResponse response, ExceptionEvent event)   *   throws PortletException, IOException    * {   *   response.reset();    *   response.setContentType("text/html");    *   PrintWriter out = response.getWriter();   *   printFancyExceptionMessage(event.getException());   *   event.setHandled(false);   * }    * </pre>   *   * <h3>exceptionEvent.setHandled(true)</h3>   *   * If handleException calls exceptionEvent.setHandled(true) then   * the output is reset(), including any output from a Renderer, and    * the request continues.  The effect of this call is to make the window   * invisible, no content for this window is shown but other windows on    * the page will be shown. Implementations use this when they have dealt   * with the exception in some way and wish to hide the exception from the   * user.   *   * <pre>   * public void handleException(ExceptionEvent event)   *   throws PortletException, IOException    * {   *   log.log(Level.WARNING, ex.toString(), ex);   *   event.setHandled(true);    * }    * </pre>   */  public void handleException( RenderRequest renderRequest,                               RenderResponse renderResponse,                               ExceptionEvent exceptionEvent)  throws IOException, PortletException;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?