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);
