You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/10/25 11:28:45 UTC

svn commit: r588178 [1/2] - in /mina/trunk: core/src/main/java/org/apache/mina/common/ core/src/main/java/org/apache/mina/filter/codec/ core/src/main/java/org/apache/mina/filter/codec/textline/ core/src/main/java/org/apache/mina/filter/executor/ core/s...

Author: trustin
Date: Thu Oct 25 02:28:40 2007
New Revision: 588178

URL: http://svn.apache.org/viewvc?rev=588178&view=rev
Log:
* Rewrote IoSessionLogger
** IoSessionLogger now implements org.slf4j.Logger
** An IoSessionLogger instance can be retrieved by calling IoSessionLogger.getLogger()
* and related changes follow...


Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java
    mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionLogger.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/AbstractKeepAliveFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/ActiveKeepAliveFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilterFactory.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/PassiveKeepAliveFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilterBuilder.java
    mina/trunk/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java
    mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/SocketAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java
    mina/trunk/core/src/main/java/org/apache/mina/util/NamePreservingRunnable.java
    mina/trunk/core/src/test/java/org/apache/mina/common/IoServiceListenerSupportTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineDecoderTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/firewall/ConnectionThrottleFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/keepalive/KeepAliveFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/reqres/RequestResponseFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java
    mina/trunk/core/src/test/java/org/apache/mina/handler/demux/DemuxingIoHandlerTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramBindTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramConfigTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramRecyclerTest.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/SocketBindTest.java
    mina/trunk/example/src/main/java/org/apache/mina/example/chat/ChatProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/proxy/AbstractProxyIoHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/reverser/ReverseProtocolHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ClientSessionHandler.java
    mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
    mina/trunk/example/src/test/java/org/apache/mina/example/echoserver/AbstractTest.java
    mina/trunk/example/src/test/java/org/apache/mina/example/echoserver/ConnectorTest.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoAcceptor.java Thu Oct 25 02:28:40 2007
@@ -121,10 +121,11 @@
             }
             bound = false;
         }
-        
+
         getListeners().fireServiceDeactivated();
     }
 
