servletfacescontextimpl.java

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

JAVA
385
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * *   Free Software Foundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.jsf.context;import java.util.*;import java.util.logging.*;import javax.el.*;import javax.faces.*;import javax.faces.application.*;import javax.faces.context.*;import javax.faces.component.*;import javax.faces.render.*;import javax.servlet.*;import javax.servlet.http.*;public class ServletFacesContextImpl extends FacesContext{  private static final Logger log    = Logger.getLogger(ServletFacesContextImpl.class.getName());    private FacesContextFactoryImpl _factory;  private ServletContext _webApp;  private HttpServletRequest _request;  private HttpServletResponse _response;  private ExternalContext _externalContext;  private FacesELContext _elContext;    private boolean _isResponseComplete;    private boolean _isRenderResponse;    private UIViewRoot _uiViewRoot;  private HashMap<String,ArrayList<FacesMessage>> _messageMap    = new HashMap<String,ArrayList<FacesMessage>>();  private ResponseWriter _responseWriter;  private ResponseStream _responseStream;  private boolean _isClosed;  private HashMap<Object, Object> _attributes;  protected ServletFacesContextImpl(FacesContextFactoryImpl factory,				    ServletContext webApp,				    HttpServletRequest request,				    HttpServletResponse response)  {    _factory = factory;    _webApp = webApp;    _request = request;    _response = response;  }    public Application getApplication()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        return _factory.getApplication();  }  public ExternalContext getExternalContext()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        if (_externalContext == null) {      _externalContext	= new ServletExternalContext(_webApp, _request, _response);    }    return _externalContext;  }  public RenderKit getRenderKit()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        UIViewRoot viewRoot = getViewRoot();    if (viewRoot == null)      return null;    String renderKitId = viewRoot.getRenderKitId();    if (renderKitId == null)      return null;    RenderKitFactory factory = (RenderKitFactory)      FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);    return factory.getRenderKit(this, renderKitId);  }  public ResponseStream getResponseStream()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        return _responseStream;  }  public void setResponseStream(ResponseStream responseStream)  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");         _responseStream = responseStream;  }  public ResponseWriter getResponseWriter()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        if (_responseWriter == null) {      try {	_responseWriter = new ResponseWriterImpl(_response,						 _response.getWriter());      } catch (RuntimeException e) {	throw e;      } catch (Exception e) {	throw new FacesException(e);      }    }    return _responseWriter;  }  public void setResponseWriter(ResponseWriter writer)  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        _responseWriter = writer;  }  /**   * Returns the root of the UI component tree.   */  public UIViewRoot getViewRoot()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");    return _uiViewRoot;    /*    if (_uiViewRoot == null) {      _uiViewRoot = getApplication().getViewHandler().createView(this,								 null);    }        return _uiViewRoot;    */  }  /**   * Sets the root of the UI component tree.   */  public void setViewRoot(UIViewRoot root)  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        if (root == null)      throw new NullPointerException();        _uiViewRoot = root;  }  /**   * If true the facelet will skip to the render phase.   */  @Override  public boolean getRenderResponse()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        return _isRenderResponse;  }  /**   * Ask the lifecycle to skip to the render phase.   */  @Override  public void renderResponse()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");    _isRenderResponse = true;  }  /**   * Return true if the lifecycle should skip the response phase.   */  @Override  public boolean getResponseComplete()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        return _isResponseComplete;  }  /**   * Ask the lifecycle to skip the response phase.   */  @Override  public void responseComplete()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        _isResponseComplete = true;  }  public void addMessage(String clientId,			 FacesMessage message)  {    if (_isClosed)      throw new IllegalStateException("FacesContext is closed");        if (message == null)      throw new NullPointerException();    if (log.isLoggable(Level.FINE))      log.fine("FacesContext.addMessage " + clientId + " " + message);    synchronized (_messageMap) {      ArrayList<FacesMessage> messages = _messageMap.get(clientId);      if (messages == null) {	messages = new ArrayList<FacesMessage>();	_messageMap.put(clientId, messages);      }      messages.add(message);    }  }  public Iterator<String> getClientIdsWithMessages()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        synchronized (_messageMap) {      ArrayList<String> list = new ArrayList<String>(_messageMap.keySet());      return list.iterator();    }  }  public FacesMessage.Severity getMaximumSeverity()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        synchronized (_messageMap) {      FacesMessage.Severity severity = null;            for (Map.Entry<String,ArrayList<FacesMessage>> entry	     : _messageMap.entrySet()) {	for (FacesMessage msg : entry.getValue()) {	  if (severity == null)	    severity = msg.getSeverity();	  else if (severity.compareTo(msg.getSeverity()) < 0)	    severity = msg.getSeverity();	}      }      return severity;    }  }  public Iterator<FacesMessage> getMessages()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        synchronized (_messageMap) {      ArrayList<FacesMessage> messages = new ArrayList<FacesMessage>();            for (ArrayList<FacesMessage> value : _messageMap.values()) {	messages.addAll(value);      }            return messages.iterator();    }  }  public Iterator<FacesMessage> getMessages(String clientId)  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        synchronized (_messageMap) {      ArrayList<FacesMessage> messages = _messageMap.get(clientId);      if (messages == null)	messages = new ArrayList<FacesMessage>();      return messages.iterator();    }  }  /**   * @Since 1.2   */  @Override  public ELContext getELContext()  {    if (_isClosed)      throw new IllegalStateException(getClass().getName() + " is closed");        if (_elContext == null) {      _elContext = new FacesELContext(this, getApplication().getELResolver());      _elContext.putContext(FacesContext.class, this);    }    return _elContext;  }  public void release()  {    _isClosed = true;        if (_attributes != null) {      _attributes.clear();      _attributes = null;    }    FacesContext.setCurrentInstance(null);  }  public Map<Object, Object> getAttributes()  {    if (_isClosed)      throw new IllegalStateException();    if (_attributes == null)      _attributes = new HashMap<Object, Object>();    return _attributes;  }  public String toString()  {    return "ServletFacesContextImpl[]";  }}

⌨️ 快捷键说明

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