/* * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * "The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations under * the License. * * The Original Code is ICEfaces 1.5 open source software code, released * November 5, 2006. The Initial Developer of the Original Code is ICEsoft * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C) * 2004-2010 ICEsoft Technologies Canada, Corp. All Rights Reserved. * * Contributor(s): _____________________. * * Alternatively, the contents of this file may be used under the terms of * the GNU Lesser General Public License Version 2.1 or later (the "LGPL" * License), in which case the provisions of the LGPL License are * applicable instead of those above. If you wish to allow use of your * version of this file only under the terms of the LGPL License and not to * allow others to use your version of this file under the MPL, indicate * your decision by deleting the provisions above and replace them with * the notice and other provisions required by the LGPL License. If you do * not delete the provisions above, a recipient may use your version of * this file under either the MPL or the LGPL License." */ package com.icesoft.faces.mock.test.container; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletContext; final class MockApplicationMap implements Map { public MockApplicationMap(ServletContext context) { this.context = context; } private ServletContext context = null; public void clear() { Iterator keys = keySet().iterator(); while (keys.hasNext()) { context.removeAttribute((String) keys.next()); } } public boolean containsKey(Object key) { return (context.getAttribute(key(key)) != null); } public boolean containsValue(Object value) { if (value == null) { return (false); } Enumeration keys = context.getAttributeNames(); while (keys.hasMoreElements()) { Object next = context.getAttribute((String) keys.nextElement()); if (next == value) { return (true); } } return (false); } public Set entrySet() { Set set = new HashSet(); Enumeration keys = context.getAttributeNames(); while (keys.hasMoreElements()) { set.add(context.getAttribute((String) keys.nextElement())); } return (set); } public boolean equals(Object o) { return (context.equals(o)); } public Object get(Object key) { return (context.getAttribute(key(key))); } public int hashCode() { return (context.hashCode()); } public boolean isEmpty() { return (size() < 1); } public Set keySet() { Set set = new HashSet(); Enumeration keys = context.getAttributeNames(); while (keys.hasMoreElements()) { set.add(keys.nextElement()); } return (set); } public Object put(Object key, Object value) { if (value == null) { return (remove(key)); } String skey = key(key); Object previous = context.getAttribute(skey); context.setAttribute(skey, value); return (previous); } public void putAll(Map map) { Iterator keys = map.keySet().iterator(); while (keys.hasNext()) { String key = (String) keys.next(); context.setAttribute(key, map.get(key)); } } public Object remove(Object key) { String skey = key(key); Object previous = context.getAttribute(skey); context.removeAttribute(skey); return (previous); } public int size() { int n = 0; Enumeration keys = context.getAttributeNames(); while (keys.hasMoreElements()) { keys.nextElement(); n++; } return (n); } public Collection values() { List list = new ArrayList(); Enumeration keys = context.getAttributeNames(); while (keys.hasMoreElements()) { list.add(context.getAttribute((String) keys.nextElement())); } return (list); } private String key(Object key) { if (key == null) { throw new IllegalArgumentException(); } else if (key instanceof String) { return ((String) key); } else { return (key.toString()); } } }