Author: mgrigorov
Date: Mon Jun 27 09:34:15 2011
New Revision: 1140078

URL: http://svn.apache.org/viewvc?rev=1140078&view=rev
Log:
WICKET-3835 Use AsynchronousDataStore by default


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IStoreSettings.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
    
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettings.java
    
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java?rev=1140078&r1=1140077&r2=1140078&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java
 Mon Jun 27 09:34:15 2011
@@ -21,6 +21,7 @@ import java.io.File;
 import org.apache.wicket.page.IPageManager;
 import org.apache.wicket.page.IPageManagerContext;
 import org.apache.wicket.page.PageStoreManager;
+import org.apache.wicket.pageStore.AsynchronousDataStore;
 import org.apache.wicket.pageStore.DefaultPageStore;
 import org.apache.wicket.pageStore.DiskDataStore;
 import org.apache.wicket.pageStore.IDataStore;
@@ -50,6 +51,14 @@ public class DefaultPageManagerProvider 
        public IPageManager get(IPageManagerContext pageManagerContext)
        {
                IDataStore dataStore = newDataStore();
+
+               IStoreSettings storeSettings = getStoreSettings();
+               if (storeSettings.isAsynchronous())
+               {
+                       int capacity = 
storeSettings.getAsynchronousQueueCapacity();
+                       dataStore = new AsynchronousDataStore(dataStore, 
capacity);
+               }
+
                IPageStore pageStore = newPageStore(dataStore);
                return new PageStoreManager(application.getName(), pageStore, 
pageManagerContext);
 

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IStoreSettings.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IStoreSettings.java?rev=1140078&r1=1140077&r2=1140078&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IStoreSettings.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/IStoreSettings.java
 Mon Jun 27 09:34:15 2011
@@ -94,4 +94,19 @@ public interface IStoreSettings
         * @see AsynchronousDataStore
         */
        void setAsynchronousQueueCapacity(int capacity);
+
+       /**
+        * Sets a flag whether to wrap the configured {@link IDataStore} with
+        * {@link AsynchronousDataStore}. By doing this the HTTP worker thread 
will not wait for the
+        * actual write of the page's bytes into the wrapped {@link IDataStore}.
+        * 
+        * @param async
+        *            {@code true} to make it asynchronous, {@code false} - 
otherwise
+        */
+       void setAsynchronous(boolean async);
+
+       /**
+        * @return {@code true} if the storing of page's bytes is asynchronous
+        */
+       boolean isAsynchronous();
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java?rev=1140078&r1=1140077&r2=1140078&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/settings/def/StoreSettings.java
 Mon Jun 27 09:34:15 2011
@@ -45,6 +45,8 @@ public class StoreSettings implements IS
 
        private int asynchronousQueueCapacity = 
DEFAULT_ASYNCHRONOUS_QUEUE_CAPACITY;
 
+       private boolean isAsynchronous = true;
+
        /**
         * Construct.
         * 
@@ -120,4 +122,14 @@ public class StoreSettings implements IS
                }
                asynchronousQueueCapacity = queueCapacity;
        }
+
+       public void setAsynchronous(boolean async)
+       {
+               isAsynchronous = async;
+       }
+
+       public boolean isAsynchronous()
+       {
+               return isAsynchronous;
+       }
 }

Modified: 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettings.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettings.java?rev=1140078&r1=1140077&r2=1140078&view=diff
==============================================================================
--- 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettings.java 
(original)
+++ 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettings.java 
Mon Jun 27 09:34:15 2011
@@ -55,4 +55,9 @@ public class StoreSettings implements St
                return 
application.getStoreSettings().getAsynchronousQueueCapacity();
        }
 
+       public boolean isAsynchronous()
+       {
+               return application.getStoreSettings().isAsynchronous();
+       }
+
 }

Modified: 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java?rev=1140078&r1=1140077&r2=1140078&view=diff
==============================================================================
--- 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
 (original)
+++ 
wicket/trunk/wicket-jmx/src/main/java/org/apache/wicket/jmx/StoreSettingsMBean.java
 Mon Jun 27 09:34:15 2011
@@ -17,6 +17,7 @@
 package org.apache.wicket.jmx;
 
 import org.apache.wicket.pageStore.DiskDataStore;
+import org.apache.wicket.pageStore.IDataStore;
 
 /**
  * JMX MBean for Application's StoreSettings
@@ -46,4 +47,10 @@ public interface StoreSettingsMBean
         * @return the capacity of the queue used to store the pages which will 
be stored asynchronously
         */
        int getAsynchronousQueueCapacity();
+
+       /**
+        * @return {@code true} when the HTTP worker thread doesn't wait for 
the storing of the page's
+        *         bytes in {@link IDataStore}
+        */
+       boolean isAsynchronous();
 }


Reply via email to