[jboss-cvs] jboss-seam/src/main/org/jboss/seam/mock ...
Gavin King
gavin.king at jboss.com
Sun Feb 4 16:14:50 EST 2007
User: gavin
Date: 07/02/04 16:14:50
Modified: src/main/org/jboss/seam/mock MockExternalContext.java
Log:
attribute maps
Revision Changes Path
1.13 +169 -23 jboss-seam/src/main/org/jboss/seam/mock/MockExternalContext.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MockExternalContext.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/mock/MockExternalContext.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- MockExternalContext.java 4 Feb 2007 20:26:14 -0000 1.12
+++ MockExternalContext.java 4 Feb 2007 21:14:50 -0000 1.13
@@ -11,6 +11,8 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Principal;
+import java.util.AbstractSet;
+import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -26,10 +28,12 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import org.jboss.seam.util.EnumerationIterator;
+
/**
* @author Gavin King
* @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
- * @version $Revision: 1.12 $
+ * @version $Revision: 1.13 $
*/
public class MockExternalContext extends ExternalContext
{
@@ -100,14 +104,24 @@
@Override
public Map getApplicationMap()
{
- Map result = new HashMap();
- Enumeration e = context.getAttributeNames();
- while ( e.hasMoreElements() )
+ return new AttributeMap()
{
- String name = (String) e.nextElement();
- result.put( name, context.getAttribute(name) );
+ @Override
+ public Enumeration keys()
+ {
+ return context.getAttributeNames();
}
- return result;
+ @Override
+ public Object getAttribute(String key)
+ {
+ return context.getAttribute(key);
+ }
+ @Override
+ public void setAttribute(String key, Object value)
+ {
+ context.setAttribute(key, value);
+ }
+ };
}
@Override
@@ -205,14 +219,24 @@
@Override
public Map getRequestMap()
{
- Map result = new HashMap();
- Enumeration e = request.getAttributeNames();
- while ( e.hasMoreElements() )
+ return new AttributeMap()
{
- String name = (String) e.nextElement();
- result.put( name, request.getAttribute(name) );
+ @Override
+ public Enumeration keys()
+ {
+ return request.getAttributeNames();
}
- return result;
+ @Override
+ public Object getAttribute(String key)
+ {
+ return request.getAttribute(key);
+ }
+ @Override
+ public void setAttribute(String key, Object value)
+ {
+ request.setAttribute(key, value);
+ }
+ };
}
@Override
@@ -285,17 +309,139 @@
@Override
public Map getSessionMap()
{
- Map result = new HashMap();
- HttpSession session = request.getSession(true);
- Enumeration e = session.getAttributeNames();
- while ( e.hasMoreElements() )
+ final HttpSession session = request.getSession(true);
+ return new AttributeMap()
{
- String name = (String) e.nextElement();
- result.put( name, session.getAttribute(name) );
+ @Override
+ public Enumeration keys()
+ {
+ return session.getAttributeNames();
+ }
+ @Override
+ public Object getAttribute(String key)
+ {
+ return session.getAttribute(key);
+ }
+ @Override
+ public void setAttribute(String key, Object value)
+ {
+ session.setAttribute(key, value);
+ }
+ };
}
+
+ static abstract class AttributeMap implements Map
+ {
+
+ public abstract Enumeration keys();
+
+ public Object get(Object key)
+ {
+ return getAttribute((String)key);
+ }
+
+ public Object put(Object key, Object value)
+ {
+ Object result = get(key);
+ setAttribute((String)key, value);
return result;
}
+ public void clear()
+ {
+ Enumeration e = keys();
+ while (e.hasMoreElements())
+ {
+ remove( e.nextElement() );
+ }
+ }
+
+ public boolean containsKey(Object key)
+ {
+ Enumeration e = keys();
+ while (e.hasMoreElements())
+ {
+ if( key.equals( e.nextElement() ) ) return true;
+ }
+ return false;
+ }
+
+ public boolean containsValue(Object value)
+ {
+ Enumeration e = keys();
+ while (e.hasMoreElements())
+ {
+ if ( value.equals( get( e.nextElement() ) ) ) return true;
+ }
+ return false;
+ }
+
+ public Set entrySet()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public abstract Object getAttribute(String key);
+
+ public boolean isEmpty()
+ {
+ return size()==0;
+ }
+
+ public Set keySet()
+ {
+ return new AbstractSet()
+ {
+
+ @Override
+ public Iterator iterator()
+ {
+ return new EnumerationIterator( keys() );
+ }
+
+ @Override
+ public int size()
+ {
+ return AttributeMap.this.size();
+ }
+
+ };
+ }
+
+ public abstract void setAttribute(String key, Object value);
+
+ public void putAll(Map t)
+ {
+ for (Map.Entry me: (Set<Map.Entry>) t.entrySet())
+ {
+ put( me.getKey(), me.getValue() );
+ }
+ }
+
+ public Object remove(Object key)
+ {
+ return put(key, null);
+ }
+
+ public int size()
+ {
+ int i=0;
+ Enumeration e = keys();
+ while (e.hasMoreElements())
+ {
+ e.nextElement();
+ i++;
+ }
+ return i;
+ }
+
+ public Collection values()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+
@Override
public Principal getUserPrincipal()
{
More information about the jboss-cvs-commits
mailing list