servletcontextimpl.java

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

JAVA
497
字号
/* * 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 as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * 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.server.webapp;import com.caucho.log.Log;import com.caucho.util.L10N;import com.caucho.vfs.Path;import com.caucho.vfs.Vfs;import javax.servlet.*;import java.io.*;import java.net.URL;import java.util.*;import java.util.logging.Level;import java.util.logging.Logger;/** * Bare-bones servlet context implementation. */public class ServletContextImpl implements ServletContext {  static final Logger log = Log.open(ServletContextImpl.class);  static final L10N L = new L10N(ServletContextImpl.class);  private String _name;    private HashMap<String,Object> _attributes = new HashMap<String,Object>();  private ArrayList<ServletContextAttributeListener>    _applicationAttributeListeners;  private HashMap<String,String> _initParams = new HashMap<String,String>();  public Path getAppDir()  {    return Vfs.lookup();  }  /**   * Sets the servlet context name   */  public void setDisplayName(String name)  {    _name = name;  }  /**   * Gets the servlet context name   */  public String getServletContextName()  {    return _name;  }  /**   * Gets the servlet context name   */  public String getContextPath()  {    return _name;  }  /**   * Adds the listener.   */  protected void addAttributeListener(ServletContextAttributeListener listener)  {    if (_applicationAttributeListeners == null)      _applicationAttributeListeners = new ArrayList<ServletContextAttributeListener>();        _applicationAttributeListeners.add(listener);  }  /**   * Returns the server information   */  public String getServerInfo()  {    return "Resin/" + com.caucho.Version.VERSION;  }  /**   * Returns the servlet major version   */  public int getMajorVersion()  {    return 2;  }  /**   * Returns the servlet minor version   */  public int getMinorVersion()  {    return 5;  }  /**   * Sets an init param   */  protected void setInitParameter(String name, String value)  {    _initParams.put(name, value);  }  /**   * Gets the init params   */  public String getInitParameter(String name)  {    return (String) _initParams.get(name);  }  /**   * Gets the init params   */  public Enumeration getInitParameterNames()  {    return Collections.enumeration(_initParams.keySet());  }  /**   * Returns the named attribute.   */  public Object getAttribute(String name)  {    synchronized (_attributes) {      Object value = _attributes.get(name);      return value;    }  }  /**   * Returns an enumeration of the attribute names.   */  public Enumeration getAttributeNames()  {    synchronized (_attributes) {      return Collections.enumeration(_attributes.keySet());    }  }  /**   * Sets an application attribute.   *   * @param name the name of the attribute   * @param value the value of the attribute   */  public void setAttribute(String name, Object value)  {    Object oldValue;    synchronized (_attributes) {      if (value != null)        oldValue = _attributes.put(name, value);      else        oldValue = _attributes.remove(name);    }        // Call any listeners    if (_applicationAttributeListeners != null) {      ServletContextAttributeEvent event;      if (oldValue != null)        event = new ServletContextAttributeEvent(this, name, oldValue);      else        event = new ServletContextAttributeEvent(this, name, value);              for (int i = 0; i < _applicationAttributeListeners.size(); i++) {        ServletContextAttributeListener listener;        Object objListener = _applicationAttributeListeners.get(i);        listener = (ServletContextAttributeListener) objListener;        try {          if (oldValue != null)            listener.attributeReplaced(event);          else            listener.attributeAdded(event);        } catch (Throwable e) {          log.log(Level.FINE, e.toString(), e);        }      }    }  }  /**   * Removes an attribute from the servlet context.   *   * @param name the name of the attribute to remove.   */  public void removeAttribute(String name)  {    Object oldValue;        synchronized (_attributes) {      oldValue = _attributes.remove(name);    }    // Call any listeners    if (_applicationAttributeListeners != null) {      ServletContextAttributeEvent event;      event = new ServletContextAttributeEvent(this, name, oldValue);              for (int i = 0; i < _applicationAttributeListeners.size(); i++) {        ServletContextAttributeListener listener;        Object objListener = _applicationAttributeListeners.get(i);        listener = (ServletContextAttributeListener) objListener;        try {          listener.attributeRemoved(event);        } catch (Throwable e) {          log.log(Level.FINE, e.toString(), e);        }      }    }  }  /**   * Maps from a URI to a real path.   */  public String getRealPath(String uri)  {    return getAppDir().lookup("./" + uri).getNativePath();  }  /**   * Returns a resource for the given uri.   *   * <p>XXX: jdk 1.1.x doesn't appear to allow creation of private   * URL streams.   */  public URL getResource(String name)    throws java.net.MalformedURLException  {    if (! name.startsWith("/"))      throw new java.net.MalformedURLException(name);        String realPath = getRealPath(name);    Path path = getAppDir().lookupNative(realPath);    if (path.exists())      return new URL(path.getURL());    return null;  }  /**   * Returns the resource for a uripath as an input stream.   */  public InputStream getResourceAsStream(String uripath)  {    Path path = getAppDir().lookupNative(getRealPath(uripath));    try {      if (path.canRead())        return path.openRead();      else        return null;    } catch (IOException e) {      log.log(Level.FINEST, e.toString(), e);      return null;    }  }  /**    * Returns an enumeration of all the resources.    */  public Set getResourcePaths(String prefix)  {    if (! prefix.endsWith("/"))      prefix = prefix + "/";    Path path = getAppDir().lookup(getRealPath(prefix));    HashSet<String> set = new HashSet<String>();    try {      String []list = path.list();      for (int i = 0; i < list.length; i++) {        if (path.lookup(list[i]).isDirectory())          set.add(prefix + list[i] + '/');        else          set.add(prefix + list[i]);      }    } catch (IOException e) {    }         return set;  }  /**   * Returns the servlet context for the name.   */  public ServletContext getContext(String uri)  {    return this;  }  /**   * Returns the mime type for the name.   */  public String getMimeType(String uri)  {    return null;  }  /**   * Returns the dispatcher.   */  public RequestDispatcher getRequestDispatcher(String uri)  {    return null;  }  /**   * Returns a dispatcher for the named servlet.   */  public RequestDispatcher getNamedDispatcher(String servletName)  {    return null;  }  /**   * Logging.   */  /**   * Logs a message to the error file.   *   * @param msg the message to log   */  public final void log(String message)   {    log(message, null);  }  /**   * @deprecated   */  public final void log(Exception e, String msg)  {    log(msg, e);  }  /**   * Error logging   *   * @param message message to log   * @param e stack trace of the error   */  public void log(String message, Throwable e)  {    if (e != null)      log.log(Level.WARNING, message, e);    else      log.info(message);  }  //  // Deprecated methods  //  public Servlet getServlet(String name)  {    throw new UnsupportedOperationException("getServlet is deprecated");  }  public Enumeration getServletNames()  {    throw new UnsupportedOperationException("getServletNames is deprecated");  }  public Enumeration getServlets()  {    throw new UnsupportedOperationException("getServlets is deprecated");  }  /**   * Adds a runtime servlet.   *   * @Since Servlet 3.0   */  public void addServlet(String servletName,			 String description,			 String className,			 Map<String,String> initParam,			 int loadOnStartup)  {  }  /**   * Adds a runtime servlet mapping   *   * @Since Servlet 3.0   */  public void addServletMaping(String servletName,			       String []urlPatterns)  {  }    /**   * Adds a filter.   *   * @Since Servlet 3.0   */  public void addFilter(String filterName,			String description,			String className,			Map<String,String> initParam)  {  }  /**   * Adds a filter mapping.   *   * @Since Servlet 3.0   */  public void addFilterMapping(String filterName,			       String []urlPatterns,			       String []servletNames,			       EnumSet<DispatcherType> dispatcherTypes,			       boolean isMatchAfter)  {  }  /**   * The session cookie configuration   *   * @Since Servlet 3.0   */  public void setSessionCookieConfig(SessionCookieConfig cookieConfig)  {  }  /**   * Sets the session cookie configuration   *   * @Since Servlet 3.0   */  public SessionCookieConfig getSessionCookieConfig()  {    return null;  }  /**   * The session tracking mode   *   * @Since Servlet 3.0   */  public void setSessionTrackingModes(EnumSet<SessionTrackingMode> modes)  {  }  /**   * The session tracking mode   *   * @Since Servlet 3.0   */  public EnumSet<SessionTrackingMode> getSessionTrackingModes()  {    return null;  }}

⌨️ 快捷键说明

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