Author: bago
Date: Wed Nov 15 06:55:48 2006
New Revision: 475252

URL: http://svn.apache.org/viewvc?view=rev&rev=475252
Log:
Configure loggers and fix for status command (JAMES-689)
Applied patch by Robert Burrell Donkin (I just fixed tests to provide mock 
loggers)
I kept the DEBUG for mailbox manager and imapserver as default, as it is 
experimental and it is better to have debug by default.

Modified:
    james/server/trunk/src/java/org/apache/james/imapserver/ImapHandler.java
    
james/server/trunk/src/java/org/apache/james/imapserver/ImapRequestHandler.java
    james/server/trunk/src/java/org/apache/james/imapserver/ImapResponse.java
    james/server/trunk/src/java/org/apache/james/imapserver/ImapServer.java
    
james/server/trunk/src/java/org/apache/james/imapserver/commands/ImapCommandFactory.java
    
james/server/trunk/src/java/org/apache/james/imapserver/commands/StatusCommand.java
    
james/server/trunk/src/test/org/apache/james/imapserver/handler/commands/AbstractCommandTest.java
    
james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/ImapHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/ImapHandler.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- james/server/trunk/src/java/org/apache/james/imapserver/ImapHandler.java 
(original)
+++ james/server/trunk/src/java/org/apache/james/imapserver/ImapHandler.java 
Wed Nov 15 06:55:48 2006
@@ -34,6 +34,7 @@
 import org.apache.avalon.excalibur.pool.Poolable;
 import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.james.Constants;
 import org.apache.james.imapserver.debug.CopyInputStream;
 import org.apache.james.imapserver.debug.SplitOutputStream;