+    @Override
     public boolean isActive() {
         synchronized (bindLock) {
             return bound;

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java Thu Oct 25 02:28:40 2007
@@ -91,7 +91,7 @@
      */
     protected abstract ConnectFuture doConnect(SocketAddress remoteAddress,
             SocketAddress localAddress);
-    
+
     /**
      * Adds required internal attributes and {@link IoFutureListener}s
      * related with event notifications to the specified {@code session}

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoProcessor.java Thu Oct 25 02:28:40 2007
@@ -59,9 +59,9 @@
     }
 
     /**
-     * poll those sessions for the given timeout 
+     * poll those sessions for the given timeout
      * @param timeout milliseconds before the call timeout if no event appear
-     * @return true if at least a session is ready for read or for write 
+     * @return true if at least a session is ready for read or for write
      * @throws Exception if some low level IO error occurs
      */
     protected abstract boolean select(int timeout) throws Exception;
@@ -73,8 +73,8 @@
     protected abstract Iterator<AbstractIoSession> selectedSessions() throws Exception;
 
     protected abstract SessionState state(IoSession session);
-    
-    
+
+
     /**
      * Is the session ready for writing
      * @param session the session queried
@@ -82,7 +82,7 @@
      * @throws Exception if some low level IO error occurs
      */
     protected abstract boolean isWritable(IoSession session) throws Exception;
-    
+
     /**
      * Is the session ready for reading
      * @param session the session queried
@@ -91,33 +91,33 @@
      */
     protected abstract boolean isReadable(IoSession session) throws Exception;
     /**
-     * register a session for writing 
+     * register a session for writing
      * @param session the session registered
      * @param value true for registering, false for removing
      * @throws Exception if some low level IO error occurs
      */
     protected abstract void setOpWrite(IoSession session,boolean value) throws Exception;
-    
+
     /**
-     * register a session for reading 
+     * register a session for reading
      * @param session the session registered
      * @param value true for registering, false for removing
      * @throws Exception if some low level IO error occurs
      */
     protected abstract void setOpRead(IoSession session,boolean value) throws Exception;
-    
+
     /**
      * is this session registered for reading
      * @param session the session queried
-     * @return true is registered for reading 
+     * @return true is registered for reading
      * @throws Exception if some low level IO error occurs
      */
     protected abstract boolean isOpRead(IoSession session) throws Exception;
-    
+
     /**
      * is this session registered for writing
      * @param session the session queried
-     * @return true is registered for writing 
+     * @return true is registered for writing
      * @throws Exception if some low level IO error occurs
      */
     protected abstract boolean isOpWrite(IoSession session) throws Exception;
@@ -269,7 +269,7 @@
     }
 
     private void process(AbstractIoSession session) throws Exception {
-        
+
         if (isReadable(session) && session.getTrafficMask().isReadable()) {
             read(session);
         }
@@ -307,7 +307,7 @@
                 buf = null;
 
                 if (session.getTransportMetadata().hasFragmentation()) {
-                    if ((readBytes << 1) < config.getReadBufferSize()) {
+                    if (readBytes << 1 < config.getReadBufferSize()) {
                         session.decreaseReadBufferSize();
                     } else if (readBytes == config.getReadBufferSize()) {
                         session.increaseReadBufferSize();
@@ -497,7 +497,7 @@
                     setOpWrite(
                             session,
                             !session.getWriteRequestQueue().isEmpty() &&
-                                    ((mask & SelectionKey.OP_WRITE) != 0));
+                                    (mask & SelectionKey.OP_WRITE) != 0);
                 } catch (Exception e) {
                     session.getFilterChain().fireExceptionCaught(e);
                 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java Thu Oct 25 02:28:40 2007
@@ -44,7 +44,7 @@
      * Maintains the {@link IoServiceListener}s of this service.
      */
     private final IoServiceListenerSupport listeners;
-    
+
     private volatile long activationTime;
     private final AtomicLong readBytes = new AtomicLong();
     private final AtomicLong writtenBytes = new AtomicLong();
@@ -118,7 +118,7 @@
         if (handler == null) {
             throw new NullPointerException("handler");
         }
-        
+
         if (isActive()) {
             throw new IllegalStateException("handler cannot be set while the service is active.");
         }
@@ -133,11 +133,11 @@
     public IoSessionConfig getSessionConfig() {
         return sessionConfig;
     }
-    
+
     public long getReadBytes() {
         return readBytes.get();
     }
-    
+
     protected void increaseReadBytes(long increment) {
         readBytes.addAndGet(increment);
     }
@@ -145,7 +145,7 @@
     public long getReadMessages() {
         return readMessages.get();
     }
-    
+
     protected void increaseReadMessages() {
         readMessages.incrementAndGet();
     }
@@ -153,7 +153,7 @@
     public long getScheduledWriteBytes() {
         return scheduledWriteBytes.get();
     }
-    
+
     protected void increaseScheduledWriteBytes(long increment) {
         scheduledWriteBytes.addAndGet(increment);
     }
@@ -161,7 +161,7 @@
     public long getScheduledWriteMessages() {
         return scheduledWriteMessages.get();
     }
-    
+
     protected void increaseScheduledWriteMessages() {
         scheduledWriteMessages.incrementAndGet();
     }
@@ -169,7 +169,7 @@
     public long getActivationTime() {
         return activationTime;
     }
-    
+
     protected void setActivationTime(long activationTime) {
         this.activationTime = activationTime;
     }
@@ -177,7 +177,7 @@
     public long getWrittenBytes() {
         return writtenBytes.get();
     }
-    
+
     protected void increaseWrittenBytes(long increment) {
         writtenBytes.addAndGet(increment);
         scheduledWriteBytes.addAndGet(-increment);
@@ -186,7 +186,7 @@
     public long getWrittenMessages() {
         return writtenMessages.get();
     }
-    
+
     protected void increaseWrittenMessages() {
         writtenMessages.incrementAndGet();
         scheduledWriteMessages.decrementAndGet();
@@ -196,15 +196,15 @@
         public ServiceOperationFuture() {
             super(null);
         }
-        
+
         public boolean isDone() {
-            return (getValue() == Boolean.TRUE);
+            return getValue() == Boolean.TRUE;
         }
-        
+
         public void setDone() {
             setValue(Boolean.TRUE);
         }
-        
+
         public Exception getException() {
             if (getValue() instanceof Exception) {
                 return (Exception) getValue();
@@ -212,7 +212,7 @@
                 return null;
             }
         }
-        
+
         public void setException(Exception cause) {
             setValue(cause);
         }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java Thu Oct 25 02:28:40 2007
@@ -134,7 +134,7 @@
     private long lastIdleTimeForRead;
 
     private long lastIdleTimeForWrite;
-    
+
     private boolean deferDecreaseReadBuffer = true;
 
     protected AbstractIoSession() {
@@ -170,7 +170,7 @@
             return true;
         }
     }
-    
+
     public CloseFuture close(boolean rightNow) {
         if (rightNow) {
             return close();
@@ -191,7 +191,7 @@
         getFilterChain().fireFilterClose();
         return closeFuture;
     }
-    
+
     public CloseFuture closeOnFlush() {
         getWriteRequestQueue().offer(CLOSE_REQUEST);
         getProcessor().flush(this);
@@ -206,7 +206,7 @@
         if (message == null) {
             throw new NullPointerException("message");
         }
-        
+
         if (!getTransportMetadata().isConnectionless() &&
                 remoteAddress != null) {
             throw new UnsupportedOperationException();
@@ -442,7 +442,7 @@
             lastReadTime = System.currentTimeMillis();
             idleCountForBoth = 0;
             idleCountForRead = 0;
-            
+
             if (getService() instanceof AbstractIoService) {
                 ((AbstractIoService) getService()).increaseReadBytes(increment);
             }
@@ -457,7 +457,7 @@
             idleCountForWrite = 0;
 
             scheduledWriteBytes.addAndGet(-increment);
-            
+
             if (getService() instanceof AbstractIoService) {
                 ((AbstractIoService) getService()).increaseWrittenBytes(increment);
             }
@@ -496,7 +496,7 @@
     protected Queue<WriteRequest> getWriteRequestQueue() {
         return writeRequestQueue;
     }
-    
+
     protected void increaseReadBufferSize() {
         int newReadBufferSize = getConfig().getReadBufferSize() << 1;
         if (newReadBufferSize <= getConfig().getMaxReadBufferSize()) {
@@ -504,16 +504,16 @@
         } else {
             getConfig().setReadBufferSize(getConfig().getMaxReadBufferSize());
         }
-        
+
         deferDecreaseReadBuffer = true;
     }
-    
+
     protected void decreaseReadBufferSize() {
         if (deferDecreaseReadBuffer) {
             deferDecreaseReadBuffer = false;
             return;
         }
-        
+
         if (getConfig().getReadBufferSize() > getConfig().getMinReadBufferSize()) {
             getConfig().setReadBufferSize(getConfig().getReadBufferSize() >>> 1);
         }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AttributeKey.java Thu Oct 25 02:28:40 2007
@@ -19,6 +19,8 @@
  */
 package org.apache.mina.common;
 
+import java.util.Map;
+
 /**
  * A key that makes its parent {@link Map} or session attribute to search
  * fast while being debug-friendly by providing the spring representation.
@@ -28,7 +30,7 @@
  */
 public final class AttributeKey {
     private final String name;
-    
+
     /**
      * Creates a new instance.
      */
@@ -36,7 +38,7 @@
         this.name = source.getName() + '.' + String.valueOf(name) + '@' +
                 Integer.toHexString(System.identityHashCode(this));
     }
-    
+
     @Override
     public String toString() {
         return name;

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/ConnectFuture.java Thu Oct 25 02:28:40 2007
@@ -55,7 +55,7 @@
      * Returns <tt>true</tt> if the connect operation is finished successfully.
      */
     boolean isConnected();
-    
+
     /**
      * Returns {@code true} if the connect operation has been canceled by
      * {@link #cancel()} method.
@@ -75,7 +75,7 @@
      * internally.  Please do not call this method directly.
      */
     void setException(Throwable exception);
-    
+
     /**
      * Cancels the connection attempt and notifies all threads waiting for
      * this future.

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DefaultConnectFuture.java Thu Oct 25 02:28:40 2007
@@ -28,9 +28,9 @@
  */
 public class DefaultConnectFuture extends DefaultIoFuture implements
         ConnectFuture {
-    
+
     private static final Object CANCELED = new Object();
-    
+
     /**
      * Returns a new {@link ConnectFuture} which is already marked as 'failed to connect'.
      */
@@ -74,7 +74,7 @@
     public boolean isConnected() {
         return getValue() instanceof IoSession;
     }
-    
+
     public boolean isCanceled() {
         return getValue() == CANCELED;
     }
@@ -86,7 +86,7 @@
     public void setException(Throwable exception) {
         setValue(exception);
     }
-    
+
     public void cancel() {
         setValue(CANCELED);
     }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java Thu Oct 25 02:28:40 2007
@@ -74,7 +74,7 @@
         }
         return e;
     }
-    
+
     public Entry getEntry(IoFilter filter) {
         EntryImpl e = head.nextEntry;
         while (e != tail) {
@@ -317,7 +317,7 @@
                     "Other filter is using the same name '" + name + "'");
         }
     }
-    
+
     public void fireSessionCreated() {
         Entry head = this.head;
         callNextSessionCreated(head, session);
@@ -454,7 +454,7 @@
             entry.getFilter().exceptionCaught(entry.getNextFilter(), session,
                     cause);
         } catch (Throwable e) {
-            IoSessionLogger.warn(session,
+            IoSessionLogger.getLogger(session, getClass()).warn(
                     "Unexpected exception from exceptionCaught handler.", e);
         }
     }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChainBuilder.java Thu Oct 25 02:28:40 2007
@@ -119,7 +119,7 @@
         if (e == null) {
             return null;
         }
-    
+
         return e.getFilter();
     }
 
@@ -131,7 +131,7 @@
         if (e == null) {
             return null;
         }
-    
+
         return e.getFilter();
     }
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFuture.java Thu Oct 25 02:28:40 2007
@@ -31,9 +31,9 @@
  * @version $Rev$, $Date$
  */
 public class DefaultIoFuture implements IoFuture {
-    
+
     private static final int DEAD_LOCK_CHECK_INTERVAL = 5000;
-    
+
     private final IoSession session;
     private final Object lock;
     private IoFutureListener firstListener;
@@ -159,7 +159,7 @@
             }
         }
     }
-    
+
     private void checkDeadLock() {
         IllegalStateException e = new IllegalStateException(
                 "DEAD LOCK: " + IoFuture.class.getSimpleName() +
@@ -168,7 +168,7 @@
                 " or configure a proper thread model alternatively.");
 
         StackTraceElement[] stackTrace = e.getStackTrace();
-        
+
         // Simple and quick check.
         for (StackTraceElement s: stackTrace) {
             if (AbstractIoProcessor.class.getName().equals(s.getClassName())) {
@@ -176,7 +176,7 @@
             }
         }
 
-        // And then more precisely. 
+        // And then more precisely.
         for (StackTraceElement s: stackTrace) {
             try {
                 Class<?> cls = DefaultIoFuture.class.getClassLoader().loadClass(s.getClassName());

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java Thu Oct 25 02:28:40 2007
@@ -80,11 +80,11 @@
             }
         }
     }
-    
+
     /**
      * Fires a {@link IoEventType#SESSION_IDLE} event to any applicable
      * sessions in the specified collection.
-     *   
+     *
      * @param currentTime the current time (i.e. {@link System#currentTimeMillis()})
      */
     public static void notifyIdleSessions(Iterator<? extends IoSession> sessions, long currentTime) {
@@ -97,7 +97,7 @@
     /**
      * Fires a {@link IoEventType#SESSION_IDLE} event if applicable for the
      * specified {@code session}.
-     * 
+     *
      * @param currentTime the current time (i.e. {@link System#currentTimeMillis()})
      */
     public static void notifyIdleSession(IoSession session, long currentTime) {

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoEvent.java Thu Oct 25 02:28:40 2007
@@ -57,7 +57,7 @@
     public Object getParameter() {
         return parameter;
     }
-    
+
     public void fire() {
         switch (getType()) {
         case MESSAGE_RECEIVED:

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoFilterEvent.java Thu Oct 25 02:28:40 2007
@@ -46,7 +46,7 @@
     public NextFilter getNextFilter() {
         return nextFilter;
     }
-    
+
     @Override
     public void fire() {
         switch (getType()) {

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoHandlerAdapter.java Thu Oct 25 02:28:40 2007
@@ -44,8 +44,9 @@
 
     public void exceptionCaught(IoSession session, Throwable cause)
             throws Exception {
-        if (IoSessionLogger.isWarnEnabled(session)) {
-            IoSessionLogger.warn(session, "EXCEPTION, please implement "
+        IoSessionLogger logger = IoSessionLogger.getLogger(session, getClass());
+        if (logger.isWarnEnabled()) {
+            logger.warn("EXCEPTION, please implement "
                     + getClass().getName()
                     + ".exceptionCaught() for proper handling:", cause);
         }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java Thu Oct 25 02:28:40 2007
@@ -101,70 +101,70 @@
      *                               not a {@link DefaultIoFilterChainBuilder}
      */
     DefaultIoFilterChainBuilder getFilterChain();
-    
+
     /**
      * Returns a value of whether or not this service is active
-     * 
+     *
      * @return
      * 	whether of not the service is active.
      */
     boolean isActive();
-    
+
     /**
      * Returns the time when this service was activated.  Should return
-     * zero if the service has not been activated.  
-     * 
+     * zero if the service has not been activated.
+     *
      * @return
      * 	The time by using <code>System.currentTimeMillis()</code>
      */
     long getActivationTime();
-    
+
     /**
      * Returns the number of bytes read by this service
-     * 
+     *
      * @return
      * 	The number of bytes this service has read
      */
     long getReadBytes();
-    
+
     /**
      * Returns the number of bytes written out by this service
-     * 
+     *
      * @return
      * 	The number of bytes this service has written
      */
     long getWrittenBytes();
-    
+
     /**
      * Returns the number of messages this services has read
-     * 
+     *
      * @return
      * 	The number of messages this services has read
      */
     long getReadMessages();
-    
+
     /**
      * Returns the number of messages this service has written
-     * 
+     *
      * @return
      * 	The number of messages this service has written
      */
     long getWrittenMessages();
-    
+
     /**
      * Returns the number of bytes scheduled to be written
-     * 
+     *
      * @return
      * 	The number of bytes scheduled to be written
      */
     long getScheduledWriteBytes();
-    
+
     /**
      * Returns the number of messages scheduled to be written
-     * 
+     *
      * @return
      * 	The number of messages scheduled to be written
      */
     long getScheduledWriteMessages();
-    
+
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceListenerSupport.java Thu Oct 25 02:28:40 2007
@@ -84,7 +84,7 @@
     public Set<IoSession> getManagedSessions() {
         return readOnlyManagedSessions;
     }
-    
+
     public boolean isActive() {
         return activated.get();
     }
@@ -97,7 +97,7 @@
         if (!activated.compareAndSet(false, true)) {
             return;
         }
-        
+
         if (service instanceof AbstractIoService) {
             ((AbstractIoService) service).setActivationTime(System.currentTimeMillis());
         }
@@ -115,7 +115,7 @@
         if (!activated.compareAndSet(true, false)) {
             return;
         }
-        
+
         try {
             for (IoServiceListener l : listeners) {
                 l.serviceDeactivated(service);
@@ -138,7 +138,7 @@
                 firstSession = managedSessions.isEmpty();
             }
         }
-        
+
         // If already registered, ignore.
         if (!managedSessions.add(session)) {
             return;

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java Thu Oct 25 02:28:40 2007
@@ -105,7 +105,7 @@
      *
      * @param destination <tt>null</tt> if you want the message sent to the
      *                    default remote address
-     *                    
+     *
      * @throws UnsupportedOperationException if this operation is not supported
      */
     WriteFuture write(Object message, SocketAddress destination);
@@ -116,19 +116,19 @@
      * the session actually closed.
      */
     CloseFuture close();
-    
+
     /**
      * Closes this session after all queued write requests are flushed.
      * This operation is asynchronous.  Wait for the returned {@link CloseFuture}
      * if you want to wait for the session actually closed.
      */
     CloseFuture closeOnFlush();
-    
+
     /**
      * Closes this session immediately or after all queued write requests
      * are flushed.  This operation is asynchronous.  Wait for the returned
      * {@link CloseFuture} if you want to wait for the session actually closed.
-     * 
+     *
      * @param immediately {@code true} to close this session immediately
      *                    (i.e. {@link #close()}).
      *                    {@code false} to close this session after all queued

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionLogger.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionLogger.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionLogger.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionLogger.java Thu Oct 25 02:28:40 2007
@@ -21,187 +21,687 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.Marker;
 
 /**
- * Provides utility methods to log protocol-specific messages.
- * <p>
- * Set {@link #PREFIX} and {@link #LOGGER} session attributes
- * to override prefix string and logger or use {@link #setPrefix(IoSession, String)}
- * and {@link #setLogger(IoSession, Logger)}.
- * </p>
+ * A SLF4J {@link Logger} that prepends the prefix to all logging messages.
+ * The default prefix is the remote address of the specified {@link IoSession}.
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
  *
  */
-public class IoSessionLogger {
-    /**
-     * Session attribute key: prefix string
-     */
-    public static final AttributeKey PREFIX = new AttributeKey(IoSessionLogger.class, "prefix");
+public class IoSessionLogger implements Logger {
 
-    /**
-     * Session attribute key: {@link Logger}
-     */
-    public static final AttributeKey LOGGER = new AttributeKey(IoSessionLogger.class, "logger");
+    private static final String UNEXPECTED_EXCEPTION = "Unexpected exception.";
 
-    private static Class<? extends IoHandler> getClass(IoSession session) {
-        return session.getHandler().getClass();
+    private static final AttributeKey PREFIX = new AttributeKey(
+            IoSessionLogger.class, "prefix");
+
+    private static boolean usePrefix = true;
+
+    public static IoSessionLogger getLogger(IoSession session) {
+        return getLogger(session, session.getHandler().getClass());
+    }
+
+    public static IoSessionLogger getLogger(IoSession session, String name) {
+        if (name != null) {
+            return getLogger(session, LoggerFactory.getLogger(name));
+        } else {
+            return getLogger(session, (Logger) null);
+        }
     }
 
-    public static void trace(IoSession session, Object message) {
-        trace(getLogger(session), session, message);
+    public static IoSessionLogger getLogger(IoSession session, Class<?> clazz) {
+        if (clazz != null) {
+            return getLogger(session, LoggerFactory.getLogger(clazz));
+        } else {
+            return getLogger(session, (Logger) null);
+        }
     }
 
-    public static void trace(Logger log, IoSession session, Object message) {
-        if (log.isTraceEnabled()) {
-            log.trace("{}{}", getPrefix(session), message);
+    public static IoSessionLogger getLogger(IoSession session, Logger logger) {
+        if (logger == null) {
+            logger = LoggerFactory.getLogger(session.getHandler().getClass());
         }
+
+        IoSessionLogger decoratedLogger = (IoSessionLogger) session.getAttribute(logger);
+        if (decoratedLogger == null) {
+            decoratedLogger = new IoSessionLogger(session, logger);
+            IoSessionLogger newDecoratedLogger =
+                (IoSessionLogger) session.setAttributeIfAbsent(logger, decoratedLogger);
+            if (newDecoratedLogger != null) {
+                decoratedLogger = newDecoratedLogger;
+            }
+        }
+
+        return decoratedLogger;
+    }
+
+    public static boolean isUsePrefix() {
+        return usePrefix;
     }
 
-    public static void trace(IoSession session, String message, Throwable cause) {
-        trace(getLogger(session), session, message, cause);
+    public static void setUsePrefix(boolean usePrefix) {
+        IoSessionLogger.usePrefix = usePrefix;
     }
 
-    public static void trace(Logger log, IoSession session, String message,
-            Throwable cause) {
-        if (log.isTraceEnabled()) {
-            log.trace(getPrefix(session) + message, cause);
+    public static String getPrefix(IoSession session) {
+        String prefix = (String) session.getAttribute(PREFIX);
+        if (prefix == null) {
+            return "";
+        } else {
+            return prefix;
         }
     }
 
-    public static void debug(IoSession session, Object message) {
-        debug(getLogger(session), session, message);
+    public static void setPrefix(IoSession session, String prefix) {
+        if (prefix == null || !usePrefix) {
+            removePrefix(session);
+            return;
+        }
+
+        if (prefix.contains("{}")) {
+            throw new IllegalArgumentException("prefix cannot contain '{}': "
+                    + prefix);
+        }
+
+        session.setAttribute(PREFIX, prefix);
     }
 
-    public static void debug(Logger log, IoSession session, Object message) {
-        if (log.isDebugEnabled()) {
-            log.debug("{}{}", getPrefix(session), message);
+    public static void removePrefix(IoSession session) {
+        session.removeAttribute(PREFIX);
+    }
+
+    private final IoSession session;
+
+    private final Logger logger;
+
+    private IoSessionLogger(IoSession session, Logger logger) {
+        if (session == null) {
+            throw new NullPointerException("session");
+        }
+
+        if (logger == null) {
+            throw new NullPointerException("logger");
+        }
+
+        this.session = session;
+        this.logger = logger;
+
+        // Set the default prefix if not set already.
+        if (usePrefix && session.containsAttribute(PREFIX)) {
+            session.setAttributeIfAbsent(PREFIX, "["
+                    + session.getRemoteAddress() + "] ");
         }
     }
 
-    public static void debug(IoSession session, String message, Throwable cause) {
-        debug(getLogger(session), session, message, cause);
+    public void debug(Marker marker, String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(marker, getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.debug(marker, format, arg1, arg2);
+        }
     }
 
-    public static void debug(Logger log, IoSession session, String message,
-            Throwable cause) {
-        if (log.isDebugEnabled()) {
-            log.debug(getPrefix(session) + message, cause);
+    public void debug(Marker marker, String format, Object arg) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(marker, getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.debug(marker, format, arg);
         }
     }
 
-    public static void info(IoSession session, Object message) {
-        info(getLogger(session), session, message);
+    public void debug(Marker marker, String format, Object[] args) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(marker, getPrefix(session) + format, args);
+            }
+        } else {
+            logger.debug(marker, format, args);
+        }
     }
 
-    public static void info(Logger log, IoSession session, Object message) {
-        if (log.isInfoEnabled()) {
-            log.info("{}{}", getPrefix(session), message);
+    public void debug(Marker marker, String msg, Throwable t) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(marker, getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.debug(marker, msg, t);
         }
     }
 
-    public static void info(IoSession session, String message, Throwable cause) {
-        info(getLogger(session), session, message, cause);
+    public void debug(Marker marker, String msg) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(marker, getPrefix(session) + msg);
+            }
+        } else {
+            logger.debug(marker, msg);
+        }
     }
 
-    public static void info(Logger log, IoSession session, String message,
-            Throwable cause) {
-        if (log.isInfoEnabled()) {
-            log.info(getPrefix(session) + message, cause);
+    public void debug(String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.debug(format, arg1, arg2);
         }
     }
 
-    public static void warn(IoSession session, Object message) {
-        warn(getLogger(session), session, message);
+    public void debug(String format, Object arg) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.debug(format, arg);
+        }
     }
 
-    public static void warn(Logger log, IoSession session, Object message) {
-        if (log.isWarnEnabled()) {
-            log.warn("{}{}", getPrefix(session), message);
+    public void debug(String format, Object[] args) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(getPrefix(session) + format, args);
+            }
+        } else {
+            logger.debug(format, args);
         }
     }
 
-    public static void warn(IoSession session, Throwable cause) {
-        warn(session, "Unexpected exception.", cause);
+    public void debug(String msg, Throwable t) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.debug(msg, t);
+        }
     }
 
-    public static void warn(IoSession session, String message, Throwable cause) {
-        warn(getLogger(session), session, message, cause);
+    public void debug(Throwable t) {
+        debug(UNEXPECTED_EXCEPTION, t);
     }
 
-    public static void warn(Logger log, IoSession session, String message,
-            Throwable cause) {
-        if (log.isWarnEnabled()) {
-            log.warn(getPrefix(session) + message, cause);
+    public void debug(String msg) {
+        if (usePrefix) {
+            if (isDebugEnabled()) {
+                logger.debug(getPrefix(session) + msg);
+            }
+        } else {
+            logger.debug(msg);
         }
     }
 
-    public static void error(IoSession session, Object message) {
-        error(getLogger(session), session, message);
+    public void error(Marker marker, String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(marker, getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.error(marker, format, arg1, arg2);
+        }
     }
 
-    public static void error(Logger log, IoSession session, Object message) {
-        if (log.isErrorEnabled()) {
-            log.error("{}{}", getPrefix(session), message);
+    public void error(Marker marker, String format, Object arg) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(marker, getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.error(marker, format, arg);
         }
     }
 
-    public static void error(IoSession session, Throwable cause) {
-        error(session, "Unexpected exception.", cause);
+    public void error(Marker marker, String format, Object[] args) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(marker, getPrefix(session) + format, args);
+            }
+        } else {
+            logger.error(marker, format, args);
+        }
     }
 
-    public static void error(IoSession session, String message, Throwable cause) {
-        error(getLogger(session), session, message, cause);
+    public void error(Marker marker, String msg, Throwable t) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(marker, getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.error(marker, msg, t);
+        }
     }
 
-    public static void error(Logger log, IoSession session, String message,
-            Throwable cause) {
-        if (log.isErrorEnabled()) {
-            log.error(getPrefix(session) + message, cause);
+    public void error(Marker marker, String msg) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(marker, getPrefix(session) + msg);
+            }
+        } else {
+            logger.error(marker, msg);
         }
     }
 
-    public static boolean isDebugEnabled(IoSession session) {
-        return getLogger(session).isDebugEnabled();
+    public void error(String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.error(format, arg1, arg2);
+        }
     }
 
-    public static boolean isInfoEnabled(IoSession session) {
-        return getLogger(session).isInfoEnabled();
+    public void error(String format, Object arg) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.error(format, arg);
+        }
     }
 
-    public static boolean isWarnEnabled(IoSession session) {
-        return getLogger(session).isWarnEnabled();
+    public void error(String format, Object[] args) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(getPrefix(session) + format, args);
+            }
+        } else {
+            logger.error(format, args);
+        }
     }
 
-    public static boolean isErrorEnabled(IoSession session) {
-        return getLogger(session).isErrorEnabled();
+    public void error(String msg, Throwable t) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.error(msg, t);
+        }
     }
 
-    public static String getPrefix(IoSession session) {
-        String prefix = (String) session.getAttribute(PREFIX);
-        if (prefix == null) {
-            prefix = "[" + session.getRemoteAddress() + "] ";
-            setPrefix(session, prefix);
+    public void error(Throwable t) {
+        error(UNEXPECTED_EXCEPTION, t);
+    }
+
+    public void error(String msg) {
+        if (usePrefix) {
+            if (isErrorEnabled()) {
+                logger.error(getPrefix(session) + msg);
+            }
+        } else {
+            logger.error(msg);
         }
-        return prefix;
     }
 
-    public static void setPrefix(IoSession session, String prefix) {
-        session.setAttribute(PREFIX, prefix);
+    public String getName() {
+        return logger.getName();
+    }
+
+    public void info(Marker marker, String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(marker, getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.info(marker, format, arg1, arg2);
+        }
+    }
+
+    public void info(Marker marker, String format, Object arg) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(marker, getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.info(marker, format, arg);
+        }
+    }
+
+    public void info(Marker marker, String format, Object[] args) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(marker, getPrefix(session) + format, args);
+            }
+        } else {
+            logger.info(marker, format, args);
+        }
+    }
+
+    public void info(Marker marker, String msg, Throwable t) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(marker, getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.info(marker, msg, t);
+        }
+    }
+
+    public void info(Marker marker, String msg) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(marker, getPrefix(session) + msg);
+            }
+        } else {
+            logger.info(marker, msg);
+        }
+    }
+
+    public void info(String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.info(format, arg1, arg2);
+        }
+    }
+
+    public void info(String format, Object arg) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.info(format, arg);
+        }
+    }
+
+    public void info(String format, Object[] args) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(getPrefix(session) + format, args);
+            }
+        } else {
+            logger.info(format, args);
+        }
+    }
+
+    public void info(String msg, Throwable t) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.info(msg, t);
+        }
+    }
+
+    public void info(Throwable t) {
+        info(UNEXPECTED_EXCEPTION, t);
+    }
+
+    public void info(String msg) {
+        if (usePrefix) {
+            if (isInfoEnabled()) {
+                logger.info(getPrefix(session) + msg);
+            }
+        } else {
+            logger.info(msg);
+        }
+    }
+
+    public boolean isDebugEnabled() {
+        return logger.isDebugEnabled();
+    }
+
+    public boolean isDebugEnabled(Marker marker) {
+        return logger.isDebugEnabled(marker);
+    }
+
+    public boolean isErrorEnabled() {
+        return logger.isErrorEnabled();
+    }
+
+    public boolean isErrorEnabled(Marker marker) {
+        return logger.isErrorEnabled(marker);
+    }
+
+    public boolean isInfoEnabled() {
+        return logger.isInfoEnabled();
+    }
+
+    public boolean isInfoEnabled(Marker marker) {
+        return logger.isInfoEnabled(marker);
+    }
+
+    public boolean isTraceEnabled() {
+        return logger.isTraceEnabled();
+    }
+
+    public boolean isTraceEnabled(Marker marker) {
+        return logger.isTraceEnabled(marker);
+    }
+
+    public boolean isWarnEnabled() {
+        return logger.isWarnEnabled();
+    }
+
+    public boolean isWarnEnabled(Marker marker) {
+        return logger.isWarnEnabled(marker);
+    }
+
+    public void trace(Marker marker, String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(marker, getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.trace(marker, format, arg1, arg2);
+        }
+    }
+
+    public void trace(Marker marker, String format, Object arg) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(marker, getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.trace(marker, format, arg);
+        }
+    }
+
+    public void trace(Marker marker, String format, Object[] args) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(marker, getPrefix(session) + format, args);
+            }
+        } else {
+            logger.trace(marker, format, args);
+        }
+    }
+
+    public void trace(Marker marker, String msg, Throwable t) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(marker, getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.trace(marker, msg, t);
+        }
+    }
+
+    public void trace(Marker marker, String msg) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(marker, getPrefix(session) + msg);
+            }
+        } else {
+            logger.trace(marker, msg);
+        }
+    }
+
+    public void trace(String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.trace(format, arg1, arg2);
+        }
+    }
+
+    public void trace(String format, Object arg) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.trace(format, arg);
+        }
+    }
+
+    public void trace(String format, Object[] args) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(getPrefix(session) + format, args);
+            }
+        } else {
+            logger.trace(format, args);
+        }
+    }
+
+    public void trace(String msg, Throwable t) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.trace(msg, t);
+        }
+    }
+
+    public void trace(Throwable t) {
+        trace(UNEXPECTED_EXCEPTION, t);
+    }
+
+    public void trace(String msg) {
+        if (usePrefix) {
+            if (isTraceEnabled()) {
+                logger.trace(getPrefix(session) + msg);
+            }
+        } else {
+            logger.trace(msg);
+        }
+    }
+
+    public void warn(Marker marker, String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(marker, getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.warn(marker, format, arg1, arg2);
+        }
+    }
+
+    public void warn(Marker marker, String format, Object arg) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(marker, getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.warn(marker, format, arg);
+        }
+    }
+
+    public void warn(Marker marker, String format, Object[] args) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(marker, getPrefix(session) + format, args);
+            }
+        } else {
+            logger.warn(marker, format, args);
+        }
+    }
+
+    public void warn(Marker marker, String msg, Throwable t) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(marker, getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.warn(marker, msg, t);
+        }
+    }
+
+    public void warn(Marker marker, String msg) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(marker, getPrefix(session) + msg);
+            }
+        } else {
+            logger.warn(marker, msg);
+        }
+    }
+
+    public void warn(String format, Object arg1, Object arg2) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(getPrefix(session) + format, arg1, arg2);
+            }
+        } else {
+            logger.warn(format, arg1, arg2);
+        }
+    }
+
+    public void warn(String format, Object arg) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(getPrefix(session) + format, arg);
+            }
+        } else {
+            logger.warn(format, arg);
+        }
+    }
+
+    public void warn(String format, Object[] args) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(getPrefix(session) + format, args);
+            }
+        } else {
+            logger.warn(format, args);
+        }
+    }
+
+    public void warn(String msg, Throwable t) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(getPrefix(session) + msg, t);
+            }
+        } else {
+            logger.warn(msg, t);
+        }
+    }
+
+    public void warn(Throwable t) {
+        warn(UNEXPECTED_EXCEPTION, t);
     }
 
