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-6.x
Commit: df4b33636dda5bfb7afdb51f3613d586131402ca
Parents: ecf2c9f
Author: Emond Papegaaij <[email protected]>
Authored: Thu Nov 21 08:21:33 2013 +0100
Committer: Emond Papegaaij <[email protected]>
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);

Reply via email to