Author: knopp
Date: Tue Mar 31 00:25:15 2009
New Revision: 760272
URL: http://svn.apache.org/viewvc?rev=760272&view=rev
Log: (empty)
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java
(with props)
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java
(contents, props changed)
- copied, changed from r760262,
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/AbstractSerializationAwarePageStore.java
Removed:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/AbstractSerializationAwarePageStore.java
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/SerializationAwarePageStore.java
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PageStore.java
Added:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java?rev=760272&view=auto
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java
(added)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java
Tue Mar 31 00:25:15 2009
@@ -0,0 +1,16 @@
+package org.apache.wicket.page.persistent;
+
+public interface DataStore
+{
+ public byte[] getData(String sessionId, int id);
+
+ public void removeData(String sessionId, int id);
+
+ public void removeData(String sessionId);
+
+ public void storeData(String sessionId, int id, byte[] data);
+
+ public void destroy();
+
+ public boolean isReplicated();
+}
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DataStore.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java
(from r760262,
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/AbstractSerializationAwarePageStore.java)
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java?p2=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java&p1=wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/AbstractSerializationAwarePageStore.java&r1=760262&r2=760272&rev=760272&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/AbstractSerializationAwarePageStore.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java
Tue Mar 31 00:25:15 2009
@@ -10,31 +10,53 @@
import org.apache.wicket.Page;
import org.apache.wicket.util.lang.Objects;
-public abstract class AbstractSerializationAwarePageStore implements
SerializationAwarePageStore
+public class DefaultPageStore implements PageStore
{
private final String applicationName;
private final SerializedPagesCache serializedPagesCache;
+
+ private final DataStore pageDataStore;
- public AbstractSerializationAwarePageStore(String applicationName, int
cacheSize)
+ public DefaultPageStore(String applicationName, DataStore dataStore,
int cacheSize)
{
if (applicationName == null)
{
throw new IllegalArgumentException("Argument
'applicationName' may not be null.");
}
+ if (dataStore == null)
+ {
+ throw new IllegalArgumentException("Argument
'pageDataStore' may not be null.");
+ }
this.applicationName = applicationName;
+ this.pageDataStore = dataStore;
this.serializedPagesCache = new SerializedPagesCache(cacheSize);
}
- public abstract void destroy();
+ public void destroy()
+ {
+ pageDataStore.destroy();
+ }
- protected abstract byte[] getPageData(String sessionId, int pageId);
+ protected byte[] getPageData(String sessionId, int pageId)
+ {
+ return pageDataStore.getData(sessionId, pageId);
+ }
- protected abstract void removePageData(String sessionId, int pageId);
+ protected void removePageData(String sessionId, int pageId)
+ {
+ pageDataStore.removeData(sessionId, pageId);
+ }
- protected abstract void removePageData(String sessionId);
+ protected void removePageData(String sessionId)
+ {
+ pageDataStore.removeData(sessionId);
+ }
- protected abstract void storePageData(String sessionId, int pageId,
byte[] data);
+ protected void storePageData(String sessionId, int pageId, byte[] data)
+ {
+ pageDataStore.storeData(sessionId, pageId, data);
+ }
public String getApplicationName()
{
@@ -131,7 +153,13 @@
public Serializable prepareForSerialization(String sessionId, Object
object)
{
+ if (pageDataStore.isReplicated())
+ {
+ return null;
+ }
+
SerializedPage result = null;
+
if (object instanceof IPage)
{
IPage page = (IPage) object;
Propchange:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/DefaultPageStore.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PageStore.java
URL:
http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PageStore.java?rev=760272&r1=760271&r2=760272&view=diff
==============================================================================
---
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PageStore.java
(original)
+++
wicket/sandbox/knopp/experimental/wicket-ng/src/main/java/org/apache/wicket/page/persistent/PageStore.java
Tue Mar 31 00:25:15 2009
@@ -1,5 +1,7 @@
package org.apache.wicket.page.persistent;
+import java.io.Serializable;
+
import org.apache.wicket.IPage;
public interface PageStore
@@ -43,4 +45,38 @@
* @param sessionId
*/
void unbind(String sessionId);
+
+ /*
+ * Some PageStores might want to preprocess page before serialization.
For example if the
+ * PageStore serializes page, it might cache the serialized data after
the request. So when the
+ * pagemap gets serialized (for session replication) in the request
thread, the pagestore can
+ * provide the already serialized data.
+ */
+
+ /**
+ * Process the page before the it gets serialized. The page can be
either real page instance
+ * of object returned by {...@link
#restoreAfterSerialization(Serializable)}.
+ *
+ * @param sessionId
+ * @param page
+ * @return The Page itself or a SerializedContainer for that page
+ */
+ public Serializable prepareForSerialization(String sessionId, Object
page);
+
+ /**
+ * This method should restore the serialized page to intermediate
object that can be
+ * converted to real page instance using {...@link
#convertToPage(Object)}.
+ *
+ * @param sessionId
+ * @param serializable
+ * @return Page
+ */
+ public Object restoreAfterSerialization(Serializable serializable);
+
+ /**
+ *
+ * @param page
+ * @return page
+ */
+ public IPage convertToPage(Object page);
}