Author: ngn
Date: Sun Dec 28 13:54:39 2008
New Revision: 729782

URL: http://svn.apache.org/viewvc?rev=729782&view=rev
Log:
Adding a session ID, both to the API and to the MDC logging (FTPSERVER-252)

Modified:
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
    mina/ftpserver/trunk/core/src/test/resources/log4j.properties
    
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
 Sun Dec 28 13:54:39 2008
@@ -19,10 +19,10 @@
 
 package org.apache.ftpserver.impl;
 
-import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.security.cert.Certificate;
 import java.util.Date;
+import java.util.UUID;
 
 import org.apache.ftpserver.ftplet.DataConnectionFactory;
 import org.apache.ftpserver.ftplet.DataType;
@@ -239,5 +239,12 @@
         ioSession.increaseReadDataBytes(increment);
     }
 
+    /**
+     * {...@inheritdoc}
+     */
+    public UUID getSessionId() {
+        return ioSession.getSessionId();
+    }
+
     
 }

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
 Sun Dec 28 13:54:39 2008
@@ -24,6 +24,7 @@
 import java.security.cert.Certificate;
 import java.util.Date;
 import java.util.Set;
+import java.util.UUID;
 
 import javax.net.ssl.SSLPeerUnverifiedException;
 import javax.net.ssl.SSLSession;
@@ -68,6 +69,9 @@
     private static final String ATTRIBUTE_USER_ARGUMENT = ATTRIBUTE_PREFIX
             + "user-argument";
 
+    private static final String ATTRIBUTE_SESSION_ID = ATTRIBUTE_PREFIX
+        + "session-id";
+    
     private static final String ATTRIBUTE_USER = ATTRIBUTE_PREFIX + "user";
 
     private static final String ATTRIBUTE_LANGUAGE = ATTRIBUTE_PREFIX
@@ -667,6 +671,18 @@
 
     }
 
+    /**
+     * @see FtpSession#getSessionId()
+     */
+    public UUID getSessionId() {
+        synchronized (wrappedSession) {
+            if(!wrappedSession.containsAttribute(ATTRIBUTE_SESSION_ID)) {
+                wrappedSession.setAttribute(ATTRIBUTE_SESSION_ID, 
UUID.randomUUID());
+            }
+            return (UUID) wrappedSession.getAttribute(ATTRIBUTE_SESSION_ID);
+        }
+    }
+    
     public FtpIoSession(IoSession wrappedSession, FtpServerContext context) {
         this.wrappedSession = wrappedSession;
         this.context = context;

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
 Sun Dec 28 13:54:39 2008
@@ -19,6 +19,8 @@
  */
 package org.apache.ftpserver.listener.nio;
 
+import java.util.UUID;
+
 import org.apache.ftpserver.ftplet.FtpReply;
 import org.apache.ftpserver.ftplet.FtpRequest;
 import org.apache.ftpserver.impl.DefaultFtpRequest;
@@ -28,6 +30,7 @@
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.logging.MdcInjectionFilter;
 
 /**
  * <strong>Internal class, do not use directly.</strong>
@@ -74,7 +77,10 @@
 
     public void sessionCreated(IoSession session) throws Exception {
         FtpIoSession ftpSession = new FtpIoSession(session, context);
+        MdcInjectionFilter.setProperty(session, "session", 
ftpSession.getSessionId().toString());
+
         ftpHandler.sessionCreated(ftpSession);
+        
     }
 
     public void sessionIdle(IoSession session, IdleStatus status)

Modified: mina/ftpserver/trunk/core/src/test/resources/log4j.properties
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/resources/log4j.properties?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/resources/log4j.properties (original)
+++ mina/ftpserver/trunk/core/src/test/resources/log4j.properties Sun Dec 28 
13:54:39 2008
@@ -18,5 +18,5 @@
 log4j.rootLogger=DEBUG, C 
 log4j.appender.C=org.apache.log4j.ConsoleAppender 
 log4j.appender.C.layout=org.apache.log4j.PatternLayout 
-log4j.appender.C.layout.ConversionPattern=[%X{userName}] [%X{remoteIp}] %m%n
+log4j.appender.C.layout.ConversionPattern=[%X{userName}] [%X{remoteIp}] 
[%X{session}] %m%n
 

Modified: 
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java?rev=729782&r1=729781&r2=729782&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
 (original)
+++ 
mina/ftpserver/trunk/ftplet-api/src/main/java/org/apache/ftpserver/ftplet/FtpSession.java
 Sun Dec 28 13:54:39 2008
@@ -23,6 +23,7 @@
 import java.net.InetSocketAddress;
 import java.security.cert.Certificate;
 import java.util.Date;
+import java.util.UUID;
 
 /**
  * Defines an client session with the FTP server. The session is born when the
@@ -193,4 +194,13 @@
      * @return true if the control socket is secured
      */
     boolean isSecure();
+
+    /**
+     * Get the unique ID for this session. This ID will be maintained for 
+     * the entire session and is also available to MDC logging using the 
"session"
+     * identifier. 
+     * @return The unique ID for this session
+     */
+    public UUID getSessionId();
+
 }


Reply via email to