You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/11/14 08:14:24 UTC

svn commit: r1034946 - in /wicket/trunk: wicket-request/src/main/java/org/apache/wicket/request/http/ wicket/src/main/java/org/apache/wicket/protocol/http/ wicket/src/main/java/org/apache/wicket/protocol/http/mock/ wicket/src/main/java/org/apache/wicke...

Author: ivaynberg
Date: Sun Nov 14 07:14:24 2010
New Revision: 1034946

URL: http://svn.apache.org/viewvc?rev=1034946&view=rev
Log:
some more cleanup, mainly better naming
Issue: WICKET-3161

Added:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IMetaDataBufferingWebResponse.java
      - copied, changed from r1034939, wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ICookieSavingResponse.java
Removed:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ICookieSavingResponse.java
Modified:
    wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java

Modified: wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java?rev=1034946&r1=1034945&r2=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java (original)
+++ wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java Sun Nov 14 07:14:24 2010
@@ -32,6 +32,7 @@ import org.apache.wicket.util.time.Durat
  */
 public abstract class WebResponse extends Response
 {
+	/** Recommended value for cache duration */
 	// one year, maximum recommended cache duration in RFC-2616
 	public static final Duration MAX_CACHE_DURATION = Duration.days(365);
 
@@ -173,14 +174,14 @@ public abstract class WebResponse extend
 
 	/**
 	 * Make this response cacheable
-	 *
+	 * 
 	 * @param duration
-	 *            maximum duration before the response must be invalidated by any caches.
-	 *            It should not exceed one year, based on
-	 *            <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">RFC-2616</a>.
+	 *            maximum duration before the response must be invalidated by any caches. It should
+	 *            not exceed one year, based on <a
+	 *            href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">RFC-2616</a>.
 	 * @param scope
 	 *            controls which caches are allowed to cache the response
-	 *
+	 * 
 	 * @see WebResponse#MAX_CACHE_DURATION
 	 */
 	public void enableCaching(Duration duration, WebResponse.CacheScope scope)
@@ -189,7 +190,7 @@ public abstract class WebResponse extend
 		Args.notNull(scope, "scope");
 
 		// do not exceed the maximum recommended value from RFC-2616
-		if(duration.compareTo(MAX_CACHE_DURATION) > 0)
+		if (duration.compareTo(MAX_CACHE_DURATION) > 0)
 			duration = MAX_CACHE_DURATION;
 
 		// Get current time
@@ -208,30 +209,29 @@ public abstract class WebResponse extend
 	/**
 	 * caching scope for data
 	 * <p/>
-	 * Unless the data is confidential, session-specific or user-specific the general advice is
-	 * to prefer value <code>PUBLIC</code> for best network performance.
+	 * Unless the data is confidential, session-specific or user-specific the general advice is to
+	 * prefer value <code>PUBLIC</code> for best network performance.
 	 * <p/>
-	 * This value will basically affect the header [Cache-Control]. Details can be found
-	 *  <a href="http://palisade.plynt.com/issues/2008Jul/cache-control-attributes">here</a>
-	 * or in <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">RFC-2616</a>.
+	 * This value will basically affect the header [Cache-Control]. Details can be found <a
+	 * href="http://palisade.plynt.com/issues/2008Jul/cache-control-attributes">here</a> or in <a
+	 * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">RFC-2616</a>.
 	 */
-	public static enum CacheScope
-	{
+	public static enum CacheScope {
 		/**
 		 * use all caches (private + public)
 		 * <p/>
-		 * Use this value for caching if the data is not confidential or session-specific. It will allow
-		 * public caches to cache the data. In some versions of Firefox this will enable caching
-		 * of resources over SSL (details can be found
-		 * <a href="http://blog.pluron.com/2008/07/why-you-should.html">here</a>).
+		 * Use this value for caching if the data is not confidential or session-specific. It will
+		 * allow public caches to cache the data. In some versions of Firefox this will enable
+		 * caching of resources over SSL (details can be found <a
+		 * href="http://blog.pluron.com/2008/07/why-you-should.html">here</a>).
 		 */
-		 PUBLIC("public"),
-		 /**
-		 *	only use non-public caches
-		  * <p/>
-		  * Use this setting if the response is session-specific or confidential and you don't
-		  * want it to be cached on public caches or proxies. On some versions of Firefox this
-		  * will disable caching of any resources in over SSL connections.
+		PUBLIC("public"),
+		/**
+		 * only use non-public caches
+		 * <p/>
+		 * Use this setting if the response is session-specific or confidential and you don't want
+		 * it to be cached on public caches or proxies. On some versions of Firefox this will
+		 * disable caching of any resources in over SSL connections.
 		 */
 		PRIVATE("private");
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java?rev=1034946&r1=1034945&r2=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java Sun Nov 14 07:14:24 2010
@@ -36,7 +36,7 @@ import org.apache.wicket.util.lang.Args;
  * 
  * @author Matej Knopp
  */
-public class BufferedWebResponse extends WebResponse implements ICookieSavingResponse
+public class BufferedWebResponse extends WebResponse implements IMetaDataBufferingWebResponse
 {
 	private final transient WebResponse originalResponse;
 
@@ -47,27 +47,27 @@ public class BufferedWebResponse extends
 	 */
 	public BufferedWebResponse(WebResponse originalResponse)
 	{
-		// if original response eventually had some cookies set
-		// we should transfer them to the current response
-		if(originalResponse instanceof ICookieSavingResponse)
-			((ICookieSavingResponse) originalResponse).transferCookies(this);
-
+		// if original response had some metadata set
+		// we should transfer it to the current response
+		if (originalResponse instanceof IMetaDataBufferingWebResponse)
+		{
+			((IMetaDataBufferingWebResponse)originalResponse).writeMetaData(this);
+		}
 		this.originalResponse = originalResponse;
 	}
 
 	/**
 	 * transfer cookie operations (add, clear) to given web response
-	 *
-	 * @param response web response that should receive the current cookie operation
+	 * 
+	 * @param response
+	 *            web response that should receive the current cookie operation
 	 */
-	public void transferCookies(WebResponse response)
+	public void writeMetaData(WebResponse response)
 	{
 		for (Action action : actions)
 		{
-			if (action instanceof AddCookieAction)
+			if (action instanceof MetaDataAction)
 				action.invoke(response);
-			else if (action instanceof ClearCookieAction)
-			action.invoke(response);
 		}
 	}
 
@@ -90,6 +90,16 @@ public class BufferedWebResponse extends
 		protected abstract void invoke(WebResponse response);
 	};
 
+	/**
+	 * Actions not related directly to the content of the response, eg setting cookies, headers.
+	 * 
+	 * @author igor
+	 */
+	private static abstract class MetaDataAction extends Action
+	{
+	};
+
+
 	private static class WriteCharSequenceAction extends Action
 	{
 		private final StringBuilder builder = new StringBuilder(4096);
@@ -148,7 +158,7 @@ public class BufferedWebResponse extends
 		}
 	};
 
-	private static class AddCookieAction extends Action
+	private static class AddCookieAction extends MetaDataAction
 	{
 		private final Cookie cookie;
 
@@ -164,7 +174,7 @@ public class BufferedWebResponse extends
 		}
 	};
 
-	private static class ClearCookieAction extends Action
+	private static class ClearCookieAction extends MetaDataAction
 	{
 		private final Cookie cookie;
 
@@ -180,7 +190,7 @@ public class BufferedWebResponse extends
 		}
 	};
 
