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