From 889d20ba5576977d6f98d6c3b0faf169d340de04 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 8 Aug 2012 12:42:57 -0700 Subject: Removing throws IOException on WSConnection.close() --- .../websocket/client/WebSocketClientFactory.java | 34 ++++++++++------------ .../jetty/websocket/api/BaseConnection.java | 12 ++++---- .../websocket/driver/WebSocketEventDriver.java | 22 +++++--------- .../websocket/io/AbstractWebSocketConnection.java | 4 +-- .../org/eclipse/jetty/websocket/io/FrameBytes.java | 10 +------ .../jetty/websocket/io/WebSocketSession.java | 4 +-- .../websocket/server/WebSocketServerFactory.java | 9 +----- 7 files changed, 34 insertions(+), 61 deletions(-) (limited to 'jetty-websocket') diff --git a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java index 484fc92a82..950f4e37f5 100644 --- a/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java +++ b/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClientFactory.java @@ -15,7 +15,6 @@ //======================================================================== package org.eclipse.jetty.websocket.client; -import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.Queue; @@ -56,54 +55,53 @@ public class WebSocketClientFactory extends AggregateLifeCycle public WebSocketClientFactory(Executor threadPool) { - this(threadPool, Executors.newSingleThreadScheduledExecutor()); - } - - public WebSocketClientFactory(SslContextFactory sslContextFactory) - { - this(new QueuedThreadPool(), Executors.newSingleThreadScheduledExecutor(), sslContextFactory); + this(threadPool,Executors.newSingleThreadScheduledExecutor()); } public WebSocketClientFactory(Executor threadPool, ScheduledExecutorService scheduler) { - this(threadPool, scheduler, null); + this(threadPool,scheduler,null); } public WebSocketClientFactory(Executor executor, ScheduledExecutorService scheduler, SslContextFactory sslContextFactory) { if (executor == null) + { throw new IllegalArgumentException("Executor is required"); + } this.executor = executor; addBean(executor); if (scheduler == null) + { throw new IllegalArgumentException("Scheduler is required"); + } this.scheduler = scheduler; if (sslContextFactory != null) + { addBean(sslContextFactory); + } this.policy = WebSocketPolicy.newClientPolicy(); - selector = new WebSocketClientSelectorManager(bufferPool, executor, scheduler, policy); + selector = new WebSocketClientSelectorManager(bufferPool,executor,scheduler,policy); selector.setSslContextFactory(sslContextFactory); addBean(selector); this.methodsCache = new EventMethodsCache(); } + public WebSocketClientFactory(SslContextFactory sslContextFactory) + { + this(new QueuedThreadPool(),Executors.newSingleThreadScheduledExecutor(),sslContextFactory); + } + private void closeConnections() { for (WebSocketConnection connection : connections) { - try - { - connection.close(); - } - catch (IOException e) - { - LOG.warn(e); - } + connection.close(); } connections.clear(); } @@ -152,6 +150,6 @@ public class WebSocketClientFactory extends AggregateLifeCycle public WebSocketEventDriver newWebSocketDriver(Object websocketPojo) { - return new WebSocketEventDriver(websocketPojo, methodsCache, policy, getBufferPool()); + return new WebSocketEventDriver(websocketPojo,methodsCache,policy,getBufferPool()); } } diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/BaseConnection.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/BaseConnection.java index d1a08e740f..9eca336221 100644 --- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/BaseConnection.java +++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/api/BaseConnection.java @@ -1,8 +1,10 @@ package org.eclipse.jetty.websocket.api; -import java.io.IOException; import java.net.InetSocketAddress; +/** + * Base Connection concepts + */ public interface BaseConnection { /** @@ -21,12 +23,10 @@ public interface BaseConnection *
* Basic usage: results in an non-blocking async write, then connection close.
*
- * @throws IOException
- * if unable to send the close frame, or close the connection successfully.
* @see StatusCode
* @see #close(int, String)
*/
- void close() throws IOException;
+ void close();
/**
* Terminate connection, with status code.
@@ -37,11 +37,9 @@ public interface BaseConnection
* the status code
* @param reason
* the (optional) reason. (can be null for no reason)
- * @throws IOException
- * if unable to send the close frame, or close the connection successfully.
* @see StatusCode
*/
- void close(int statusCode, String reason) throws IOException;
+ void close(int statusCode, String reason);
/**
* Get the remote Address in use for this connection.
diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/driver/WebSocketEventDriver.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/driver/WebSocketEventDriver.java
index 56bada51b3..b24731729f 100644
--- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/driver/WebSocketEventDriver.java
+++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/driver/WebSocketEventDriver.java
@@ -15,7 +15,6 @@
//========================================================================
package org.eclipse.jetty.websocket.driver;
-import java.io.IOException;
import java.nio.ByteBuffer;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -287,24 +286,17 @@ public class WebSocketEventDriver implements IncomingFrames
private void terminateConnection(int statusCode, String rawreason)
{
- try
+ String reason = rawreason;
+ if (StringUtil.isNotBlank(reason))
{
- String reason = rawreason;
- if (StringUtil.isNotBlank(reason))
+ // Trim big exception messages here.
+ if (reason.length() > (WebSocketFrame.MAX_CONTROL_PAYLOAD - 2))
{
- // Trim big exception messages here.
- if (reason.length() > (WebSocketFrame.MAX_CONTROL_PAYLOAD - 2))
- {
- reason = reason.substring(0,WebSocketFrame.MAX_CONTROL_PAYLOAD - 2);
- }
+ reason = reason.substring(0,WebSocketFrame.MAX_CONTROL_PAYLOAD - 2);
}
- LOG.debug("terminateConnection({},{})",statusCode,rawreason);
- session.close(statusCode,reason);
- }
- catch (IOException e)
- {
- LOG.debug(e);
}
+ LOG.debug("terminateConnection({},{})",statusCode,rawreason);
+ session.close(statusCode,reason);
}
@Override
diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/AbstractWebSocketConnection.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/AbstractWebSocketConnection.java
index 6549c33cf7..5e53e015a4 100644
--- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/AbstractWebSocketConnection.java
+++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/AbstractWebSocketConnection.java
@@ -80,13 +80,13 @@ public abstract class AbstractWebSocketConnection extends AbstractConnection imp
}
@Override
- public void close() throws IOException
+ public void close()
{
terminateConnection(StatusCode.NORMAL,null);
}
@Override
- public void close(int statusCode, String reason) throws IOException
+ public void close(int statusCode, String reason)
{
terminateConnection(statusCode,reason);
}
diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/FrameBytes.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/FrameBytes.java
index 58371b04af..0bd42b033e 100644
--- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/FrameBytes.java
+++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/io/FrameBytes.java
@@ -15,7 +15,6 @@
//========================================================================
package org.eclipse.jetty.websocket.io;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.InterruptedByTimeoutException;
import java.util.concurrent.ScheduledFuture;
@@ -87,14 +86,7 @@ public abstract class FrameBytes