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);
 }


Reply via email to