Author: elecharny
Date: Wed May 2 23:47:08 2012
New Revision: 1333259
URL: http://svn.apache.org/viewvc?rev=1333259&view=rev
Log:
o Moved the SslContext field to the TcpClient/Server classes (UDP does not
support SSL)
o Added some missing Javadoc
o Added a initSecured(session) method to initialize the SL layer if needed.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpClient.java
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpServer.java
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpClient.java
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpServer.java
mina/trunk/core/src/test/java/org/apache/mina/util/AbstractIoFutureTest.java
mina/trunk/core/src/test/java/org/apache/mina/util/IoBufferTest.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java Wed May 2
23:47:08 2012
@@ -21,7 +21,7 @@ package org.apache.mina.api;
import java.util.Map;
-import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
import org.apache.mina.service.IoHandler;
@@ -32,7 +32,6 @@ import org.apache.mina.service.IoHandler
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public interface IoService {
-
/**
* Returns the map of all sessions which are currently managed by this
service. The key of map is the
* {@link IoSession#getId() ID} of the session.
@@ -66,7 +65,7 @@ public interface IoService {
/**
* Get the list of filters installed on this service
*
- * @return
+ * @return The list of installed filters
*/
IoFilter[] getFilters();
@@ -88,23 +87,8 @@ public interface IoService {
boolean isSecured();
/**
- * Set the mode to use, either secured or not secured
- * @param secured The mode to use
- */
- void setSecured(boolean secured);
-
- /**
- * Inject a {@link SSLContex} valid for the service. This {@link
SSLContex} will be used
- * by the SSLEngine to handle secured connections.<br/>
- * The {@link SSLContex} must have been created and initialized before
being injected in
- * the service.<br/>
- * By setting a {@link SSLContext}, the service switch to secured.
- * @param sslContext The configured {@link SSLContex}.
- */
- void setSslContext(SSLContext sslContext);
-
- /**
- * @return The {@link SSLContext} instance stored in the service.
+ * Initialize the service in secured mode for the given session
+ * @param session The {@link IoSession} to secure
*/
- SSLContext getSslContext();
+ void initSecured(IoSession session) throws SSLException;
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
Wed May 2 23:47:08 2012
@@ -24,7 +24,7 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
import org.apache.mina.api.IoFilter;
import org.apache.mina.api.IoService;
@@ -46,10 +46,7 @@ public abstract class AbstractIoService
private ServiceState state;
/** The service mode : secured or not */
- private ServiceMode mode;
-
- /** The SSLContext instance */
- private SSLContext sslContext;
+ protected ServiceMode mode;
private final Map<Long, IoSession> managedSessions = new
ConcurrentHashMap<Long, IoSession>();
@@ -289,6 +286,11 @@ public abstract class AbstractIoService
/**
* {@inheritDoc}
*/
+ public abstract void initSecured(IoSession session) throws SSLException;
+
+ /**
+ * {@inheritDoc}
+ */
public void setSecured(boolean secured) {
if (secured) {
mode = ServiceMode.SECURED;
@@ -296,19 +298,4 @@ public abstract class AbstractIoService
mode = ServiceMode.NOT_SECURED;
}
}
-
- /**
- * {@inheritDoc}
- */
- public void setSslContext(SSLContext sslContext) {
- this.sslContext = sslContext;
- mode = ServiceMode.SECURED;
- }
-
- /**
- * {@inheritDoc}
- */
- public SSLContext getSslContext() {
- return sslContext;
- }
}
\ No newline at end of file
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpClient.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpClient.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpClient.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpClient.java
Wed May 2 23:47:08 2012
@@ -19,18 +19,54 @@
*/
package org.apache.mina.transport.tcp;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+
+import org.apache.mina.api.IoSession;
import org.apache.mina.service.client.AbstractIoClient;
/**
- * TODO
+ * Base class for UDP based Clients
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public abstract class AbstractTcpClient extends AbstractIoClient {
+ /** The SSLContext instance */
+ private SSLContext sslContext;
+
/**
* Create an new AbsractTcpClient instance
*/
protected AbstractTcpClient() {
super();
}
+
+ /**
+ * Inject a {@link SSLContex} valid for the service. This {@link
SSLContex} will be used
+ * by the SSLEngine to handle secured connections.<br/>
+ * The {@link SSLContex} must have been created and initialized before
being injected in
+ * the service.<br/>
+ * By setting a {@link SSLContext}, the service switch to secured.
+ * @param sslContext The configured {@link SSLContex}.
+ */
+ public void setSslContext(SSLContext sslContext) {
+ this.sslContext = sslContext;
+ mode = ServiceMode.SECURED;
+ }
+
+ /**
+ * @return The {@link SSLContext} instance stored in the service.
+ */
+ public SSLContext getSslContext() {
+ return sslContext;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void initSecured(IoSession session) throws SSLException {
+ if (mode == ServiceMode.SECURED) {
+ session.initSecure(sslContext);
+ }
+ }
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpServer.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpServer.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpServer.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/AbstractTcpServer.java
Wed May 2 23:47:08 2012
@@ -19,6 +19,10 @@
*/
package org.apache.mina.transport.tcp;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+
+import org.apache.mina.api.IoSession;
import org.apache.mina.service.server.AbstractIoServer;
/**
@@ -27,6 +31,9 @@ import org.apache.mina.service.server.Ab
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public abstract class AbstractTcpServer extends AbstractIoServer {
+ /** The SSLContext instance */
+ private SSLContext sslContext;
+
/**
* Create an new AbsractTcpServer instance
*/
@@ -45,4 +52,33 @@ public abstract class AbstractTcpServer
* @return
*/
public abstract boolean isReuseAddress();
+
+ /**
+ * Inject a {@link SSLContex} valid for the service. This {@link
SSLContex} will be used
+ * by the SSLEngine to handle secured connections.<br/>
+ * The {@link SSLContex} must have been created and initialized before
being injected in
+ * the service.<br/>
+ * By setting a {@link SSLContext}, the service switch to secured.
+ * @param sslContext The configured {@link SSLContex}.
+ */
+ public void setSslContext(SSLContext sslContext) {
+ this.sslContext = sslContext;
+ mode = ServiceMode.SECURED;
+ }
+
+ /**
+ * @return The {@link SSLContext} instance stored in the service.
+ */
+ public SSLContext getSslContext() {
+ return sslContext;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void initSecured(IoSession session) throws SSLException {
+ if (mode == ServiceMode.SECURED) {
+ session.initSecure(sslContext);
+ }
+ }
}
\ No newline at end of file
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
Wed May 2 23:47:08 2012
@@ -248,7 +248,7 @@ public class NioSelectorProcessor implem
// Set the secured flag if the service is to be used over SSL/TLS
if (service.isSecured()) {
- session.initSecure(service.getSslContext());
+ service.initSecured(session);
}
// event session created
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpClient.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpClient.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpClient.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpClient.java
Wed May 2 23:47:08 2012
@@ -19,6 +19,9 @@
*/
package org.apache.mina.transport.udp;
+import javax.net.ssl.SSLException;
+
+import org.apache.mina.api.IoSession;
import org.apache.mina.service.client.AbstractIoClient;
/**
@@ -33,4 +36,11 @@ public abstract class AbstractUdpClient
protected AbstractUdpClient() {
super();
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void initSecured(IoSession session) throws SSLException {
+ // Do nothing : UDP does not support SSL
+ }
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpServer.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpServer.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpServer.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/udp/AbstractUdpServer.java
Wed May 2 23:47:08 2012
@@ -23,6 +23,9 @@ import java.io.IOException;
import java.net.SocketAddress;
import java.util.Set;
+import javax.net.ssl.SSLException;
+
+import org.apache.mina.api.IoSession;
import org.apache.mina.service.server.AbstractIoServer;
/**
@@ -62,4 +65,10 @@ public abstract class AbstractUdpServer
}
+ /**
+ * {@inheritDoc}
+ */
+ public void initSecured(IoSession session) throws SSLException {
+ // Do nothing : UDP does not support SSL
+ }
}
Modified:
mina/trunk/core/src/test/java/org/apache/mina/util/AbstractIoFutureTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/util/AbstractIoFutureTest.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
---
mina/trunk/core/src/test/java/org/apache/mina/util/AbstractIoFutureTest.java
(original)
+++
mina/trunk/core/src/test/java/org/apache/mina/util/AbstractIoFutureTest.java
Wed May 2 23:47:08 2012
@@ -18,16 +18,6 @@
*/
package org.apache.mina.util;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.junit.Test;
-import org.mockito.Matchers;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -39,7 +29,17 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
import org.apache.mina.api.IoFutureListener;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.junit.Test;
+import org.mockito.Matchers;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Modified: mina/trunk/core/src/test/java/org/apache/mina/util/IoBufferTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/util/IoBufferTest.java?rev=1333259&r1=1333258&r2=1333259&view=diff
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/util/IoBufferTest.java
(original)
+++ mina/trunk/core/src/test/java/org/apache/mina/util/IoBufferTest.java Wed
May 2 23:47:08 2012
@@ -1,9 +1,9 @@
package org.apache.mina.util;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.nio.BufferUnderflowException;