-    public static Logger getLogger(IoSession session) {
-        Logger log = (Logger) session.getAttribute(LOGGER);
-        if (log == null) {
-            log = LoggerFactory.getLogger(getClass(session).getName() + "."
-                    + IoSessionLogger.class.getSimpleName());
-            setLogger(session, log);
+    public void warn(String msg) {
+        if (usePrefix) {
+            if (isWarnEnabled()) {
+                logger.warn(getPrefix(session) + msg);
+            }
+        } else {
+            logger.warn(msg);
         }
-        return log;
     }
 
-    public static void setLogger(IoSession session, Logger log) {
-        session.setAttribute(LOGGER, log);
+    @Override
+    public String toString() {
+        return logger.toString();
     }
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java Thu Oct 25 02:28:40 2007
@@ -19,8 +19,8 @@
  */
 package org.apache.mina.filter.codec;
 
-import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.AttributeKey;
+import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.IoSession;
 
 /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Thu Oct 25 02:28:40 2007
@@ -22,10 +22,10 @@
 import java.net.SocketAddress;
 import java.util.Queue;
 
-import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.AttributeKey;
 import org.apache.mina.common.DefaultWriteFuture;
 import org.apache.mina.common.DefaultWriteRequest;
-import org.apache.mina.common.AttributeKey;
+import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.IoFilter;
 import org.apache.mina.common.IoFilterAdapter;
 import org.apache.mina.common.IoFilterChain;
@@ -120,15 +120,15 @@
             }
         };
     }