-	private static class SetHeaderAction extends Action
+	private static class SetHeaderAction extends MetaDataAction
 	{
 		private final String name;
 		private final String value;
@@ -198,7 +208,7 @@ public class BufferedWebResponse extends
 		}
 	}
 
-	private static class SetDateHeaderAction extends Action
+	private static class SetDateHeaderAction extends MetaDataAction
 	{
 		private final String name;
 		private final long value;
@@ -248,7 +258,7 @@ public class BufferedWebResponse extends
 		}
 	};
 
-	private static class SetStatusAction extends Action
+	private static class SetStatusAction extends MetaDataAction
 	{
 		private final int sc;
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java?rev=1034946&r1=1034945&r2=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java Sun Nov 14 07:14:24 2010
@@ -33,7 +33,7 @@ import org.apache.wicket.request.http.We
  * 
  * @author Matej Knopp
  */
-class HeaderBufferingWebResponse extends WebResponse implements ICookieSavingResponse
+class HeaderBufferingWebResponse extends WebResponse implements IMetaDataBufferingWebResponse
 {
 	private final WebResponse originalResponse;
 	private final BufferedWebResponse bufferedResponse;
@@ -176,8 +176,8 @@ class HeaderBufferingWebResponse extends
 		bufferedWritten = false;
 	}
 
-	public void transferCookies(WebResponse webResponse)
+	public void writeMetaData(WebResponse webResponse)
 	{
-		bufferedResponse.transferCookies(webResponse);
+		bufferedResponse.writeMetaData(webResponse);
 	}
 }

