Index: POP3Handler.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/pop3server/POP3Handler.java,v
retrieving revision 1.14
diff -u -r1.14 POP3Handler.java
--- POP3Handler.java	17 Oct 2002 22:04:00 -0000	1.14
+++ POP3Handler.java	22 Oct 2002 01:41:37 -0000
@@ -34,6 +34,7 @@
 import java.io.*;
 import java.net.Socket;
 import java.util.*;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
 
 /**
  * The handler class for POP3 connections.
@@ -41,9 +42,8 @@
  * @author Federico Barbieri <scoobie@systemy.it>
  * @version 0.9
  */
-public class POP3Handler
-    extends BaseConnectionHandler
-    implements ConnectionHandler, Composable, Configurable, Target {
+public class POP3Handler extends AbstractLogEnabled
+    implements ConnectionHandler, Target {
 
     // POP3 Server identification string used in POP3 headers
     private static final String softwaretype        = "JAMES POP3 Server "
@@ -80,14 +80,14 @@
     /**
      * The internal mail server service
      */
-    private MailServer mailServer;
+    //private MailServer mailServer;
 
     /**
      * The user repository for this server - used to authenticate users.
      */
-    private UsersRepository users;
+    //private UsersRepository users;
 
-    private TimeScheduler scheduler;    // The scheduler used to handle timeouts for the
+    //private TimeScheduler scheduler;    // The scheduler used to handle timeouts for the
                                         // POP3 interaction
 
     /**
@@ -128,13 +128,14 @@
                                                  // emails in the user's inbox at the beginning
                                                  // of the transaction
 
-    private int lengthReset = 20000;         // The number of bytes to read before resetting
+    //private int lengthReset = 20000;         // The number of bytes to read before resetting
                                              // the connection timeout timer.  Defaults to
                                              // 20 seconds.
 
     /**
      * @see org.apache.avalon.framework.component.Composable#compose(ComponentManager)
      */
+/*
     public void compose( final ComponentManager componentManager )
         throws ComponentException {
         mailServer = (MailServer)componentManager.
@@ -145,16 +146,25 @@
         scheduler = (TimeScheduler)componentManager.
             lookup( "org.apache.avalon.cornerstone.services.scheduler.TimeScheduler" );
     }
-
+*/
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
      */
+/*
     public void configure(Configuration configuration)
             throws ConfigurationException {
         super.configure(configuration);
 
         lengthReset = configuration.getChild("lengthReset").getValueAsInteger(20000);
     }
+*/
+    /** contains necessary POP3 Handler input. There is a single POP3
+     * Params for n POP3 Handler */
+    private final POP3HandlerParams params;
+
+    POP3Handler(POP3HandlerParams params) {
+        this.params = params;
+    }
 
     /**
      * @see org.apache.avalon.cornerstone.services.connection.ConnectionHandler#handleConnection(Socket)
@@ -198,21 +208,21 @@
         }
 
         try {
-            final PeriodicTimeTrigger trigger = new PeriodicTimeTrigger( timeout, -1 );
-            scheduler.addTrigger( this.toString(), trigger, this );
+            final PeriodicTimeTrigger trigger = new PeriodicTimeTrigger( params.timeout, -1 );
+            params.scheduler.addTrigger( this.toString(), trigger, this );
             state = AUTHENTICATION_READY;
             user = "unknown";
             StringBuffer responseBuffer =
                 new StringBuffer(256)
                         .append(OK_RESPONSE)
                         .append(" ")
-                        .append(this.helloName)
+                        .append(params.helloName)
                         .append(" POP3 server (")
                         .append(this.softwaretype)
                         .append(") ready ");
             out.println(responseBuffer.toString());
             while (parseCommand(in.readLine())) {
-                scheduler.resetTrigger(this.toString());
+                params.scheduler.resetTrigger(this.toString());
             }
             if (getLogger().isInfoEnabled()) {
                 StringBuffer logBuffer =
@@ -244,7 +254,7 @@
 
             // release from scheduler.
             try {
-                scheduler.removeTrigger(this.toString());
+                params.scheduler.removeTrigger(this.toString());
             } catch(Throwable t) { }
         }
     }
@@ -396,7 +406,7 @@
         String responseString = null;
         if (state == AUTHENTICATION_USERSET && argument != null) {
             String passArg = argument;
-            if (users.test(user, passArg)) {
+            if (params.users.test(user, passArg)) {
                 StringBuffer responseBuffer =
                     new StringBuffer(64)
                             .append(OK_RESPONSE)
@@ -405,7 +415,7 @@
                 responseString = responseBuffer.toString();
                 state = TRANSACTION;
                 out.println(responseString);
-                userInbox = mailServer.getUserInbox(user);
+                userInbox = params.mailServer.getUserInbox(user);
                 stat();
             } else {
                 responseString = ERR_RESPONSE + " Authentication failed.";
@@ -776,8 +786,8 @@
                     out.println(responseString);
                     OutputStream nouts =
                             new ExtraDotOutputStream(
-                            new SchedulerNotifyOutputStream(outs, scheduler,
-                            this.toString(), lengthReset));
+                            new SchedulerNotifyOutputStream(outs, params.scheduler,
+                            this.toString(), params.lengthReset));
                     mc.writeMessageTo(nouts);
                     out.println();
                     out.println(".");
@@ -854,8 +864,8 @@
                     out.println("");
                     OutputStream nouts =
                             new ExtraDotOutputStream(
-                            new SchedulerNotifyOutputStream(outs, scheduler,
-                            this.toString(), lengthReset));
+                            new SchedulerNotifyOutputStream(outs, params.scheduler,
+                            this.toString(), params.lengthReset));
                     mc.writeContentTo(nouts, lines);
                     out.println(".");
                 } else {