-    
+
     public ProtocolEncoder getEncoder(IoSession session) {
         return (ProtocolEncoder) session.getAttribute(ENCODER);
     }
-    
+
     public ProtocolDecoder getDecoder(IoSession session) {
         return (ProtocolDecoder) session.getAttribute(DECODER);
     }
-    
+
     @Override
     public void onPreAdd(IoFilterChain parent, String name,
             NextFilter nextFilter) throws Exception {
@@ -175,11 +175,11 @@
                     pde = new ProtocolDecoderException(t);
                 }
                 pde.setHexdump(in.getHexDump());
-                
+
                 // Fire the exceptionCaught event.
                 decoderOut.flush();
                 nextFilter.exceptionCaught(session, pde);
-                
+
                 // Stop retrying if the buffer position didn't change
                 // because retrying will cause an infinite loop.
                 if (in.position() == oldPos) {
@@ -306,8 +306,8 @@
         try {
             encoder.dispose(session);
         } catch (Throwable t) {
-            IoSessionLogger.warn(session, "Failed to dispose: "
-                    + encoder.getClass().getName() + " (" + encoder + ')');
+            IoSessionLogger.getLogger(session, getClass()).warn(
+                    "Failed to dispose: " + encoder.getClass().getName() + " (" + encoder + ')');
         }
     }
 
