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;
+        }
+    }
 }


Reply via email to