pagecontextattributemap.java

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

JAVA
188
字号
/* * 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 SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.jsp.el;import com.caucho.el.Expr;import com.caucho.jsp.PageContextImpl;import com.caucho.vfs.WriteStream;import javax.el.ELContext;import javax.el.ELException;import javax.servlet.ServletContext;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.PageContext;import java.io.IOException;import java.util.*;public class PageContextAttributeMap extends AbstractMap {  private PageContext _pageContext;  private int _scope;      public PageContextAttributeMap(PageContext pageContext, int scope)  {    _pageContext = pageContext;    _scope = scope;  }  public Object get(Object key)  {    return _pageContext.getAttribute((String) key, _scope);  }  public Object put(Object key, Object value)  {    _pageContext.setAttribute((String) key, value, _scope);    return null;  }  private EntrySet _entrySet;      public Set entrySet()  {    if (_entrySet == null)      _entrySet = new EntrySet();          return _entrySet;  }  public class EntrySet extends AbstractSet {    public int size()    {      Enumeration e = _pageContext.getAttributeNamesInScope(_scope);      int i = 0;      while (e.hasMoreElements()) {	e.nextElement();	i++;      }      return i;    }          public Iterator iterator()    {      return new EntryIterator();    }  }  public class EntryIterator implements Iterator, Map.Entry {    Enumeration _e;    String _name;    Object _value;    EntryIterator()    {      _e = _pageContext.getAttributeNamesInScope(_scope);    }    public boolean hasNext()    {      return _e.hasMoreElements();    }    public Object next()    {      _name = (String) _e.nextElement();      _value = _pageContext.getAttribute(_name, _scope);      return this;    }    public void remove()    {      throw new UnsupportedOperationException();    }    public Object getKey()    {      return _name;    }    public Object getValue()    {      return _value;    }    public Object setValue(Object value)    {      _pageContext.setAttribute(_name, value, _scope);              Object oldValue = _value;      _value = value;              return oldValue;    }    public int hashCode()    {      return _name.hashCode();    }    public boolean equals(Object obj)    {      if (! (obj instanceof EntryIterator))	return false;              EntryIterator entry = (EntryIterator) obj;      return (_name.equals(entry._name) &&	      (_value == null && entry._value == null ||	       _value != null && _value.equals(entry._value)));    }  }  public String toString()  {    StringBuilder sb = new StringBuilder();    sb.append("[");    boolean isFirst = true;    Iterator iter = entrySet().iterator();    while (iter.hasNext()) {      Map.Entry entry = (Map.Entry) iter.next();            if (! isFirst)	sb.append(", ");      isFirst = false;      sb.append("{");      sb.append(entry.getKey());      sb.append(", ");      sb.append(entry.getValue());      sb.append("}");    }        sb.append("]");        return sb.toString();  }}

⌨️ 快捷键说明

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