@@ -321,8 +321,8 @@
         try {
             decoder.dispose(session);
         } catch (Throwable t) {
-            IoSessionLogger.warn(session, "Falied to dispose: "
-                    + decoder.getClass().getName() + " (" + decoder + ')');
+            IoSessionLogger.getLogger(session, getClass()).warn(
+                    "Falied to dispose: " + decoder.getClass().getName() + " (" + decoder + ')');
         }
     }
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java Thu Oct 25 02:28:40 2007
@@ -21,9 +21,9 @@
 
 import java.util.Queue;
 
-import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.DefaultWriteFuture;
 import org.apache.mina.common.DummySession;
+import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.WriteFuture;
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java Thu Oct 25 02:28:40 2007
@@ -6,16 +6,16 @@
  *  to you under the Apache License, Version 2.0 (the
  *  "License"); you may not use this file except in compliance
  *  with the License.  You may obtain a copy of the License at
- *  
+ *
  *    http://www.apache.org/licenses/LICENSE-2.0
- *  
+ *
  *  Unless required by applicable law or agreed to in writing,
  *  software distributed under the License is distributed on an
  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  *  KIND, either express or implied.  See the License for the
  *  specific language governing permissions and limitations
- *  under the License. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.mina.filter.codec.textline;
 
@@ -32,7 +32,7 @@
 
 /**
  * A {@link ProtocolDecoder} which decodes a text line into a string.
- * 
+ *
  * @author The Apache Directory Project (mina-dev@directory.apache.org)
  * @version $Rev$, $Date$,
  */
