You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by cr...@apache.org on 2006/05/08 16:56:00 UTC
svn commit: r405065 - in
/struts/shale/trunk/test-framework/src/java/org/apache/shale/test:
base/AbstractJsfTestCase.java mock/MockHttpServletRequest.java
mock/MockHttpSession.java mock/MockServletContext.java
Author: craigmcc
Date: Mon May 8 07:55:58 2006
New Revision: 405065
URL: http://svn.apache.org/viewcvs?rev=405065&view=rev
Log:
Support attribute added/removed/replaced event firing on the mock
ServletContext, HttpServletRequest, and HttpSession classes.
PR: SHALE-174
Modified:
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/base/AbstractJsfTestCase.java
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpServletRequest.java
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpSession.java
struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServletContext.java
Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/base/AbstractJsfTestCase.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/base/AbstractJsfTestCase.java?rev=405065&r1=405064&r2=405065&view=diff
==============================================================================
--- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/base/AbstractJsfTestCase.java (original)
+++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/base/AbstractJsfTestCase.java Mon May 8 07:55:58 2006
@@ -98,7 +98,9 @@
servletContext = new MockServletContext();
config = new MockServletConfig(servletContext);
session = new MockHttpSession();
+ session.setServletContext(servletContext);
request = new MockHttpServletRequest(session);
+ request.setServletContext(servletContext);
response = new MockHttpServletResponse();
// Set up JSF API Objects
Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpServletRequest.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpServletRequest.java?rev=405065&r1=405064&r2=405065&view=diff
==============================================================================
--- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpServletRequest.java (original)
+++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpServletRequest.java Mon May 8 07:55:58 2006
@@ -32,7 +32,10 @@
import java.util.Vector;
import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletContext;
import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequestAttributeEvent;
+import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -89,6 +92,15 @@
// ----------------------------------------------------- Mock Object Methods
+ /**
+ * <p>Add a new listener instance that should be notified about
+ * attribute changes.</p>
+ */
+ public void addAttributeListener(ServletRequestAttributeListener listener) {
+ attributeListeners.add(listener);
+ }
+
+
public void addDateHeader(String name, long value) {
headers.add(name + ": " + formatDate(value));
@@ -126,6 +138,13 @@
}
+ public ServletContext getServletContext() {
+
+ return this.servletContext;
+
+ }
+
+
public void setHttpSession(HttpSession session) {
this.session = session;
@@ -151,6 +170,13 @@
}
+ public void setServletContext(ServletContext servletContext) {
+
+ this.servletContext = servletContext;
+
+ }
+
+
public void setUserPrincipal(Principal principal) {
this.principal = principal;
@@ -161,6 +187,7 @@
// ------------------------------------------------------ Instance Variables
+ private List attributeListeners = new ArrayList();
private HashMap attributes = new HashMap();
private String contextPath = null;
private List headers = new ArrayList();
@@ -169,6 +196,7 @@
private String pathInfo = null;
private Principal principal = null;
private String queryString = null;
+ private ServletContext servletContext = null;
private String servletPath = null;
private HttpSession session = null;
@@ -608,17 +636,30 @@
public void removeAttribute(String name) {
- attributes.remove(name);
+ if (attributes.containsKey(name)) {
+ Object value = attributes.remove(name);
+ fireAttributeRemoved(name, value);
+ }
}
public void setAttribute(String name, Object value) {
+ if (name == null) {
+ throw new IllegalArgumentException("Attribute name cannot be null");
+ }
if (value == null) {
- attributes.remove(name);
+ removeAttribute(name);
+ return;
+ }
+ if (attributes.containsKey(name)) {
+ Object oldValue = attributes.get(name);
+ attributes.put(name, value);
+ fireAttributeReplaced(name, oldValue);
} else {
attributes.put(name, value);
+ fireAttributeAdded(name, value);
}
}
@@ -631,7 +672,52 @@
}
- // --------------------------------------------------------- Support Methods
+ // --------------------------------------------------------- Private Methods
+
+
+ private void fireAttributeAdded(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletRequestAttributeEvent event =
+ new ServletRequestAttributeEvent(getServletContext(), this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletRequestAttributeListener listener =
+ (ServletRequestAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
+ }
+
+
+ private void fireAttributeRemoved(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletRequestAttributeEvent event =
+ new ServletRequestAttributeEvent(getServletContext(), this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletRequestAttributeListener listener =
+ (ServletRequestAttributeListener) listeners.next();
+ listener.attributeRemoved(event);
+ }
+ }
+
+
+ private void fireAttributeReplaced(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletRequestAttributeEvent event =
+ new ServletRequestAttributeEvent(getServletContext(), this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletRequestAttributeListener listener =
+ (ServletRequestAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
+ }
/**
Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpSession.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpSession.java?rev=405065&r1=405064&r2=405065&view=diff
==============================================================================
--- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpSession.java (original)
+++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockHttpSession.java Mon May 8 07:55:58 2006
@@ -16,11 +16,16 @@
package org.apache.shale.test.mock;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionAttributeListener;
+import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionContext;
/**
@@ -53,6 +58,22 @@
// ----------------------------------------------------- Mock Object Methods
+ /**
+ * <p>Add a new listener instance that should be notified about
+ * attribute changes.</p>
+ */
+ public void addAttributeListener(HttpSessionAttributeListener listener) {
+ attributeListeners.add(listener);
+ }
+
+
+ public ServletContext getServletContext() {
+
+ return this.servletContext;
+
+ }
+
+
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
@@ -63,6 +84,7 @@
// ------------------------------------------------------ Instance Variables
+ private List attributeListeners = new ArrayList();
private HashMap attributes = new HashMap();
private String id = "123";
private ServletContext servletContext = null;
@@ -121,13 +143,6 @@
}
- public ServletContext getServletContext() {
-
- return this.servletContext;
-
- }
-
-
public HttpSessionContext getSessionContext() {
throw new UnsupportedOperationException();
@@ -172,7 +187,10 @@
public void removeAttribute(String name) {
- attributes.remove(name);
+ if (attributes.containsKey(name)) {
+ Object value = attributes.remove(name);
+ fireAttributeRemoved(name, value);
+ }
}
@@ -186,10 +204,20 @@
public void setAttribute(String name, Object value) {
+ if (name == null) {
+ throw new IllegalArgumentException("Attribute name cannot be null");
+ }
if (value == null) {
- attributes.remove(name);
+ removeAttribute(name);
+ return;
+ }
+ if (attributes.containsKey(name)) {
+ Object oldValue = attributes.get(name);
+ attributes.put(name, value);
+ fireAttributeReplaced(name, oldValue);
} else {
attributes.put(name, value);
+ fireAttributeAdded(name, value);
}
}
@@ -199,6 +227,54 @@
throw new UnsupportedOperationException();
+ }
+
+
+ // --------------------------------------------------------- Support Methods
+
+
+ private void fireAttributeAdded(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ HttpSessionBindingEvent event =
+ new HttpSessionBindingEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ HttpSessionAttributeListener listener =
+ (HttpSessionAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
+ }
+
+
+ private void fireAttributeRemoved(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ HttpSessionBindingEvent event =
+ new HttpSessionBindingEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ HttpSessionAttributeListener listener =
+ (HttpSessionAttributeListener) listeners.next();
+ listener.attributeRemoved(event);
+ }
+ }
+
+
+ private void fireAttributeReplaced(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ HttpSessionBindingEvent event =
+ new HttpSessionBindingEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ HttpSessionAttributeListener listener =
+ (HttpSessionAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
}
Modified: struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServletContext.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServletContext.java?rev=405065&r1=405064&r2=405065&view=diff
==============================================================================
--- struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServletContext.java (original)
+++ struts/shale/trunk/test-framework/src/java/org/apache/shale/test/mock/MockServletContext.java Mon May 8 07:55:58 2006
@@ -21,14 +21,19 @@
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
+import javax.servlet.ServletContextAttributeEvent;
+import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletException;
@@ -53,6 +58,15 @@
/**
+ * <p>Add a new listener instance that should be notified about
+ * attribute changes.</p>
+ */
+ public void addAttributeListener(ServletContextAttributeListener listener) {
+ attributeListeners.add(listener);
+ }
+
+
+ /**
* <p>Add a context initialization parameter to the set of
* parameters recognized by this instance.</p>
*/
@@ -88,6 +102,7 @@
// ------------------------------------------------------ Instance Variables
+ private List attributeListeners = new ArrayList();
private Hashtable attributes = new Hashtable();
private File documentRoot = null;
private Hashtable mimeTypes = new Hashtable();
@@ -329,15 +344,80 @@
public void removeAttribute(String name) {
- attributes.remove(name);
+ if (attributes.containsKey(name)) {
+ Object value = attributes.remove(name);
+ fireAttributeRemoved(name, value);
+ }
}
public void setAttribute(String name, Object value) {
- attributes.put(name, value);
+ if (name == null) {
+ throw new IllegalArgumentException("Attribute name cannot be null");
+ }
+ if (value == null) {
+ removeAttribute(name);
+ return;
+ }
+ if (attributes.containsKey(name)) {
+ Object oldValue = attributes.get(name);
+ attributes.put(name, value);
+ fireAttributeReplaced(name, oldValue);
+ } else {
+ attributes.put(name, value);
+ fireAttributeAdded(name, value);
+ }
+
+ }
+
+
+ // --------------------------------------------------------- Private Methods
+
+ private void fireAttributeAdded(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletContextAttributeEvent event =
+ new ServletContextAttributeEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletContextAttributeListener listener =
+ (ServletContextAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
+ }
+
+
+ private void fireAttributeRemoved(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletContextAttributeEvent event =
+ new ServletContextAttributeEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletContextAttributeListener listener =
+ (ServletContextAttributeListener) listeners.next();
+ listener.attributeRemoved(event);
+ }
+ }
+
+
+ private void fireAttributeReplaced(String key, Object value) {
+ if (attributeListeners.size() < 1) {
+ return;
+ }
+ ServletContextAttributeEvent event =
+ new ServletContextAttributeEvent(this, key, value);
+ Iterator listeners = attributeListeners.iterator();
+ while (listeners.hasNext()) {
+ ServletContextAttributeListener listener =
+ (ServletContextAttributeListener) listeners.next();
+ listener.attributeAdded(event);
+ }
}