Copied: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IMetaDataBufferingWebResponse.java (from r1034939, wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ICookieSavingResponse.java)
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IMetaDataBufferingWebResponse.java?p2=wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IMetaDataBufferingWebResponse.java&p1=wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ICookieSavingResponse.java&r1=1034939&r2=1034946&rev=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/ICookieSavingResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IMetaDataBufferingWebResponse.java Sun Nov 14 07:14:24 2010
@@ -19,16 +19,19 @@ package org.apache.wicket.protocol.http;
 import org.apache.wicket.request.http.WebResponse;
 
 /**
- * any kind of response that is capable of remembering the cookies that were set
- * <p/>
- * this is for example needed to save the cookies during a redirect to buffer operation
+ * Any kind of response that buffers meta data such as cookies and headers and can unbuffer it into
+ * another response
+ * <p>
+ * This is, for example, needed to save the cookies during a redirect to buffer operation
+ * </p>
  */
-public interface ICookieSavingResponse
+public interface IMetaDataBufferingWebResponse
 {
 	/**
 	 * transfer cookies to given web response
-	 *
-	 * @param webResponse web response that should receive the current cookies
+	 * 
+	 * @param webResponse
+	 *            web response that should receive the current cookies
 	 */
-	void transferCookies(WebResponse webResponse);
+	void writeMetaData(WebResponse webResponse);
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java?rev=1034946&r1=1034945&r2=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java Sun Nov 14 07:14:24 2010
@@ -36,7 +36,7 @@ import javax.servlet.ServletOutputStream
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wicket.protocol.http.ICookieSavingResponse;
+import org.apache.wicket.protocol.http.IMetaDataBufferingWebResponse;
 import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.util.value.ValueMap;
 
@@ -47,7 +47,7 @@ import org.apache.wicket.util.value.Valu
  * 
  * @author Chris Turner
  */
-public class MockHttpServletResponse implements HttpServletResponse, ICookieSavingResponse
+public class MockHttpServletResponse implements HttpServletResponse, IMetaDataBufferingWebResponse
 {
 	private static final int MODE_BINARY = 1;
 
@@ -818,9 +818,16 @@ public class MockHttpServletResponse imp
 		return Collections.singletonList(headers.get(name).toString());
 	}
 
-	public void transferCookies(WebResponse webResponse)
+	public void writeMetaData(WebResponse webResponse)
 	{
 		for (Cookie cookie : cookies)
+		{
 			webResponse.addCookie(cookie);
+		}
+		for (String name : headers.keySet())
+		{
+			webResponse.setHeader(name, headers.get(name).toString());
+		}
+		webResponse.setStatus(status);
 	}
 }
\ No newline at end of file

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1034946&r1=1034945&r2=1034946&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sun Nov 14 07:14:24 2010
@@ -76,7 +76,7 @@ import org.apache.wicket.mock.MockReques
 import org.apache.wicket.mock.MockSessionStore;
 import org.apache.wicket.page.IPageManager;
 import org.apache.wicket.page.IPageManagerContext;
-import org.apache.wicket.protocol.http.ICookieSavingResponse;
+import org.apache.wicket.protocol.http.IMetaDataBufferingWebResponse;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WicketFilter;
 import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
@@ -2078,11 +2078,14 @@ public class BaseWicketTester
 		}
 	}
 
-	private class WicketTesterServletWebResponse extends ServletWebResponse implements ICookieSavingResponse
+	private class WicketTesterServletWebResponse extends ServletWebResponse
+		implements
+			IMetaDataBufferingWebResponse
 	{
 		private List<Cookie> cookies = new ArrayList<Cookie>();
 
-		public WicketTesterServletWebResponse(ServletWebRequest request, MockHttpServletResponse response)
+		public WicketTesterServletWebResponse(ServletWebRequest request,
+			MockHttpServletResponse response)
 		{
 			super(request, response);
 		}
@@ -2101,10 +2104,13 @@ public class BaseWicketTester
 			cookies.add(cookie);
 		}
 
-		public void transferCookies(WebResponse webResponse)
+		public void writeMetaData(WebResponse webResponse)
 		{
 			for (Cookie cookie : cookies)
+			{
 				webResponse.addCookie(cookie);
+			}
+
 		}
 
 		@Override