You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/08/06 12:44:05 UTC
[4/7] wicket git commit: isComponentOnAjaxResponse now checks whether
a component's enclosure is on ajax response
isComponentOnAjaxResponse now checks whether a component's enclosure is on ajax response
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/73d094b6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/73d094b6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/73d094b6
Branch: refs/heads/master
Commit: 73d094b60a691b2f07d7900e78bcf76ac45ea28a
Parents: 5f2809c
Author: Domas Poliakas <dp...@Domas-MBP.local>
Authored: Thu Jul 27 12:19:42 2017 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Aug 6 15:27:21 2017 +0300
----------------------------------------------------------------------
.../protocol/http/AjaxEnclosureListener.java | 5 +++--
.../wicket/util/tester/BaseWicketTester.java | 20 +++++++++++++++++++-
2 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/73d094b6/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
index 63e493f..b966580 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/AjaxEnclosureListener.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.internal.Enclosure;
import org.apache.wicket.markup.html.internal.InlineEnclosure;
import org.apache.wicket.markup.parser.filter.InlineEnclosureHandler;
import org.apache.wicket.util.visit.IVisit;
@@ -107,8 +108,8 @@ public class AjaxEnclosureListener implements AjaxRequestTarget.IListener
* @param enclosure
* @return true if the given component is the controlling child of the given InlineEnclosure
*/
- private boolean isControllerOfEnclosure(final Component component,
- final InlineEnclosure enclosure)
+ public static boolean isControllerOfEnclosure(final Component component,
+ final Enclosure enclosure)
{
return (enclosure.get(enclosure.getChildId()) == component || // #queue()
enclosure.getParent().get(enclosure.getChildId()) == component); // #add()
http://git-wip-us.apache.org/repos/asf/wicket/blob/73d094b6/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index ddcffb6..13c16fb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -82,6 +82,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.SubmitLink;
+import org.apache.wicket.markup.html.internal.Enclosure;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.ExternalLink;
@@ -96,6 +97,7 @@ import org.apache.wicket.mock.MockRequestParameters;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.page.IPageManager;
import org.apache.wicket.page.IPageManagerContext;
+import org.apache.wicket.protocol.http.AjaxEnclosureListener;
import org.apache.wicket.protocol.http.IMetaDataBufferingWebResponse;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WicketFilter;
@@ -2324,7 +2326,23 @@ public class BaseWicketTester
boolean isComponentInAjaxResponse = ajaxResponse.matches("(?s).*<component id=\"" +
markupId + "\"[^>]*?>.*");
failMessage = "Component wasn't found in the AJAX response. " + componentInfo;
- return isTrue(failMessage, isComponentInAjaxResponse);
+ result = isTrue(failMessage, isComponentInAjaxResponse);
+
+ // Check if the component has been included as part of an enclosure render
+ Enclosure enclosure = getLastRenderedPage().visitChildren(Enclosure.class, (Enclosure enc, IVisit<Enclosure> visit) -> {
+ if (AjaxEnclosureListener.isControllerOfEnclosure(component, enc)){
+ visit.stop(enc);
+ }
+ });
+
+ if (enclosure != null){
+ failMessage = "Component's enclosure was not found in the AJAX response. " + enclosure.toString();
+ boolean isEnclosureInAjaxResponse = !isComponentOnAjaxResponse(enclosure).wasFailed();
+ return isTrue(failMessage, isEnclosureInAjaxResponse);
+ } else {
+ return result;
+ }
+
}
/**