dev@javaserverfaces.java.net

[REVIEW] Override Map.containsKey() for ExternalContext maps

From: Ryan Lubke <Ryan.Lubke_at_Sun.COM>
Date: Thu, 18 May 2006 14:18:29 -0700

Override containsKey() (where it makes sense) to call
through to the underlying object instead
of leveraging the default implementation of containsKey()
which will create a Map.Entry for each value (wasteful)
For this case, the default implemenation is unecessary.


SECTION: Modified Files
----------------------------
M src/com/sun/faces/context/ExternalContextImpl.java


SECTION: Diffs
----------------------------
Index: src/com/sun/faces/context/ExternalContextImpl.java
===================================================================
RCS file:
/cvs/javaserverfaces-sources/jsf-ri/src/com/sun/faces/context/ExternalContextImpl.java,v
retrieving revision 1.48
diff -u -r1.48 ExternalContextImpl.java
--- src/com/sun/faces/context/ExternalContextImpl.java 17 May 2006
19:00:45 -0000 1.48
+++ src/com/sun/faces/context/ExternalContextImpl.java 18 May 2006
21:16:52 -0000
@@ -873,6 +873,10 @@
     }
 
 
+ @Override public boolean containsKey(Object key) {
+ return (servletContext.getAttribute(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
         if (obj == null || !(obj instanceof ApplicationMap)) {
             return false;
@@ -966,6 +970,11 @@
         return (result);
     }
 
+
+ @Override public boolean containsKey(Object key) {
+ return (getSession().getAttribute(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
         if (obj == null || !(obj instanceof SessionMap)) {
             return false;
@@ -1058,6 +1067,11 @@
         return (result);
     }
 
+
+ @Override public boolean containsKey(Object key) {
+ return (request.getAttribute(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
         if (obj == null || !(obj instanceof RequestMap)) {
             return false;
@@ -1119,8 +1133,13 @@
         return Collections.unmodifiableCollection(super.values());
     }
 
+
+ @Override public boolean containsKey(Object key) {
+ return (request.getParameter(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
- if (obj == null ||
+ if (obj == null ||
             !(obj.getClass() ==
ExternalContextImpl.theUnmodifiableMapClass)) {
             return false;
         }
@@ -1169,6 +1188,11 @@
         return request.getParameterValues(key.toString());
     }
 
+
+ @Override public boolean containsKey(Object key) {
+ return (request.getParameterValues(key.toString()) != null);
+ }
+
     public Set entrySet() {
         return Collections.unmodifiableSet(super.entrySet());
     }
@@ -1233,6 +1257,10 @@
     }
 
 
+ @Override public boolean containsKey(Object key) {
+ return (request.getHeader(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
         if (obj == null ||
             !(obj.getClass() ==
ExternalContextImpl.theUnmodifiableMapClass)) {
@@ -1456,8 +1484,13 @@
         return Collections.unmodifiableCollection(super.values());
     }
 
+
+ @Override public boolean containsKey(Object key) {
+ return (servletContext.getInitParameter(key.toString()) != null);
+ }
+
     public boolean equals(Object obj) {
- if (obj == null ||
+ if (obj == null ||
             !(obj.getClass() ==
ExternalContextImpl.theUnmodifiableMapClass)) {
             return false;
         }