Author: elecharny
Date: Fri Oct 26 16:00:10 2012
New Revision: 1402559
URL: http://svn.apache.org/viewvc?rev=1402559&view=rev
Log:
Added the isSercured() method in IoSession and the associated implementation
(See DIRMINA-913)
Modified:
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/IoSession.java
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
Modified:
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL:
http://svn.apache.org/viewvc/mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=1402559&r1=1402558&r2=1402559&view=diff
==============================================================================
---
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
(original)
+++
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
Fri Oct 26 16:00:10 2012
@@ -232,6 +232,14 @@ public abstract class AbstractIoSession
/**
* {@inheritDoc}
*/
+ public boolean isSecured() {
+ // Always false...
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public final CloseFuture getCloseFuture() {
return closeFuture;
}
Modified:
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/IoSession.java
URL:
http://svn.apache.org/viewvc/mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/IoSession.java?rev=1402559&r1=1402558&r2=1402559&view=diff
==============================================================================
---
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/IoSession.java
(original)
+++
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/core/session/IoSession.java
Fri Oct 26 16:00:10 2012
@@ -319,20 +319,27 @@ public interface IoSession {
boolean containsAttribute(Object key);
/**
- * Returns the set of keys of all user-defined attributes.
+ * @return the set of keys of all user-defined attributes.
*/
Set<Object> getAttributeKeys();
/**
- * Returns <code>true</code> if this session is connected with remote peer.
+ * @return <code>true</code> if this session is connected with remote peer.
*/
boolean isConnected();
/**
- * Returns <code>true</tt> if and only if this session is being closed
+ * @return <code>true</tt> if and only if this session is being closed
* (but not disconnected yet) or is closed.
*/
boolean isClosing();
+
+ /**
+ * @return <code>true</tt> if the session has started and initialized a
SslEngine,
+ * <code>false</code> if the session is not yet secured (the handshake is
not completed)
+ * or if SSL is not set for this session, or if SSL is not even an option.
+ */
+ boolean isSecured();
/**
* Returns the {@link CloseFuture} of this session. This method returns
Modified:
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
URL:
http://svn.apache.org/viewvc/mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java?rev=1402559&r1=1402558&r2=1402559&view=diff
==============================================================================
---
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
(original)
+++
mina/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
Fri Oct 26 16:00:10 2012
@@ -27,11 +27,14 @@ import java.nio.channels.SocketChannel;
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.file.FileRegion;
+import org.apache.mina.core.filterchain.IoFilter;
+import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.service.DefaultTransportMetadata;
import org.apache.mina.core.service.IoProcessor;
import org.apache.mina.core.service.IoService;
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.AbstractSocketSessionConfig;
import org.apache.mina.transport.socket.SocketSessionConfig;
@@ -260,4 +263,21 @@ class NioSocketSession extends NioSessio
}
}
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public final boolean isSecured() {
+ // If the session does not have a SslFilter, we can return false
+ IoFilterChain chain = getFilterChain();
+
+ IoFilter sslFilter = chain.get(SslFilter.class);
+
+ if (sslFilter != null) {
+ // Get the SslHandler from the SslFilter
+ return ((SslFilter)sslFilter).isSslStarted(this);
+ } else {
+ return false;
+ }
+ }
}