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]