Author: michael
Date: Mon Jun 18 15:10:40 2012
New Revision: 1351381

URL: http://svn.apache.org/viewvc?rev=1351381&view=rev
Log:
Fix long paste of text in waves (WAVE-352)
Patch By Vicente J. Ruiz Jurado

Modified:
    incubator/wave/trunk/server-config.xml
    incubator/wave/trunk/server.config.example
    incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java
    incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java
    
incubator/wave/trunk/src/org/waveprotocol/box/server/rpc/WebSocketServerChannel.java

Modified: incubator/wave/trunk/server-config.xml
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/server-config.xml?rev=1351381&r1=1351380&r2=1351381&view=diff
==============================================================================
--- incubator/wave/trunk/server-config.xml (original)
+++ incubator/wave/trunk/server-config.xml Mon Jun 18 15:10:40 2012
@@ -15,6 +15,8 @@
   <property name="account_store_directory" value="_accounts" />
   <property name="delta_store_directory" value="_deltas" />
   <property name="sessions_store_directory" value="_sessions" />
+  <property name="websocket_max_message_size" value="2" />
+  <property name="websocket_max_idle_time" value="0" />
   <property name="admin_user" value="@${wave_server_domain}" />
   <property name="welcome_wave_id" value="" />
   <property name="listener_executor_thread_count" value="1" />
@@ -84,6 +86,8 @@
                  value="${account_store_directory}" />
           <token key="DELTA_STORE_DIRECTORY" value="${delta_store_directory}" 
/>
           <token key="SESSIONS_STORE_DIRECTORY" 
value="${sessions_store_directory}" />
+          <token key="WEBSOCKET_MAX_MESSAGE_SIZE" 
value="${websocket_max_message_size}" />
+          <token key="WEBSOCKET_MAX_IDLE_TIME" 
value="${websocket_max_idle_time}" />
           <token key="ADMIN_USER" value="${admin_user}" />
           <token key="WELCOME_WAVE_ID" value="${welcome_wave_id}" />
           <token key="LISTENER_EXECUTOR_THREAD_COUNT" 
value="${listener_executor_thread_count}" />

Modified: incubator/wave/trunk/server.config.example
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/server.config.example?rev=1351381&r1=1351380&r2=1351381&view=diff
==============================================================================
--- incubator/wave/trunk/server.config.example (original)
+++ incubator/wave/trunk/server.config.example Mon Jun 18 15:10:40 2012
@@ -71,6 +71,14 @@ delta_store_directory = @DELTA_STORE_DIR
 # Default value: _sessions
 sessions_store_directory = @SESSIONS_STORE_DIRECTORY@
 
+# The time in ms that the websocket connection can be idle before closing
+# Default value: 0
+websocket_max_idle_time = @WEBSOCKET_MAX_IDLE_TIME@
+
+# Maximum websocket message size to be received in MB
+# Default value: 2
+websocket_max_message_size = @WEBSOCKET_MAX_MESSAGE_SIZE@
+
 # Note: the default value for admin is an invalid user id that cannot be 
registered.
 # To become an admin: Register a user and set its address as the value below.
 # Admin has a privilege to change passwords of other users using an agent 
robot.