@@ -140,7 +140,7 @@
             throws CharacterCodingException {
 
         int matchCount = ctx.getMatchCount();
-        
+
         // Try to find a match
         int oldPos = in.position();
         int oldLimit = in.limit();
@@ -205,7 +205,7 @@
             throws CharacterCodingException {
 
         int matchCount = ctx.getMatchCount();
-        
+
         // Convert delimiter to ByteBuffer if not done yet.
         if (delimBuf == null) {
             IoBuffer tmp = IoBuffer.allocate(2).setAutoExpand(true);
@@ -228,7 +228,7 @@
                     in.position(oldPos);
 
                     ctx.append(in);
-                    
+
                     in.limit(oldLimit);
                     in.position(pos);
                     if (ctx.getOverflowPosition() == 0) {
@@ -280,11 +280,11 @@
         public IoBuffer getBuffer() {
             return buf;
         }
-        
+
         public int getOverflowPosition() {
             return overflowPosition;
         }
-        
+
         public int getMatchCount() {
             return matchCount;
         }
@@ -292,13 +292,13 @@
         public void setMatchCount(int matchCount) {
             this.matchCount = matchCount;
         }
-        
+
         public void reset() {
             overflowPosition = 0;
             matchCount = 0;
             decoder.reset();
         }
-        
+
         public void append(IoBuffer in) {
             if (overflowPosition != 0) {
                 discard(in);

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java Thu Oct 25 02:28:40 2007
@@ -22,8 +22,8 @@
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
 
-import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.AttributeKey;
+import org.apache.mina.common.IoBuffer;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.filter.codec.ProtocolEncoder;
 import org.apache.mina.filter.codec.ProtocolEncoderAdapter;

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java Thu Oct 25 02:28:40 2007
@@ -108,7 +108,7 @@
             getExecutor().execute(new ProcessEventsRunnable(buf));
         }
     }
-    
+
     private SessionBuffer getSessionBuffer(IoSession session) {
         synchronized (session) {
             SessionBuffer buf = (SessionBuffer) session.getAttribute(BUFFER);

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/BlacklistFilter.java Thu Oct 25 02:28:40 2007
@@ -180,7 +180,7 @@
     }
 
     private void blockSession(IoSession session) {
-        IoSessionLogger.info(session, "Remote address in the blacklist; closing.");
+        IoSessionLogger.getLogger(session, getClass()).warn("Remote address in the blacklist; closing.");
         session.close();
     }
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java Thu Oct 25 02:28:40 2007
@@ -92,17 +92,17 @@
             long now = System.currentTimeMillis();
 
             if (clients.containsKey(addr.getAddress().getHostAddress())) {
-                
-                IoSessionLogger.info(session, "This is not a new client");
+
+                IoSessionLogger.getLogger(session, getClass()).debug("This is not a new client");
                 Long lastConnTime = clients.get(addr.getAddress()
                         .getHostAddress());
 
                 clients.put(addr.getAddress().getHostAddress(), now);
-                
+
                 // if the interval between now and the last connection is
                 // less than the allowed interval, return false
                 if (now - lastConnTime < allowedInterval) {
-                    IoSessionLogger.error(session,
+                    IoSessionLogger.getLogger(session, getClass()).warn(
                             "Session connection interval too short");
                     return false;
                 } else {
@@ -121,8 +121,8 @@
     public void sessionCreated(NextFilter nextFilter, IoSession session)
             throws Exception {
         if (!isConnectionOk(session)) {
-            IoSessionLogger
-                    .info(session, "Connections coming in too fast; closing.");
+            IoSessionLogger.getLogger(session, getClass()).warn(
+                    "Connections coming in too fast; closing.");
             session.close();
         }
     }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/AbstractKeepAliveFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/AbstractKeepAliveFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/AbstractKeepAliveFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/AbstractKeepAliveFilter.java Thu Oct 25 02:28:40 2007
@@ -5,7 +5,7 @@
 /**
  * Abstract superclass for KeepAliveFilters.
  * Implements a few common variables and constructors.
- * 
+ *
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
  */

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/ActiveKeepAliveFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/ActiveKeepAliveFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/ActiveKeepAliveFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/ActiveKeepAliveFilter.java Thu Oct 25 02:28:40 2007
@@ -12,13 +12,13 @@
  * and filter keepalive responses. If no responses are received
  * in a specified timeframe, the filter will close the IoSession.
  * This filter has state information so it should not be shared by
- * multiple connections.  
- * 
+ * multiple connections.
+ *
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
- * 
+ *
  * FIXME: Convert to IoFilter
- * 
+ *
  * @see org.apache.mina.handler.chain.ChainedIoHandler
  */
 public class ActiveKeepAliveFilter extends AbstractKeepAliveFilter {
@@ -70,8 +70,9 @@
     private Runnable createUpdateTask() {
         return new Runnable() {
             public void run() {
-                if (session.isClosing())
+                if (session.isClosing()) {
                     return;
+                }
                 final long currentTime = System.currentTimeMillis();
 
                 // check whether to break connection
@@ -98,8 +99,9 @@
                 }
 
                 // schedule next update
-                if (delayToBreak < delayToPing)
+                if (delayToBreak < delayToPing) {
                     delayToPing = delayToBreak;
+                }
                 scheduler.schedule(this, delayToPing, TimeUnit.MILLISECONDS);
             }
         };
@@ -112,11 +114,13 @@
     public void execute(NextCommand next, IoSession session, Object message)
             throws Exception {
         if (pongMessage.equals(message)) {
-            if (logger.isDebugEnabled())
+            if (logger.isDebugEnabled()) {
                 logger.debug("Received pong message from "
                         + session.getRemoteAddress());
+            }
             lastResponseTime = System.currentTimeMillis();
-        } else
+        } else {
             next.execute(session, message);
+        }
     }
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilterFactory.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilterFactory.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilterFactory.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilterFactory.java Thu Oct 25 02:28:40 2007
@@ -8,10 +8,10 @@
  * A factory that creates protocol level filters, that implement
  * a simple keepalive routine for the connection. The factory has
  * "settings" so it is not safe to be used by concurrent threads.
- * 
+ *
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
- * 
+ *
  * @see org.apache.mina.handler.chain.ChainedIoHandler
  */
 public class KeepAliveFilterFactory {
@@ -47,19 +47,22 @@
     }
 
     public void setScheduler(ScheduledExecutorService scheduler) {
-        if (scheduler != null)
+        if (scheduler != null) {
             this.scheduler = scheduler;
+        }
     }
 
     public void setPingMessage(Object pingMessage) {
-        if (this.pingMessage != pingMessage)
+        if (this.pingMessage != pingMessage) {
             cache = null;
+        }
         this.pingMessage = pingMessage;
     }
 
     public void setPongMessage(Object pongMessage) {
-        if (this.pongMessage != pongMessage)
+        if (this.pongMessage != pongMessage) {
             cache = null;
+        }
         this.pongMessage = pongMessage;
     }
 
@@ -75,7 +78,7 @@
      * Creates a new ActiveKeepAliveFilter for the IoSession
      * <code>session</code>.
      * @param session Iosession of the connection.
-     * @return new ActiveKeepAliveFilter for <code>session</code>. 
+     * @return new ActiveKeepAliveFilter for <code>session</code>.
      */
     public ActiveKeepAliveFilter createActiveKeepAliveFilter(IoSession session) {
         return new ActiveKeepAliveFilter(session, scheduler, pingingInterval,
@@ -86,8 +89,9 @@
      * @return a PassiveKeepAliveFilter.
      */
     public PassiveKeepAliveFilter createPassiveKeepAliveFilter() {
-        if (cache == null)
+        if (cache == null) {
             cache = new PassiveKeepAliveFilter(pingMessage, pongMessage);
+        }
         return cache;
     }
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/PassiveKeepAliveFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/PassiveKeepAliveFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/PassiveKeepAliveFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/PassiveKeepAliveFilter.java Thu Oct 25 02:28:40 2007
@@ -7,8 +7,8 @@
 /**
  * A protocol level filter which filters keepalive messages and sends
  * keepalive responses. This class is stateless and may be shared by
- * several connections. 
- * 
+ * several connections.
+ *
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
  */
@@ -34,15 +34,17 @@
     /**
      * If <code>pingMessage</code> equals <code>message</code>  ,
      * reply with <code>pongMessage</code>. Otherwise forward to
-     * <code>next</code>.  
+     * <code>next</code>.
      */
     public void execute(NextCommand next, IoSession session, Object message)
             throws Exception {
         if (pingMessage.equals(message)) {
-            if (logger.isDebugEnabled())
+            if (logger.isDebugEnabled()) {
                 logger.debug("Replying PONG");
+            }
             session.write(pongMessage);
-        } else
+        } else {
             next.execute(session, message);
+        }
     }
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java?rev=588178&r1=588177&r2=588178&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java Thu Oct 25 02:28:40 2007
@@ -28,6 +28,8 @@
 import org.apache.mina.common.IoSessionLogger;
 import org.apache.mina.common.WriteRequest;
 import org.apache.mina.util.CopyOnWriteMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Logs all MINA protocol events using the {@link IoSessionLogger}.  Each event can be
@@ -48,11 +50,11 @@
      */
     public static final LogLevel NONE = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
+        void log(IoSession session, Logger logger, String message) {
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
         }
 
         @Override
@@ -66,13 +68,13 @@
      */
     public static final LogLevel TRACE = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
-            IoSessionLogger.trace(session, message);
+        void log(IoSession session, Logger logger, String message) {
+            IoSessionLogger.getLogger(session, logger).trace(message);
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
-            IoSessionLogger.trace(session, message, cause);
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
+            IoSessionLogger.getLogger(session, logger).trace(message, cause);
         }
 
         @Override
@@ -86,13 +88,13 @@
      */
     public static final LogLevel DEBUG = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
-            IoSessionLogger.debug(session, message);
+        void log(IoSession session, Logger logger, String message) {
+            IoSessionLogger.getLogger(session, logger).debug(message);
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
-            IoSessionLogger.debug(session, message, cause);
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
+            IoSessionLogger.getLogger(session, logger).debug(message, cause);
         }
 
         @Override
@@ -106,13 +108,13 @@
      */
     public static final LogLevel INFO = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
-            IoSessionLogger.info(session, message);
+        void log(IoSession session, Logger logger, String message) {
+            IoSessionLogger.getLogger(session, logger).info(message);
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
-            IoSessionLogger.info(session, message, cause);
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
+            IoSessionLogger.getLogger(session, logger).info(message, cause);
         }
 
         @Override
@@ -126,13 +128,13 @@
      */
     public static final LogLevel WARN = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
-            IoSessionLogger.warn(session, message);
+        void log(IoSession session, Logger logger, String message) {
+            IoSessionLogger.getLogger(session, logger).warn(message);
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
-            IoSessionLogger.warn(session, message, cause);
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
+            IoSessionLogger.getLogger(session, logger).warn(message, cause);
         }
 
         @Override
@@ -146,13 +148,13 @@
      */
     public static final LogLevel ERROR = new LogLevel() {
         @Override
-        void log(IoSession session, String message) {
-            IoSessionLogger.error(session, message);
+        void log(IoSession session, Logger logger, String message) {
+            IoSessionLogger.getLogger(session, logger).error(message);
         }
 
         @Override
-        void log(IoSession session, String message, Throwable cause) {
-            IoSessionLogger.error(session, message, cause);
+        void log(IoSession session, Logger logger, String message, Throwable cause) {
+            IoSessionLogger.getLogger(session, logger).error(message, cause);
         }
 
         @Override
@@ -162,11 +164,29 @@
     };
 
     private final Map<IoEventType, LogLevel> logSettings = new CopyOnWriteMap<IoEventType, LogLevel>();
+    private final String name;
+    private final Logger logger;
 
     /**
      * Default Constructor.
      */
     public LoggingFilter() {
+        this((String) null);
+    }
+
+    public LoggingFilter(Class<?> clazz) {
+        this(clazz.getName());
+    }
+
+    public LoggingFilter(String name) {
+        this.name = name;
+
+        if (name != null) {
+            this.logger = LoggerFactory.getLogger(name);
+        } else {
+            this.logger = null;
+        }
+
         // Exceptions will be logged to WARN as default.
         setLogLevel(IoEventType.EXCEPTION_CAUGHT, WARN);
         setLogLevel(IoEventType.MESSAGE_RECEIVED, INFO);
@@ -177,55 +197,59 @@
         setLogLevel(IoEventType.SESSION_OPENED, INFO);
     }
 
+    public String getName() {
+        return name;
+    }
+
     @Override
     public void exceptionCaught(NextFilter nextFilter, IoSession session,
             Throwable cause) throws Exception {
-        getLogLevel(IoEventType.EXCEPTION_CAUGHT).log(session, "EXCEPTION: ",
-                cause);
+        getLogLevel(IoEventType.EXCEPTION_CAUGHT).log(
+                session, logger, "EXCEPTION: ", cause);
         nextFilter.exceptionCaught(session, cause);
     }
 
     @Override
     public void messageReceived(NextFilter nextFilter, IoSession session,
             Object message) throws Exception {
-        getLogLevel(IoEventType.MESSAGE_RECEIVED).log(session,
-                "RECEIVED: " + message);
+        getLogLevel(IoEventType.MESSAGE_RECEIVED).log(
+                session, logger, "RECEIVED: " + message);
         nextFilter.messageReceived(session, message);
     }
 
     @Override
     public void messageSent(NextFilter nextFilter, IoSession session,
             WriteRequest writeRequest) throws Exception {
-        getLogLevel(IoEventType.MESSAGE_SENT).log(session,
-                "SENT: " + writeRequest.getMessage());
+        getLogLevel(IoEventType.MESSAGE_SENT).log(
+                session, logger, "SENT: " + writeRequest.getMessage());
         nextFilter.messageSent(session, writeRequest);
     }
 
     @Override
     public void sessionClosed(NextFilter nextFilter, IoSession session)
             throws Exception {
-        getLogLevel(IoEventType.SESSION_CLOSED).log(session, "CLOSED");
+        getLogLevel(IoEventType.SESSION_CLOSED).log(session, logger, "CLOSED");
         nextFilter.sessionClosed(session);
     }
 
     @Override
     public void sessionCreated(NextFilter nextFilter, IoSession session)
             throws Exception {
-        getLogLevel(IoEventType.SESSION_CREATED).log(session, "CREATED");
+        getLogLevel(IoEventType.SESSION_CREATED).log(session, logger, "CREATED");
         nextFilter.sessionCreated(session);
     }
 
     @Override
     public void sessionIdle(NextFilter nextFilter, IoSession session,
             IdleStatus status) throws Exception {
-        getLogLevel(IoEventType.SESSION_IDLE).log(session, "IDLE: " + status);
+        getLogLevel(IoEventType.SESSION_IDLE).log(session, logger, "IDLE: " + status);
         nextFilter.sessionIdle(session, status);
     }
 
     @Override
     public void sessionOpened(NextFilter nextFilter, IoSession session)
             throws Exception {
-        getLogLevel(IoEventType.SESSION_OPENED).log(session, "OPENED");
+        getLogLevel(IoEventType.SESSION_OPENED).log(session, logger, "OPENED");
         nextFilter.sessionOpened(session);
     }
 
@@ -416,8 +440,8 @@
         private LogLevel() {
         }
 
-        abstract void log(IoSession session, String message);
+        abstract void log(IoSession session, Logger logger, String message);
 
-        abstract void log(IoSession session, String message, Throwable cause);
+        abstract void log(IoSession session, Logger logger, String message, Throwable cause);
     }
 }