You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2011/01/27 18:20:12 UTC
svn commit: r1064210 - in /wicket/branches/wicket-1.4.x/wicket/src:
main/java/org/apache/wicket/markup/html/link/ test/java/org/apache/wicket/
Author: pedro
Date: Thu Jan 27 17:20:11 2011
New Revision: 1064210
URL: http://svn.apache.org/viewvc?rev=1064210&view=rev
Log:
avoiding early page maps creation when link has an popup setting
Issue: WICKET-3109
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/BookmarkablePageLink.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/PopupSettings.java
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/PageMapTest.java
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/BookmarkablePageLink.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/BookmarkablePageLink.java?rev=1064210&r1=1064209&r2=1064210&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/BookmarkablePageLink.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/BookmarkablePageLink.java Thu Jan 27 17:20:11 2011
@@ -25,6 +25,7 @@ import org.apache.wicket.Page;
import org.apache.wicket.PageMap;
import org.apache.wicket.PageParameters;
import org.apache.wicket.model.Model;
+import org.apache.wicket.request.target.component.BookmarkablePageRequestTarget;
import org.apache.wicket.util.collections.MiniMap;
import org.apache.wicket.util.lang.Classes;
@@ -269,7 +270,12 @@ public class BookmarkablePageLink<T> ext
if (getPopupSettings() != null)
{
- return urlFor(getPopupSettings().getPageMap(this), getPageClass(), parameters);
+ String pageMapName = getPopupSettings().getPageMapName(this);
+ if (pageMapName == null)
+ {
+ pageMapName = PageMap.DEFAULT_NAME;
+ }
+ return urlFor(new BookmarkablePageRequestTarget(pageMapName, getPageClass(), parameters));
}
else
{
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java?rev=1064210&r1=1064209&r2=1064210&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/ExternalLink.java Thu Jan 27 17:20:11 2011
@@ -16,7 +16,6 @@
*/
package org.apache.wicket.markup.html.link;
-import org.apache.wicket.IPageMap;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
@@ -201,10 +200,10 @@ public class ExternalLink extends Abstra
if (popupSettings != null)
{
- IPageMap popupPageMap = popupSettings.getPageMap(this);
- if (popupPageMap != null && popupPageMap.getName() != null)
+ String popupPageMapName = popupSettings.getPageMapName(this);
+ if (popupPageMapName != null)
{
- tag.put("target", popupPageMap.getName());
+ tag.put("target", popupPageMapName);
}
}
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java?rev=1064210&r1=1064209&r2=1064210&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/Link.java Thu Jan 27 17:20:11 2011
@@ -17,7 +17,6 @@
package org.apache.wicket.markup.html.link;
import org.apache.wicket.Component;
-import org.apache.wicket.IPageMap;
import org.apache.wicket.Page;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.WicketRuntimeException;
@@ -217,8 +216,10 @@ public abstract class Link<T> extends Ab
// are created in the onClick are made in the wanted pagemap
if (popupSettings != null)
{
- RequestCycle.get().getRequest().getRequestParameters().setPageMapName(
- popupSettings.getPageMap(this).getName());
+ RequestCycle.get()
+ .getRequest()
+ .getRequestParameters()
+ .setPageMapName(popupSettings.getPageMapName(this));
}
// Invoke subclass handler
onClick();
@@ -469,10 +470,10 @@ public abstract class Link<T> extends Ab
if (popupSettings != null)
{
- IPageMap popupPageMap = popupSettings.getPageMap(this);
- if (popupPageMap != null && popupPageMap.getName() != null)
+ String popupPageMapName = popupSettings.getPageMapName(this);
+ if (popupPageMapName != null)
{
- tag.put("target", popupPageMap.getName());
+ tag.put("target", popupPageMapName);
}
}
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/PopupSettings.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/PopupSettings.java?rev=1064210&r1=1064209&r2=1064210&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/PopupSettings.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/link/PopupSettings.java Thu Jan 27 17:20:11 2011
@@ -340,7 +340,11 @@ public class PopupSettings implements IC
* @param callee
* Calling component
* @return The pagemap where the popup page must be created in
+ * @deprecated Use getPageMapName instead. There is no need to eager create the pagemap object
+ * to create URLs. The pagemap will be created during the request cycle when user
+ * click on the link for this popup.
*/
+ @Deprecated
public IPageMap getPageMap(Component callee)
{
if (pageMapName != null)
@@ -365,4 +369,23 @@ public class PopupSettings implements IC
return page.getPageMap();
}
}
+
+ /**
+ * Gets the page map name. Used to create URLs referencing the popup on the defined page map.
+ *
+ * @param callee
+ * @return the page map name
+ */
+ public String getPageMapName(Component callee)
+ {
+ if (pageMapName != null)
+ {
+ return pageMapName;
+ }
+ else
+ {
+ // TODO copy/past the relevant code from getPageMap if we remove it at some point
+ return getPageMap(callee).getName();
+ }
+ }
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/PageMapTest.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/PageMapTest.java?rev=1064210&r1=1064209&r2=1064210&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/PageMapTest.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/PageMapTest.java Thu Jan 27 17:20:11 2011
@@ -18,10 +18,12 @@ package org.apache.wicket;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.List;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.link.PopupSettings;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.SecondLevelCacheSessionStore;
import org.apache.wicket.protocol.http.WebRequestCycle;
@@ -31,6 +33,7 @@ import org.apache.wicket.session.ISessio
import org.apache.wicket.util.lang.Objects;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.tester.DummyHomePage;
import org.apache.wicket.util.tester.WicketTester;
/**
@@ -162,7 +165,7 @@ public class PageMapTest extends WicketT
assertEquals("1", tester.getWicketSession().getPageMaps().get(2).getName());
}
- private void goToPage(Class pageClass, String pageMap)
+ private void goToPage(Class<?> pageClass, String pageMap)
{
WebRequestCycle cycle = tester.setupRequestAndResponse();
tester.getServletRequest().setParameter(
@@ -172,6 +175,30 @@ public class PageMapTest extends WicketT
tester.assertRenderedPage(TestPage.class);
}
+ /**
+ * @see <a href="https://issues.apache.org/jira/browse/WICKET-3109">WICKET-3109</a>
+ */
+ public void testLazyPageMapCreationForPopup()
+ {
+ TestPage testPage = new TestPage();
+ PopupSettings popupSettings = new PopupSettings();
+ popupSettings.setWindowName(WORKING_PAGE_MAP);
+ testPage.dummyPageLink.setPopupSettings(popupSettings);
+
+ tester.startPage(testPage);
+
+ for (IPageMap pageMap : tester.getWicketSession().getPageMaps())
+ {
+ assertNotSame(WORKING_PAGE_MAP, pageMap.getName());
+ }
+
+ tester.clickLink(testPage.dummyPageLink.getId());
+
+ tester.assertRenderedPage(DummyHomePage.class);
+ List<IPageMap> pageMaps = tester.getWicketSession().getPageMaps();
+ assertTrue(pageMaps.contains(PageMap.forName(WORKING_PAGE_MAP)));
+ }
+
private void listPageMapsAtSession()
{
System.out.println("--> listing pagemaps on session...");
@@ -181,13 +208,18 @@ public class PageMapTest extends WicketT
}
}
+ /** */
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{
+ private Link<Void> dummyPageLink;
+
+ /** */
public TestPage()
{
- super();
- add(new Link("removeTestPageMap")
+ add(new Link<Void>("removeTestPageMap")
{
+ private static final long serialVersionUID = 1L;
+
@Override
public void onClick()
{
@@ -201,13 +233,24 @@ public class PageMapTest extends WicketT
}
}
});
+ add(dummyPageLink = new Link<Void>("dummyPage")
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick()
+ {
+ setResponsePage(DummyHomePage.class);
+ }
+ });
+
}
public IResourceStream getMarkupResourceStream(MarkupContainer container,
Class<?> containerClass)
{
return new StringResourceStream(
- "<html><body><a wicket:id=\"removeTestPageMap\"></a></body></html>");
+ "<html><body><a wicket:id=\"removeTestPageMap\"></a><a wicket:id=\"dummyPage\"></a></body></html>");
}
}
}
\ No newline at end of file