Modified: incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java?rev=1351381&r1=1351380&r2=1351381&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java 
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/CoreSettings.java Mon 
Jun 18 15:10:40 2012
@@ -44,6 +44,8 @@ public class CoreSettings {
   public static final String DELTA_STORE_DIRECTORY = "delta_store_directory";
   public static final String SESSIONS_STORE_DIRECTORY = 
"sessions_store_directory";
   public static final String FLASHSOCKET_POLICY_PORT = 
"flashsocket_policy_port";
+  public static final String WEBSOCKET_MAX_MESSAGE_SIZE = 
"websocket_max_message_size";
+  public static final String WEBSOCKET_MAX_IDLE_TIME = 
"websocket_max_idle_time";
   public static final String GADGET_SERVER_HOSTNAME = "gadget_server_hostname";
   public static final String GADGET_SERVER_PORT = "gadget_server_port";
   public static final String GADGET_SERVER_PATH = "gadget_server_path";
@@ -140,6 +142,14 @@ public class CoreSettings {
       defaultValue = "843")
   private static int flashsocketPolicyPort;
 
+  @Setting(name = WEBSOCKET_MAX_IDLE_TIME,
+      description = "The time in ms that the websocket connection can be idle 
before closing", defaultValue = "0")
+  private static int websocketMaxIdleTime;
+
+  @Setting(name = WEBSOCKET_MAX_MESSAGE_SIZE,
+      description = "Maximum websocket message size to be received in MB", 
defaultValue = "2")
+  private static int websocketMaxMessageSize;
+
   @Setting(name = GADGET_SERVER_HOSTNAME, description = "The hostname of the 
gadget server.",
       defaultValue = "gmodules.com")
   private static String gadgetServerHostname;

Modified: incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java?rev=1351381&r1=1351380&r2=1351381&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java 
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/ServerModule.java Mon 
Jun 18 15:10:40 2012
@@ -32,6 +32,7 @@ import org.waveprotocol.box.server.robot
 import org.waveprotocol.box.server.robots.register.RobotRegistrarImpl;
 import org.waveprotocol.box.server.rpc.ProtoSerializer;
 import org.waveprotocol.box.server.rpc.ServerRpcProvider;
+import org.waveprotocol.box.server.rpc.WebSocketServerChannel;
 import org.waveprotocol.box.server.waveserver.LookupExecutor;
 import org.waveprotocol.box.server.waveserver.WaveServerImpl;
 import org.waveprotocol.box.server.waveserver.WaveServerModule;
@@ -107,6 +108,8 @@ public class ServerModule extends Abstra
     bind(ServerRpcProvider.class).in(Singleton.class);
 
     bind(RobotRegistrar.class).to(RobotRegistrarImpl.class);
+
+    requestStaticInjection(WebSocketServerChannel.class);
   }
 
   @Provides

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/rpc/WebSocketServerChannel.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/rpc/WebSocketServerChannel.java?rev=1351381&r1=1351380&r2=1351381&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/box/server/rpc/WebSocketServerChannel.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/box/server/rpc/WebSocketServerChannel.java
 Mon Jun 18 15:10:40 2012
@@ -17,7 +17,11 @@
 
 package org.waveprotocol.box.server.rpc;
 
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
 import org.eclipse.jetty.websocket.WebSocket;
+import org.waveprotocol.box.server.CoreSettings;
 import org.waveprotocol.wave.util.logging.Log;
 
 import java.io.IOException;
@@ -27,6 +31,13 @@ import java.io.IOException;
  */
 public class WebSocketServerChannel extends WebSocketChannel implements 
WebSocket,
     WebSocket.OnTextMessage {
+
+  @Inject
+  private static @Named(CoreSettings.WEBSOCKET_MAX_MESSAGE_SIZE) int 
websocketMaxMessageSize;
+
+  @Inject
+  private static @Named(CoreSettings.WEBSOCKET_MAX_IDLE_TIME) int 
websocketMaxIdleTime;
+
   private static final Log LOG = Log.get(WebSocketServerChannel.class);
 
   private Connection connection;
@@ -48,7 +59,9 @@ public class WebSocketServerChannel exte
   @Override
   public void onOpen(Connection connection) {
     this.connection = connection;
-    connection.setMaxIdleTime(0);
+    connection.setMaxIdleTime(websocketMaxIdleTime);
+    connection.setMaxTextMessageSize(websocketMaxMessageSize * 1024 * 1024);
+    connection.setMaxBinaryMessageSize(websocketMaxMessageSize * 1024 * 1024);
   }
 
   /**


Reply via email to