You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by gs...@apache.org on 2007/12/16 02:18:43 UTC
svn commit: r604536 - in /wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/Component.java
main/java/org/apache/wicket/util/tester/BaseWicketTester.java
test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
Author: gseitz
Date: Sat Dec 15 17:18:42 2007
New Revision: 604536
URL: http://svn.apache.org/viewvc?rev=604536&view=rev
Log:
WICKET-545: enhanced check in isComponentOnAjaxResponse
Added:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java (with props)
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?rev=604536&r1=604535&r2=604536&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java Sat Dec 15 17:18:42 2007
@@ -1582,6 +1582,16 @@
}
/**
+ * Gets whether or not an invisible component will render a placeholder tag.
+ *
+ * @return true if a placeholder tag should be rendered
+ */
+ public final boolean getOutputMarkupPlaceholderTag()
+ {
+ return getFlag(FLAG_PLACEHOLDER);
+ }
+
+ /**
* Gets the page holding this component.
*
* @return The page holding this component
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=604536&r1=604535&r2=604536&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sat Dec 15 17:18:42 2007
@@ -985,6 +985,21 @@
String failMessage = "A component which is null could not have been added to the AJAX response";
notNull(failMessage, component);
+ Result result;
+
+ // test that the component renders the placeholder tag if it's not visible
+ if (!component.isVisible())
+ {
+ failMessage = "A component which is invisible and doesn't render a placeholder tag"
+ + " will not be rendered at all and thus won't be accessible for subsequent AJAX interaction";
+ result = isTrue(failMessage, component.getOutputMarkupPlaceholderTag());
+ if (result.wasFailed())
+ {
+ return result;
+ }
+ }
+
+
// Get the AJAX response
String ajaxResponse = getServletResponse().getDocument();
@@ -992,7 +1007,7 @@
failMessage = "The Previous response was not an AJAX response. "
+ "You need to execute an AJAX event, using clickLink, before using this assert";
boolean isAjaxResponse = ajaxResponse.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?><ajax-response>");
- Result result = isTrue(failMessage, isAjaxResponse);
+ result = isTrue(failMessage, isAjaxResponse);
if (result.wasFailed())
{
return result;
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java?rev=604536&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java Sat Dec 15 17:18:42 2007
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.ajax;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.WicketTestCase;
+
+/**
+ * @author Gerolf Seitz
+ */
+public class AjaxComponentVisibilityTest extends WicketTestCase
+{
+
+ private Component test1;
+ private Component test2;
+ private Component test3;
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ tester.startPage(new AjaxHeaderContributionPage());
+ test1 = tester.getLastRenderedPage().get("test1");
+ test2 = tester.getLastRenderedPage().get("test2");
+ test3 = tester.getLastRenderedPage().get("test3");
+ }
+
+ /**
+ *
+ */
+ public void testComponentsAddedToAjax()
+ {
+ test2.setVisible(false);
+ test3.setVisible(false).setOutputMarkupPlaceholderTag(true);
+
+ tester.clickLink("link");
+
+ // test1 should be added without any problems
+ assertFalse(tester.isComponentOnAjaxResponse(test1).wasFailed());
+ // test2 is not in the ajax response because it's invisible
+ assertTrue(tester.isComponentOnAjaxResponse(test2).wasFailed());
+ // test3 is in the ajax response because it renders a placeholder tag
+ assertFalse(tester.isComponentOnAjaxResponse(test3).wasFailed());
+ }
+}
Propchange: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/AjaxComponentVisibilityTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain