You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2010/11/27 17:02:04 UTC

svn commit: r1039700 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java

Author: jdonnerstag
Date: Sat Nov 27 16:02:04 2010
New Revision: 1039700

URL: http://svn.apache.org/viewvc?rev=1039700&view=rev
Log:
changes the fix to be more safe
Issue: WICKET-1214

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1039700&r1=1039699&r2=1039700&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sat Nov 27 16:02:04 2010
@@ -191,6 +191,10 @@ public class BaseWicketTester
 	// Simulates the cookies maintained by the browser
 	private final List<Cookie> browserCookies = new ArrayList<Cookie>();
 
+	// The root component used for the start. Usually the Page, but can also be a Panel
+	// see https://issues.apache.org/jira/browse/WICKET-1214
+	private MarkupContainer startComponent;
+
 	/**
 	 * Creates <code>WicketTester</code> and automatically create a <code>WebApplication</code>, but
 	 * the tester will have no home page.
@@ -586,6 +590,7 @@ public class BaseWicketTester
 	 */
 	public Page startPage(IPageProvider pageProvider)
 	{
+		startComponent = null;
 		request = new MockHttpServletRequest(application, hsession, servletContext);
 		request.setURL(request.getContextPath() + request.getServletPath() + "/");
 		IRequestHandler handler = new RenderPageRequestHandler(pageProvider);
@@ -795,6 +800,7 @@ public class BaseWicketTester
 	 */
 	public final <C extends Page> Page startPage(Class<C> pageClass)
 	{
+		startComponent = null;
 		request.setUrl(application.getRootRequestMapper().mapHandler(
 			new BookmarkablePageRequestHandler(new PageProvider(pageClass))));
 		processRequest();
@@ -814,6 +820,7 @@ public class BaseWicketTester
 	 */
 	public final <C extends Page> Page startPage(Class<C> pageClass, PageParameters parameters)
 	{
+		startComponent = null;
 		request.setUrl(application.getRootRequestMapper().mapHandler(
 			new BookmarkablePageRequestHandler(new PageProvider(pageClass, parameters))));
 		processRequest();
@@ -873,7 +880,7 @@ public class BaseWicketTester
 	 */
 	public final Panel startPanel(final TestPanelSource testPanelSource)
 	{
-		return (Panel)startPage(new ITestPageSource()
+		Panel panel = (Panel)startPage(new ITestPageSource()
 		{
 			private static final long serialVersionUID = 1L;
 
@@ -882,6 +889,8 @@ public class BaseWicketTester
 				return new DummyPanelPage(testPanelSource);
 			}
 		}).get(DummyPanelPage.TEST_PANEL_ID);
+		startComponent = panel;
+		return panel;
 	}
 
 	/**
@@ -895,7 +904,7 @@ public class BaseWicketTester
 	 */
 	public final <C extends Panel> Panel startPanel(final Class<C> panelClass)
 	{
-		return (Panel)startPage(new ITestPageSource()
+		Panel panel = (Panel)startPage(new ITestPageSource()
 		{
 			private static final long serialVersionUID = 1L;
 
@@ -920,6 +929,8 @@ public class BaseWicketTester
 				});
 			}
 		}).get(DummyPanelPage.TEST_PANEL_ID);
+		startComponent = panel;
+		return panel;
 	}
 
 	/**
@@ -967,13 +978,11 @@ public class BaseWicketTester
 	 */
 	public Component getComponentFromLastRenderedPage(String path)
 	{
-		MarkupContainer root = getLastRenderedPage();
-		if (root instanceof DummyPanelPage)
+		if (startComponent != null)
 		{
-			root = (MarkupContainer)root.get(DummyPanelPage.TEST_PANEL_ID);
+			path = startComponent.getId() + ":" + path;
 		}
-
-		Component component = root.get(path);
+		Component component = getLastRenderedPage().get(path);
 		if (component == null)
 		{
 			fail("path: '" + path + "' does not exist for page: " +
@@ -1494,8 +1503,8 @@ public class BaseWicketTester
 	 * <code>Component</code> is on the Ajax response sent back to the client.
 	 * <p>
 	 * PLEASE NOTE! This method doesn't actually insert the <code>Component</code> in the client DOM
-	 * tree, using Javascript. But it shouldn't be needed because you have to trust that the Wicket
-	 * Ajax Javascript just works.
+	 * tree, using JavaScript. But it shouldn't be needed because you have to trust that the Wicket
+	 * Ajax JavaScript just works.
 	 * 
 	 * @param component
 	 *            the <code>Component</code> to test
@@ -1629,7 +1638,7 @@ public class BaseWicketTester
 	 * <code>Form</code> before executing the command.
 	 * <p>
 	 * PLEASE NOTE! This method doesn't actually insert the <code>Component</code> in the client DOM
-	 * tree, using Javascript.
+	 * tree, using JavaScript.
 	 * 
 	 * @param component
 	 *            the <code>Component</code> that has the <code>AjaxEventBehavior</code> we want to