Author: mgrigorov
Date: Tue Jul 20 19:01:35 2010
New Revision: 965958
URL: http://svn.apache.org/viewvc?rev=965958&view=rev
Log:
WICKET-2953 Implement page versioning in Wicket 1.5
Add page versioning support.
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html
(with props)
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java
(with props)
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockPageManager.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing3/TestPage_ExpectedResult-2.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-1.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-2.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/PagedTablePageExpectedResult.html
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Page.java Tue Jul 20
19:01:35 2010
@@ -38,6 +38,8 @@ import org.apache.wicket.markup.html.Web
import org.apache.wicket.markup.resolver.IComponentResolver;
import org.apache.wicket.model.IModel;
import org.apache.wicket.page.IManageablePage;
+import org.apache.wicket.pageStore.IPageManager;
+import org.apache.wicket.pageStore.IPageStore;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.http.WebResponse;
@@ -177,25 +179,18 @@ public abstract class Page extends Marku
}
/**
- * When passed to {...@link Page#getVersion(int)} the latest page
version is returned.
- */
- public static final int LATEST_VERSION = -1;
-
- /**
* This is a thread local that is used for serializing page references
in this page.It stores a
* {...@link IPageSerializer} which can be set by the outside world to
do the serialization of this
* page.
*/
public static final ThreadLocal<IPageSerializer> serializer = new
ThreadLocal<IPageSerializer>();
- /** True if a new version was created for this request. */
- private static final short FLAG_NEW_VERSION = FLAG_RESERVED3;
+ /** True if the page hierarchy has been modified in the current
request. */
+ private static final int FLAG_IS_DIRTY = FLAG_RESERVED3;
/** True if the page should try to be stateless */
private static final int FLAG_STATELESS_HINT = FLAG_RESERVED5;
- /** True if component changes are being tracked. */
- private static final short FLAG_TRACK_CHANGES = FLAG_RESERVED4;
/** Log. */
private static final Logger log = LoggerFactory.getLogger(Page.class);
@@ -225,7 +220,13 @@ public abstract class Page extends Marku
/** Page parameters used to construct this page */
private final PageParameters pageParameters;
- /** page render count TODO WICKET-NG more javadoc */
+ /**
+ * The purpose of render count is to detect stale listener interface
links. For example: there
+ * is a page A rendered in tab 1. Then page A is opened also in tab 2.
During render page state
+ * changes (i.e. some repeater gets rebuilt). This makes all links on
tab 2 stale - because they
+ * no longer match the actual page state. This is done by incrementing
render count. When link
+ * is clicked Wicket checks if it's render count matches the render
count value of page
+ */
private int renderCount = 0;
/** TODO WICKET-NG JAVADOC */
@@ -393,11 +394,20 @@ public abstract class Page extends Marku
/**
- * Mark this page as dirty in the session
+ * Mark this page as modified in the session. If versioning is
supported then a new version of
+ * the page will be stored in {...@link IPageStore page store}
*/
public final void dirty()
{
- // TODO: Increment page id here if manager supports versioning
+ checkHierarchyChange(this);
+
+ final IPageManager pageManager = getSession().getPageManager();
+ if (isVersioned() && pageManager.supportsVersioning() &&
!getFlag(FLAG_IS_DIRTY))
+ {
+ setFlag(FLAG_IS_DIRTY, true);
+ setNextAvailableId();
+ pageManager.touchPage(this);
+ }
}
/**
@@ -701,8 +711,8 @@ public abstract class Page extends Marku
@Override
public String toString()
{
- return "[Page class = " + getClass().getName() + ", id = " +
getId() + ", version = " + 0 +
- "]";
+ return "[Page class = " + getClass().getName() + ", id = " +
getId() + ", render count = " +
+ getRenderCount() + "]";
}
/**
@@ -828,30 +838,6 @@ public abstract class Page extends Marku
}
/**
- * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR
OVERRIDE.
- *
- * TODO WICKET-NG review if we need this
- */
- private final void endVersion()
- {
- // Any changes to the page after this point will be tracked by
the
- // page's version manager. Since trackChanges is never set to
false,
- // this effectively means that change tracking begins after the
- // first request to a page completes.
- setFlag(FLAG_TRACK_CHANGES, true);
-
- // If a new version was created
- if (getFlag(FLAG_NEW_VERSION))
- {
- // Reset boolean for next request
- setFlag(FLAG_NEW_VERSION, false);
-
- // Evict any page version(s) as need be
- //
getApplication().getSessionSettings().getPageMapEvictionStrategy().evict(getPageMap());
- }
- }
-
- /**
* Initializes Page by adding it to the Session and initializing it.
*
* @param pageMap
@@ -864,8 +850,6 @@ public abstract class Page extends Marku
setStatelessHint(true);
}
- setNextAvailableId();
-
// Set versioning of page based on default
setVersioned(Application.get().getPageSettings().getVersionPagesByDefault());
@@ -894,6 +878,10 @@ public abstract class Page extends Marku
*/
protected void componentChanged(Component component, MarkupContainer
parent)
{
+ if (!component.isAuto())
+ {
+ dirty();
+ }
}
/**
@@ -1081,7 +1069,7 @@ public abstract class Page extends Marku
// trigger creation of the actual session in case it
was deferred
Session.get().getSessionStore().getSessionId(RequestCycle.get().getRequest(),
true);
- // Add/touch the response page in the session (its
pagemap).
+ // Add/touch the response page in the session.
getSession().getPageManager().touchPage(this);
}
@@ -1109,9 +1097,7 @@ public abstract class Page extends Marku
log.debug("ending request for page " + this + ",
request " + getRequest());
}
- endVersion();
-
- dirty();
+ setFlag(FLAG_IS_DIRTY, false);
super.onDetach();
}
@@ -1144,7 +1130,10 @@ public abstract class Page extends Marku
initialize();
}
- dirty();
+ if (!component.isAuto())
+ {
+ dirty();
+ }
}
/**
@@ -1166,7 +1155,10 @@ public abstract class Page extends Marku
*/
final void componentRemoved(final Component component)
{
- dirty();
+ if (!component.isAuto())
+ {
+ dirty();
+ }
}
/**
@@ -1176,7 +1168,10 @@ public abstract class Page extends Marku
*/
final void componentStateChanging(final Component component)
{
- dirty();
+ if (!component.isAuto())
+ {
+ dirty();
+ }
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockPageManager.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockPageManager.java?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockPageManager.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockPageManager.java
Tue Jul 20 19:01:35 2010
@@ -47,6 +47,7 @@ public class MockPageManager implements
public void destroy()
{
+ pages.clear();
}
public IManageablePage getPage(int id)
@@ -70,7 +71,7 @@ public class MockPageManager implements
public boolean supportsVersioning()
{
- return false;
+ return true;
}
public void touchPage(IManageablePage page)
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=965958&r1=965957&r2=965958&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
Tue Jul 20 19:01:35 2010
@@ -276,12 +276,17 @@ public class BaseWicketTester
application.setRequestCycleProvider(new
TestRequestCycleProvider(
application.getRequestCycleProvider()));
application.setSessionStoreProvider(new
TestSessionStoreProvider());
- application.setPageManagerProvider(new
TestPageManagerProvider());
+
application.setPageManagerProvider(newTestPageManagerProvider());
// prepare session
setupNextRequestCycle();
}
+ protected IPageManagerProvider newTestPageManagerProvider()
+ {
+ return new TestPageManagerProvider();
+ }
+
/**
* @return last rendered page
*/
@@ -1305,8 +1310,9 @@ public class BaseWicketTester
public Result hasNoErrorMessage()
{
List<Serializable> messages =
getMessages(FeedbackMessage.ERROR);
- return isTrue("expect no error message, but contains\n" +
- WicketTesterHelper.asLined(messages),
messages.isEmpty());
+ return isTrue(
+ "expect no error message, but contains\n" +
WicketTesterHelper.asLined(messages),
+ messages.isEmpty());
}
/**
@@ -1317,8 +1323,9 @@ public class BaseWicketTester
public Result hasNoInfoMessage()
{
List<Serializable> messages = getMessages(FeedbackMessage.INFO);
- return isTrue("expect no info message, but contains\n" +
- WicketTesterHelper.asLined(messages),
messages.isEmpty());
+ return isTrue(
+ "expect no info message, but contains\n" +
WicketTesterHelper.asLined(messages),
+ messages.isEmpty());
}
/**
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
Tue Jul 20 19:01:35 2010
@@ -19,7 +19,7 @@
<span wicket:id="componentList"><wicket:panel>
<h2>Page</h2>
<ul>
- <p><span wicket:id="info">[Page class =
org.apache.wicket.markup.html.debug.WicketComponentTreeTestPage, id = 0,
version = 0]</span>:</p>
+ <p><span wicket:id="info">[Page class =
org.apache.wicket.markup.html.debug.WicketComponentTreeTestPage, id = 0, render
count = 0]</span>:</p>
<table class="tablestyle">
<thead>
<tr>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/form/feedback/FeedbackIndicatorFormPage_result2.html
Tue Jul 20 19:01:35 2010
@@ -1,6 +1,6 @@
<html>
<body>
-<form wicket:id="form" id="form1" method="post"
action="../page?0-2.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+<form wicket:id="form" id="form1" method="post"
action="../page?1-2.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
<input type="text" wicket:id="input" value="" name="input">
<span wicket:id="feedback"><wicket:panel><span
style="color:red;">*</span></wicket:panel></span>
</form>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing3/TestPage_ExpectedResult-2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing3/TestPage_ExpectedResult-2.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing3/TestPage_ExpectedResult-2.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing3/TestPage_ExpectedResult-2.html
Tue Jul 20 19:01:35 2010
@@ -7,6 +7,6 @@
<span wicket:id="panel"><wicket:panel>
Panel 2
</wicket:panel></span>
- <a wicket:id="link" href="../page?0-2.ILinkListener-link">Replace the
panel</a>
+ <a wicket:id="link" href="../page?1-2.ILinkListener-link">Replace the
panel</a>
</body>
</html>
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,11 @@
+<html xmlns:wicket>
+<body>
+ <form wicket:id="form" id="form1" method="post"
action="page?2-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
+ <wicket:enclosure child="label">
+ <input wicket:id="input" type="checkbox" name="input"/>
+ <span wicket:id="label"></span>
+ </wicket:enclosure>
+ </form>
+</body>
+</html>
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1-1.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,8 @@
+<html xmlns:wicket>
+<body>
+ <form wicket:id="form" id="form1" method="post"
action="page?1-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
+ <wicket:enclosure child="label"></wicket:enclosure>
+ </form>
+</body>
+</html>
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-1.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,8 @@
+<html xmlns:wicket>
+<body>
+ <form wicket:id="form" id="form1" method="post"
action="page?2-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
+ <wicket:enclosure child="label"></wicket:enclosure>
+ </form>
+</body>
+</html>
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2-1.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-2.html
Tue Jul 20 19:01:35 2010
@@ -1,6 +1,6 @@
<html xmlns:wicket>
<body>
- <form wicket:id="form" id="form1" method="post"
action="page?0-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <form wicket:id="form" id="form1" method="post"
action="page?4-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
<!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
<wicket:enclosure child="label"></wicket:enclosure>
</form>
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,11 @@
+<html xmlns:wicket>
+<body>
+ <form wicket:id="form" id="form1" method="post"
action="page?5-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
+ <wicket:enclosure child="label">
+
+ <span wicket:id="label"></span>
+ </wicket:enclosure>
+ </form>
+</body>
+</html>
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-1.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,11 @@
+<html xmlns:wicket>
+<body>
+ <form wicket:id="form" id="form1" method="post"
action="page?6-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
+ <wicket:enclosure child="label">
+ <input wicket:id="input" type="checkbox" name="input"/>
+ <span wicket:id="label"></span>
+ </wicket:enclosure>
+ </form>
+</body>
+</html>
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3-2.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-3.html
Tue Jul 20 19:01:35 2010
@@ -1,6 +1,6 @@
<html xmlns:wicket>
<body>
- <form wicket:id="form" id="form1" method="post"
action="page?0-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <form wicket:id="form" id="form1" method="post"
action="page?3-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
<!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
<wicket:enclosure child="label">
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_9-4.html
Tue Jul 20 19:01:35 2010
@@ -1,6 +1,6 @@
<html xmlns:wicket>
<body>
- <form wicket:id="form" id="form1" method="post"
action="page?0-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+ <form wicket:id="form" id="form1" method="post"
action="page?1-1.IFormSubmitListener-form"><div style="display:none"><input
type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
<!-- does Wicket behave different if the enclosure child is a
FormComponent?? Needs testing -->
<wicket:enclosure child="label">
<input wicket:id="input" type="checkbox" checked="checked" name="input"/>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/internal/EnclosureTest.java
Tue Jul 20 19:01:35 2010
@@ -171,7 +171,7 @@ public class EnclosureTest extends Wicke
page.reset();
page.get("form:label").setVisible(false);
- executePage(page, "EnclosurePageExpectedResult_9-2.html");
+ executePage(page, "EnclosurePageExpectedResult_9-1.html");
// It should be FALSE, but because of auto-component etc. it
doesn't
// assertFalse(page.inputOnBeforeRender);
assertTrue(page.inputOnBeforeRender);
@@ -180,7 +180,7 @@ public class EnclosureTest extends Wicke
page.reset();
page.get("form:label").setVisible(true);
- executePage(page, "EnclosurePageExpectedResult_9.html");
+ executePage(page, "EnclosurePageExpectedResult_9-1-1.html");
assertTrue(page.inputOnBeforeRender);
assertFalse(page.inputValidate);
assertTrue(page.labelOnBeforeRender);
@@ -201,14 +201,14 @@ public class EnclosureTest extends Wicke
page.reset();
page.get("form:label").setVisible(true);
- executePage(page, "EnclosurePageExpectedResult_9-3.html");
+ executePage(page, "EnclosurePageExpectedResult_9-3-1.html");
assertFalse(page.inputOnBeforeRender);
assertFalse(page.inputValidate);
assertTrue(page.labelOnBeforeRender);
page.reset();
page.get("form:input").setVisible(true);
- executePage(page, "EnclosurePageExpectedResult_9.html");
+ executePage(page, "EnclosurePageExpectedResult_9-3-2.html");
assertTrue(page.inputOnBeforeRender);
assertFalse(page.inputValidate);
assertTrue(page.labelOnBeforeRender);
@@ -226,8 +226,9 @@ public class EnclosureTest extends Wicke
page.reset();
FormTester formTester = tester.newFormTester("form");
- tester.getRequest().getPostParameters().setParameterValue(
- ((CheckBox)page.get("form:input")).getInputName(),
"true");
+ tester.getRequest()
+ .getPostParameters()
+
.setParameterValue(((CheckBox)page.get("form:input")).getInputName(), "true");
page.get("form:label").setVisible(true);
formTester.submit();
tester.assertRenderedPage(clazz);
@@ -237,12 +238,13 @@ public class EnclosureTest extends Wicke
assertTrue(page.labelOnBeforeRender);
page.reset();
- tester.getRequest().getPostParameters().setParameterValue(
- ((CheckBox)page.get("form:input")).getInputName(),
"true");
+ tester.getRequest()
+ .getPostParameters()
+
.setParameterValue(((CheckBox)page.get("form:input")).getInputName(), "true");
page.get("form:label").setVisible(false);
tester.submitForm("form");
tester.assertRenderedPage(clazz);
- assertResultPage("EnclosurePageExpectedResult_9-2.html");
+ assertResultPage("EnclosurePageExpectedResult_9-2-1.html");
// It should be FALSE, but because of auto-component etc. it
doesn't
// assertFalse(page.inputOnBeforeRender);
assertTrue(page.inputOnBeforeRender);
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-1.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-1.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-1.html
Tue Jul 20 19:01:35 2010
@@ -3,6 +3,6 @@
<title>Paged Table Page</title>
</head>
<body><ul><li wicket:id="table"><span wicket:id="txt">five</span></li><li
wicket:id="table"><span wicket:id="txt">six</span></li></ul>
-<a wicket:id="prev" href="../page?0-2.ILinkListener-prev">Prev</a><a
wicket:id="nextNext" href="../page?0-2.ILinkListener-nextNext">NextNext</a>
+<a wicket:id="prev" href="../page?1-2.ILinkListener-prev">Prev</a><a
wicket:id="nextNext" href="../page?1-2.ILinkListener-nextNext">NextNext</a>
</body>
</html>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-2.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-2.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/IncrementalTableNavigationPage_ExpectedResult_1-2.html
Tue Jul 20 19:01:35 2010
@@ -3,6 +3,6 @@
<title>Paged Table Page</title>
</head>
<body><ul><li wicket:id="table"><span wicket:id="txt">three</span></li><li
wicket:id="table"><span wicket:id="txt">four</span></li></ul>
-<a wicket:id="prev" href="../page?0-3.ILinkListener-prev">Prev</a><a
wicket:id="nextNext" href="../page?0-3.ILinkListener-nextNext">NextNext</a>
+<a wicket:id="prev" href="../page?2-3.ILinkListener-prev">Prev</a><a
wicket:id="nextNext" href="../page?2-3.ILinkListener-nextNext">NextNext</a>
</body>
</html>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/PagedTablePageExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/PagedTablePageExpectedResult.html?rev=965958&r1=965957&r2=965958&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/PagedTablePageExpectedResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/list/PagedTablePageExpectedResult.html
Tue Jul 20 19:01:35 2010
@@ -17,6 +17,6 @@
<title>Paged Table Page</title>
</head>
<body><ul><li wicket:id="table"><span wicket:id="txt">three</span></li></ul>
-<ul><li wicket:id="navigation"><a wicket:id="pageLink"
href="../page?0-2.ILinkListener-navigation-0-pageLink" title="Go to page
1"><span wicket:id="pageNumber">1</span></a></li><li
wicket:id="navigation"><span wicket:id="pageLink" title="Go to page
2"><em><span wicket:id="pageNumber">2</span></em></span></li></ul>
+<ul><li wicket:id="navigation"><a wicket:id="pageLink"
href="../page?1-2.ILinkListener-navigation-0-pageLink" title="Go to page
1"><span wicket:id="pageNumber">1</span></a></li><li
wicket:id="navigation"><span wicket:id="pageLink" title="Go to page
2"><em><span wicket:id="pageNumber">2</span></em></span></li></ul>
</body>
</html>
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,73 @@
+package org.apache.wicket.versioning;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.wicket.pageStore.IDataStore;
+
+/**
+ * An implementation of {...@link IDataStore} that stores the data in memory.
Used only for testing
+ * purposes.
+ *
+ * @author martin-g
+ */
+class InMemoryPageStore implements IDataStore
+{
+
+ private final Map<String, Map<Integer, byte[]>> store;
+
+ InMemoryPageStore()
+ {
+ store = new HashMap<String, Map<Integer, byte[]>>();
+ }
+
+ public void destroy()
+ {
+ store.clear();
+ }
+
+ public byte[] getData(String sessionId, int pageId)
+ {
+ byte[] pageAsBytes = null;
+
+ final Map<Integer, byte[]> sessionPages = store.get(sessionId);
+ if (sessionPages != null)
+ {
+ pageAsBytes = sessionPages.get(Integer.valueOf(pageId));
+ }
+
+ return pageAsBytes;
+ }
+
+ public void removeData(String sessionId, int pageId)
+ {
+ final Map<Integer, byte[]> sessionPages = store.get(sessionId);
+ if (sessionPages != null)
+ {
+ sessionPages.remove(Integer.valueOf(pageId));
+ }
+ }
+
+ public void removeData(String sessionId)
+ {
+ store.remove(sessionId);
+ }
+
+ public void storeData(String sessionId, int pageId, byte[] pageAsBytes)
+ {
+ Map<Integer, byte[]> sessionPages = store.get(sessionId);
+ if (sessionPages == null)
+ {
+ sessionPages = new HashMap<Integer, byte[]>();
+ store.put(sessionId, sessionPages);
+ }
+
+ sessionPages.put(Integer.valueOf(pageId), pageAsBytes);
+ }
+
+ public boolean isReplicated()
+ {
+ return false;
+ }
+
+}
\ No newline at end of file
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/InMemoryPageStore.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,145 @@
+/*
+ * 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.versioning;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.wicket.IPageManagerProvider;
+import org.apache.wicket.Page;
+import org.apache.wicket.pageStore.AsynchronousDataStore;
+import org.apache.wicket.pageStore.DefaultPageStore;
+import org.apache.wicket.pageStore.IDataStore;
+import org.apache.wicket.pageStore.IPageManager;
+import org.apache.wicket.pageStore.IPageManagerContext;
+import org.apache.wicket.pageStore.PersistentPageManager;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * A test for page versioning
+ *
+ * @author martin-g
+ */
+public class PageVersioningTest
+{
+ WicketTester wicketTester;
+
+ @Before
+ public void setup()
+ {
+ final WebApplication application = new WebApplication()
+ {
+
+ @Override
+ public Class<? extends Page> getHomePage()
+ {
+ return VersioningTestPage.class;
+ }
+ };
+
+ wicketTester = new WicketTester(application)
+ {
+
+ /**
+ * @see
org.apache.wicket.util.tester.BaseWicketTester#newTestPageManagerProvider()
+ */
+ @Override
+ protected IPageManagerProvider
newTestPageManagerProvider()
+ {
+ return new IPageManagerProvider()
+ {
+
+ public IPageManager get(final
IPageManagerContext context)
+ {
+
+ final IDataStore dataStore =
new InMemoryPageStore();
+ final AsynchronousDataStore
asyncDS = new AsynchronousDataStore(dataStore);
+ final DefaultPageStore
pageStore = new DefaultPageStore(
+ application.getName(),
asyncDS, 40);
+ return new
PersistentPageManager(application.getName(), pageStore, context);
+ }
+ };
+ }
+
+ };
+ }
+
+ @Test
+ public void versionPage()
+ {
+ Page versioningPage =
wicketTester.startPage(VersioningTestPage.class);
+
+ assertEquals(0, versioningPage.getPageId());
+
+ wicketTester.clickLink("noopLink");
+ assertEquals(0, versioningPage.getPageId());
+
+ wicketTester.clickLink("ajaxUpdatingLink", true);
+ assertEquals(0, versioningPage.getPageId());
+
+ wicketTester.clickLink("ajaxUpdatingChangeModelLink", true);
+ assertEquals(1, versioningPage.getPageId());
+
+ wicketTester.clickLink("addTemporaryBehaviorLink");
+ assertEquals(1, versioningPage.getPageId());
+
+ wicketTester.clickLink("addBehaviorLink");
+ assertEquals(2, versioningPage.getPageId());
+
+ wicketTester.clickLink("changeEnabledStateLink");
+ assertEquals(3, versioningPage.getPageId());
+
+ wicketTester.clickLink("changeVisibilityStateLink");
+ assertEquals(4, versioningPage.getPageId());
+
+ try
+ {
+ // disable page versioning and execute something that
otherwise would create a new
+ // version
+ versioningPage.setVersioned(false);
+ wicketTester.clickLink("changeVisibilityStateLink");
+ assertEquals(4, versioningPage.getPageId());
+ }
+ finally
+ {
+ versioningPage.setVersioned(true);
+ }
+
+ checkPageVersionsAreStored(versioningPage);
+ }
+
+ /**
+ * Asserts that there is a version of the page for each operation that
modified the page
+ *
+ * @param pageManager
+ * @param versioningPage
+ */
+ private void checkPageVersionsAreStored(Page versioningPage)
+ {
+ IPageManager pageManager =
wicketTester.getApplication().getPageManager();
+
+ int lastPageId = versioningPage.getPageId();
+ while (lastPageId >= 0)
+ {
+ assertNotNull(pageManager.getPage(lastPageId));
+ lastPageId--;
+ }
+ }
+}
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/PageVersioningTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,28 @@
+<html>
+
+ <head>
+ <title>Versioning test page</title>
+ </head>
+
+ <body>
+
+ Non-Ajax link: <a wicket:id="noopLink">non ajax link</a><br/>
+
+ <!-- a component for modifications -->
+ <div wicket:id="label"></div>
+
+ Ajax Updating link: <a wicket:id="ajaxUpdatingLink">ajax
updating link</a><br/>
+
+ Ajax Updating + change model link: <a
wicket:id="ajaxUpdatingChangeModelLink">ajax updating + change model
link</a><br/>
+
+ Non-Ajax add temporary behavior link: <a
wicket:id="addTemporaryBehaviorLink">non ajax add temporary behavior
link</a><br/>
+
+ Non-Ajax add non-temporary behavior link: <a
wicket:id="addBehaviorLink">non ajax add non-temporary behavior link</a><br/>
+
+ Non-Ajax change component enabled state link: <a
wicket:id="changeEnabledStateLink">non ajax change component enabled state
link</a><br/>
+
+ Non-Ajax change component visbility state link: <a
wicket:id="changeVisibilityStateLink">non ajax change component visibility
state link</a><br/>
+
+ </body>
+
+</html>
\ No newline at end of file
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java?rev=965958&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java
Tue Jul 20 19:01:35 2010
@@ -0,0 +1,222 @@
+/*
+ * 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.versioning;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.AbstractBehavior;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author martin-g
+ */
+...@suppresswarnings("serial")
+public class VersioningTestPage extends WebPage
+{
+
+ private static final Logger logger =
LoggerFactory.getLogger(VersioningTestPage.class);
+
+ /**
+ *
+ * Construct.
+ *
+ * @param pageParameters
+ */
+ public VersioningTestPage(PageParameters pageParameters)
+ {
+ super(pageParameters);
+
+ addNoopLink();
+
+ // a target component which will be manipulated
+ final Label label = new Label("label", "Label initial value");
+ label.setOutputMarkupId(true);
+ add(label);
+
+ ajaxReRenderComponent(label);
+
+ changeComponentModel(label);
+
+ addTemporaryBehavior(label);
+
+ addNonTemporaryBehavior(label);
+
+ changeComponentEnabledState(label);
+
+ changeComponentVisibilityState(label);
+ }
+
+ /**
+ * a link that does nothing in its onClick. should not make new version
+ */
+ private void addNoopLink()
+ {
+ final Link<Void> noopLink = new Link<Void>("noopLink")
+ {
+
+ @Override
+ public void onClick()
+ {
+ logger.debug("Current page version when
clicking the non-ajax link: {}",
+ getPage().getPageId());
+ }
+ };
+ add(noopLink);
+ }
+
+ /**
+ * ajax link that just re-renders no modified label. should not create
new version
+ *
+ * @param targetComponent
+ */
+ private void ajaxReRenderComponent(final Component targetComponent)
+ {
+ final AjaxLink<Void> ajaxUpdatingLink = new
AjaxLink<Void>("ajaxUpdatingLink")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ target.addComponent(targetComponent);
+ }
+ };
+ add(ajaxUpdatingLink);
+ }
+
+ /**
+ * ajax link that changes the model of a component. should create a new
version
+ *
+ * @param targetComponent
+ */
+ private void changeComponentModel(final Component targetComponent)
+ {
+ final AjaxLink<Void> ajaxUpdatingChangeModelLink = new
AjaxLink<Void>(
+ "ajaxUpdatingChangeModelLink")
+ {
+ @Override
+ public void onClick(AjaxRequestTarget target)
+ {
+ targetComponent.setDefaultModelObject("label
new value");
+ target.addComponent(targetComponent);
+ }
+ };
+ add(ajaxUpdatingChangeModelLink);
+ }
+
+ /**
+ * a link that adds a temporary behavior to a component. should not
create a new version
+ *
+ * @param targetComponent
+ */
+ private void addTemporaryBehavior(final Component targetComponent)
+ {
+ final Link<Void> addTemporaryBehaviorLink = new
Link<Void>("addTemporaryBehaviorLink")
+ {
+ @Override
+ public void onClick()
+ {
+ targetComponent.add(new AbstractBehavior()
+ {
+
+ /**
+ * @see
org.apache.wicket.behavior.AbstractBehavior#isTemporary()
+ */
+ @Override
+ public boolean isTemporary()
+ {
+ return true;
+ }
+
+ });
+ }
+ };
+ add(addTemporaryBehaviorLink);
+ }
+
+ /**
+ * adds a link that adds a non-temporary behavior to a component.
should create a new version
+ *
+ * @param targetComponent
+ */
+ private void addNonTemporaryBehavior(final Component targetComponent)
+ {
+ final Link<Void> addBehaviorLink = new
Link<Void>("addBehaviorLink")
+ {
+ @Override
+ public void onClick()
+ {
+ targetComponent.add(new AbstractBehavior()
+ {
+
+ /**
+ * @see
org.apache.wicket.behavior.AbstractBehavior#isTemporary()
+ */
+ @Override
+ public boolean isTemporary()
+ {
+ return false;
+ }
+
+ });
+ }
+ };
+ add(addBehaviorLink);
+ }
+
+
+ /**
+ * adds a link that changes the 'enabled' state of a component. should
create a new version
+ *
+ * @param targetComponent
+ */
+ private void changeComponentVisibilityState(final Component
targetComponent)
+ {
+ final Link<Void> link = new
Link<Void>("changeVisibilityStateLink")
+ {
+ @Override
+ public void onClick()
+ {
+
targetComponent.setVisible(!targetComponent.isVisible());
+ }
+ };
+ add(link);
+ }
+
+ /**
+ * adds a link that changes the 'enabled' state of a component. should
create a new version
+ *
+ * @param targetComponent
+ */
+ private void changeComponentEnabledState(final Component
targetComponent)
+ {
+ final Link<Void> link = new Link<Void>("changeEnabledStateLink")
+ {
+ @Override
+ public void onClick()
+ {
+
targetComponent.setEnabled(!targetComponent.isEnabled());
+ }
+ };
+ add(link);
+ }
+}
Propchange:
wicket/trunk/wicket/src/test/java/org/apache/wicket/versioning/VersioningTestPage.java
------------------------------------------------------------------------------
svn:eol-style = native