@@ -53,7 +54,7 @@
 {
 
     private String softwaretype = "JAMES IMAP4rev1 Server " + 
Constants.SOFTWARE_VERSION;
-    private ImapRequestHandler requestHandler = new ImapRequestHandler();
+    private final ImapRequestHandler requestHandler = new ImapRequestHandler();
     private ImapSession session;
 
     /**
@@ -104,6 +105,14 @@
     
     private boolean handlerIsUp=false;
 
+    /**
+     * @see 
org.apache.avalon.framework.logger.AbstractLogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging(Logger logger) { 
+        super.enableLogging(logger); 
+        setupLogger(requestHandler); 
+    }
+    
     /**
      * Set the configuration data for the handler.
      *

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/ImapRequestHandler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/ImapRequestHandler.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/imapserver/ImapRequestHandler.java 
(original)
+++ 
james/server/trunk/src/java/org/apache/james/imapserver/ImapRequestHandler.java 
Wed Nov 15 06:55:48 2006
@@ -22,6 +22,8 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.james.imapserver.commands.CommandParser;
 import org.apache.james.imapserver.commands.ImapCommand;
 import org.apache.james.imapserver.commands.ImapCommandFactory;
@@ -29,13 +31,21 @@
 /**
  * @version $Revision: 109034 $
  */
-public final class ImapRequestHandler
-{
-    private ImapCommandFactory imapCommands = new ImapCommandFactory();
+public final class ImapRequestHandler extends AbstractLogEnabled {
+    
+    private final ImapCommandFactory imapCommands = new ImapCommandFactory();
     private CommandParser parser = new CommandParser();
     private static final String REQUEST_SYNTAX = "Protocol Error: Was 
expecting <tag SPACE command [arguments]>";
 
     /**
+     * @see 
org.apache.avalon.framework.logger.AbstractLogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging(Logger logger) { 
+        super.enableLogging(logger);
+        setupLogger(imapCommands);
+    }
+    
+    /**
      * This method parses POP3 commands read off the wire in handleConnection.
      * Actual processing of the command (possibly including additional back and
      * forth communication with the client) is delegated to one of a number of
@@ -59,6 +69,7 @@
         }
 
         ImapResponse response = new ImapResponse( output );
+        response.enableLogging(getLogger()); 
 
         doProcessRequest( request, response, session );
 
@@ -84,7 +95,11 @@
             return;
         }
 
-//        System.out.println( "Got <tag>: " + tag );
+        final Logger logger = getLogger(); 
+        if (logger.isDebugEnabled()) { 
+            logger.debug( "Got <tag>: " + tag );
+        }
+        
         response.setTag( tag );
         try {
             commandName = parser.atom( request );
@@ -94,7 +109,10 @@
             return;
         }
 
-//        System.out.println( "Got <command>: " + commandName );
+        if (logger.isDebugEnabled()) { 
+            logger.debug( "Got <command>: " + commandName); 
+        }
+        
         ImapCommand command = imapCommands.getCommand( commandName );
         if ( command == null )
         {

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/ImapResponse.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/ImapResponse.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- james/server/trunk/src/java/org/apache/james/imapserver/ImapResponse.java 
(original)
+++ james/server/trunk/src/java/org/apache/james/imapserver/ImapResponse.java 
Wed Nov 15 06:55:48 2006
@@ -24,6 +24,8 @@
 
 import javax.mail.Flags;
 
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.james.imapserver.commands.ImapCommand;
 import org.apache.james.imapserver.store.MessageFlags;
 import org.apache.james.util.InternetPrintWriter;
@@ -32,8 +34,8 @@
  * Class providing methods to send response messages from the server
  * to the client.
  */
-public class ImapResponse implements ImapConstants
-{
+public class ImapResponse  extends AbstractLogEnabled implements ImapConstants 
{
+    
     private PrintWriter writer;
     private String tag = UNTAGGED;
 
@@ -113,6 +115,10 @@
         message( "failed." );
         message( reason );
         end();
+        final Logger logger = getLogger();
+        if (logger.isInfoEnabled()) {
+            logger.info("COMMAND FAILED [" + responseCode + "] - " + reason);
+        }
     }
 
     /**
@@ -129,6 +135,10 @@
         message( BAD );
         message( message );
         end();
+        final Logger logger = getLogger();
+        if (logger.isInfoEnabled()) {
+            logger.info("ERROR - " + message); 
+        }
     }
 
     /**
@@ -140,6 +150,10 @@
         message( BAD );
         message( message );
         end();
+        final Logger logger = getLogger(); 
+        if (logger.isInfoEnabled()) { 
+            logger.info("BAD - " + message); 
+        }
     }
 
     /**

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/ImapServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/ImapServer.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- james/server/trunk/src/java/org/apache/james/imapserver/ImapServer.java 
(original)
+++ james/server/trunk/src/java/org/apache/james/imapserver/ImapServer.java Wed 
Nov 15 06:55:48 2006
@@ -21,11 +21,11 @@
 
 import org.apache.avalon.cornerstone.services.connection.ConnectionHandler;
 import org.apache.avalon.excalibur.pool.ObjectFactory;
-import org.apache.avalon.excalibur.pool.Pool;
 import org.apache.avalon.excalibur.pool.Poolable;
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.james.core.AbstractJamesService;
@@ -173,7 +173,11 @@
          */
         public Object newInstance() throws Exception
         {
-            return new ImapHandler();
+            final ImapHandler imapHandler = new ImapHandler(); 
+            final Logger logger = getLogger(); 
+            logger.debug("Create handler instance"); 
+            setupLogger(imapHandler); 
+            return imapHandler; 
         }
 
         /**

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/commands/ImapCommandFactory.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/commands/ImapCommandFactory.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/imapserver/commands/ImapCommandFactory.java
 (original)
+++ 
james/server/trunk/src/java/org/apache/james/imapserver/commands/ImapCommandFactory.java
 Wed Nov 15 06:55:48 2006
@@ -24,7 +24,7 @@
 
 import org.apache.avalon.framework.CascadingRuntimeException;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 
 /**
  * A factory for ImapCommand instances, provided based on the command name.
@@ -103,10 +103,12 @@
 
     private ImapCommand createCommand( Class commandClass )
     {
+        final Logger logger = getLogger(); 
         try {
             ImapCommand cmd = ( ImapCommand ) commandClass.newInstance();
-            if ( cmd instanceof LogEnabled ) {
-                ( ( LogEnabled ) cmd ).enableLogging( getLogger() );
+            setupLogger(cmd);
+            if (logger.isDebugEnabled()) {
+                logger.debug("Created command " + commandClass); 
             }
             if ( cmd instanceof UidCommand ) {
                 ( ( UidCommand) cmd ).setCommandFactory( this );
@@ -114,6 +116,9 @@
             return cmd;
         }
         catch ( Exception e ) {
+            if (logger.isWarnEnabled()) {
+                logger.warn("Create command instance failed: ", e);
+            }
             throw new CascadingRuntimeException( "Could not create command 
instance: " + commandClass.getName(), e );
         }
     }

Modified: 
james/server/trunk/src/java/org/apache/james/imapserver/commands/StatusCommand.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/imapserver/commands/StatusCommand.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/imapserver/commands/StatusCommand.java
 (original)
+++ 
james/server/trunk/src/java/org/apache/james/imapserver/commands/StatusCommand.java
 Wed Nov 15 06:55:48 2006
@@ -19,6 +19,7 @@
 
 package org.apache.james.imapserver.commands;
 
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.james.imapserver.ImapRequestLineReader;
 import org.apache.james.imapserver.ImapResponse;
 import org.apache.james.imapserver.ImapSession;
@@ -55,12 +56,20 @@
         StatusDataItems statusDataItems = parser.statusDataItems( request );
         parser.endLine( request );
 
-        ImapMailboxSession mailbox = session.getSelected().getMailbox();
+        final Logger logger = getLogger(); 
 
         StringBuffer buffer = new StringBuffer( mailboxName );
         buffer.append( SP );
         buffer.append( "(" );
         try {
+            String fullMailboxName= session.buildFullName(mailboxName);
+            
+            if (logger.isDebugEnabled()) { 
+                logger.debug("Status called on mailbox named " + mailboxName + 
" (" + fullMailboxName + ")"); 
+            }
+            
+            ImapMailboxSession mailbox = 
session.getMailboxManager().getImapMailboxSession(fullMailboxName);
+            
             if (statusDataItems.messages) {
                 buffer.append(MESSAGES);
                 buffer.append(SP);
@@ -98,6 +107,9 @@
                 buffer.append(SP);
             }
         } catch (MailboxManagerException e) {
+            if (logger.isDebugEnabled()) { 
+                logger.debug("STATUS command failed: ", e); 
+            }
             throw new MailboxException(e);
         }
         if ( buffer.charAt( buffer.length() - 1 ) == ' ' ) {

Modified: 
james/server/trunk/src/test/org/apache/james/imapserver/handler/commands/AbstractCommandTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/handler/commands/AbstractCommandTest.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/imapserver/handler/commands/AbstractCommandTest.java
 (original)
+++ 
james/server/trunk/src/test/org/apache/james/imapserver/handler/commands/AbstractCommandTest.java
 Wed Nov 15 06:55:48 2006
@@ -8,6 +8,7 @@
 import org.apache.james.imapserver.ProtocolException;
 import org.apache.james.services.User;
 import org.apache.james.services.UsersRepository;
+import org.apache.james.test.mock.avalon.MockLogger;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 
@@ -21,6 +22,7 @@
 
     public void setUp() {
         handler=new ImapRequestHandler();
+        handler.enableLogging(new MockLogger());
         mockSession = mock ( ImapSession.class);
         mockUsersRepository = mock ( UsersRepository.class );
         mockUser = mock (User.class );

Modified: 
james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java?view=diff&rev=475252&r1=475251&r2=475252
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
 (original)
+++ 
james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
 Wed Nov 15 06:55:48 2006
@@ -56,6 +56,7 @@
 import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
+import org.apache.james.test.mock.avalon.MockLogger;
 import org.jmock.MockObjectTestCase;
 
 public abstract class AbstractSessionTest extends MockObjectTestCase 
implements TestConstants {
@@ -79,6 +80,7 @@
                 theConfigData.getUsersRepository(), new MockImapHandler(),
                 HOST_NAME, HOST_ADDRESS);
         handler = new ImapRequestHandler();
+        handler.enableLogging(new MockLogger());
         
mailboxManager=theConfigData.getMailboxManagerProvider().getMailboxManagerInstance(new
 MockUser());
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to