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

git commit: better implementation for NONBOOKMARKABLE and made it default again

Updated Branches:
  refs/heads/wicket-cdi-1.1-rewrite ecf2c9fe2 -> df4b33636


better implementation for NONBOOKMARKABLE and made it default again


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/df4b3363
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/df4b3363
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/df4b3363

Branch: refs/heads/wicket-cdi-1.1-rewrite
Commit: df4b33636dda5bfb7afdb51f3613d586131402ca
Parents: ecf2c9f
Author: Emond Papegaaij <em...@topicus.nl>
Authored: Thu Nov 21 08:21:33 2013 +0100
Committer: Emond Papegaaij <em...@topicus.nl>
Committed: Thu Nov 21 08:21:33 2013 +0100

----------------------------------------------------------------------
 .../wicket/cdi/ConversationPropagation.java     | 17 +++++------------
 .../wicket/cdi/ConversationPropagator.java      |  6 +++---
 .../wicket/cdi/IConversationPropagation.java    | 20 ++++++++++++++------
 .../wicket/cdi/util/tester/CdiWicketTester.java |  4 ++--
 4 files changed, 24 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/df4b3363/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
index 502b6e5..3c1eb89 100644
--- a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
+++ b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagation.java
@@ -18,8 +18,7 @@ package org.apache.wicket.cdi;
 
 import javax.enterprise.context.ConversationScoped;
 
-import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
+import org.apache.wicket.Page;
 import org.apache.wicket.request.IRequestHandler;
 
 /**
@@ -33,7 +32,7 @@ public enum ConversationPropagation implements IConversationPropagation {
 	/** No conversational propagation takes place */
 	NONE {
 		@Override
-		public boolean propagatesViaParameters(IRequestHandler handler)
+		public boolean propagatesVia(IRequestHandler handler, Page page)
 		{
 			return false;
 		}
@@ -41,18 +40,12 @@ public enum ConversationPropagation implements IConversationPropagation {
 	/**
 	 * Pesistent conversations are propagated between non-bookmarkable pages
 	 * only
-	 * 
-	 * @deprecated as of cdi-1.1, it is specified that conversations are
-	 *             propagated via the cid query parameter even for
-	 *             non-bookmarkable pages
 	 */
-	@Deprecated
 	NONBOOKMARKABLE {
 		@Override
-		public boolean propagatesViaParameters(IRequestHandler handler)
+		public boolean propagatesVia(IRequestHandler handler, Page page)
 		{
-			return !(handler instanceof BookmarkableListenerInterfaceRequestHandler)
-					&& !(handler instanceof BookmarkablePageRequestHandler);
+			return page != null;
 		}
 	},
 	/**
@@ -61,7 +54,7 @@ public enum ConversationPropagation implements IConversationPropagation {
 	 */
 	ALL {
 		@Override
-		public boolean propagatesViaParameters(IRequestHandler handler)
+		public boolean propagatesVia(IRequestHandler handler, Page page)
 		{
 			return true;
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/df4b3363/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java
index 690710b..9af8156 100644
--- a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java
+++ b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/ConversationPropagator.java
@@ -154,7 +154,7 @@ public class ConversationPropagator extends AbstractRequestCycleListener
 			return;
 		}
 
-		if (propagation.propagatesViaParameters(handler))
+		if (propagation.propagatesVia(handler, getPage(handler)))
 		{
 			logger.debug(
 					"Propagating non-transient conversation {} via page parameters of handler {}",
@@ -188,7 +188,7 @@ public class ConversationPropagator extends AbstractRequestCycleListener
 			return;
 		}
 
-		if (propagation.propagatesViaParameters(handler))
+		if (propagation.propagatesVia(handler, getPage(handler)))
 		{
 			logger.debug("Propagating non-transient conversation {} via url", conversation.getId());
 			url.setQueryParameter(CID, conversation.getId());
@@ -241,7 +241,7 @@ public class ConversationPropagator extends AbstractRequestCycleListener
 			Conversation conversation)
 	{
 		if (conversation == null || !conversation.isTransient() || page == null
-				|| !hasConversationalComponent(page))
+				|| !hasConversationalComponent(page) || !propagation.propagatesVia(handler, page))
 		{
 			return;
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/df4b3363/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/IConversationPropagation.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/IConversationPropagation.java b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/IConversationPropagation.java
index 09e39a9..f5dcb16 100644
--- a/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/IConversationPropagation.java
+++ b/wicket-experimental/wicket-cdi-1.1/src/main/java/org/apache/wicket/cdi/IConversationPropagation.java
@@ -16,23 +16,31 @@
  */
 package org.apache.wicket.cdi;
 
+import org.apache.wicket.Page;
+import org.apache.wicket.core.request.handler.IPageRequestHandler;
 import org.apache.wicket.request.IRequestHandler;
 
 /**
- * A strategy that specifies how conversations should be propagated between pages/resources.
- * {@link ConversationPropagation} provides sensible default implementations of this interface.
+ * A strategy that specifies how conversations should be propagated between
+ * pages/resources. {@link ConversationPropagation} provides sensible default
+ * implementations of this interface.
  * 
  * @author papegaaij
  */
 public interface IConversationPropagation
 {
 	/**
-	 * Indicates if the conversation should be propagated via url-parameters for the given request
-	 * handler. This can either be a get parameter in a rendered url, or via page parameters.
+	 * Indicates if the conversation should be propagated via url-parameters for
+	 * the given request handler and page (if any). A conversation is always
+	 * propagated via the cid query parameter.
 	 * 
 	 * @param handler
 	 *            The current request handler
-	 * @return true if the conversation should be propagated for the given request handler.
+	 * @param page
+	 *            The page associated with the request handler, or null if the
+	 *            handler is not an {@link IPageRequestHandler}.
+	 * @return true if the conversation should be propagated for the given
+	 *         request handler.
 	 */
-	public boolean propagatesViaParameters(IRequestHandler handler);
+	public boolean propagatesVia(IRequestHandler handler, Page page);
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/df4b3363/wicket-experimental/wicket-cdi-1.1/src/test/java/org/apache/wicket/cdi/util/tester/CdiWicketTester.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-cdi-1.1/src/test/java/org/apache/wicket/cdi/util/tester/CdiWicketTester.java b/wicket-experimental/wicket-cdi-1.1/src/test/java/org/apache/wicket/cdi/util/tester/CdiWicketTester.java
index 8efd59b..b5d4eb7 100644
--- a/wicket-experimental/wicket-cdi-1.1/src/test/java/org/apache/wicket/cdi/util/tester/CdiWicketTester.java
+++ b/wicket-experimental/wicket-cdi-1.1/src/test/java/org/apache/wicket/cdi/util/tester/CdiWicketTester.java
@@ -90,9 +90,9 @@ public class CdiWicketTester extends WicketTester
 	{
 		Url ret = super.urlFor(handler);
 		final CdiConfiguration configuration = CdiConfiguration.get(getApplication());
-		if (configuration.getPropagation().propagatesViaParameters(handler))
+		Page page = ConversationPropagator.getPage(handler);
+		if (configuration.getPropagation().propagatesVia(handler, page))
 		{
-			Page page = ConversationPropagator.getPage(handler);
 			if (page != null)
 			{
 				String cid = ConversationPropagator.getConversationIdFromPage(page);