You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by be...@apache.org on 2006/07/08 18:56:28 UTC

svn commit: r420167 - in /james/server/trunk/src/java/org/apache/james: mailrepository/ management/ nntpserver/ pop3server/ remotemanager/

Author: berndf
Date: Sat Jul  8 09:56:27 2006
New Revision: 420167

URL: http://svn.apache.org/viewvc?rev=420167&view=rev
Log:
- add setters for service components (JAMES-494) (ongoing)
- fix javadoc

Modified:
    james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java
    james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
    james/server/trunk/src/java/org/apache/james/mailrepository/MailStoreSpoolRepository.java
    james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java
    james/server/trunk/src/java/org/apache/james/management/UserManagement.java
    james/server/trunk/src/java/org/apache/james/nntpserver/NNTPServer.java
    james/server/trunk/src/java/org/apache/james/pop3server/POP3Server.java
    james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManager.java

Modified: james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java (original)
+++ james/server/trunk/src/java/org/apache/james/mailrepository/AvalonMailRepository.java Sat Jul  8 09:56:27 2006
@@ -67,20 +67,24 @@
     protected final static boolean DEEP_DEBUG = false;
 
     private Lock lock;
-    private Store store;
-    private StreamRepository sr;
-    private ObjectRepository or;
+    private Store store; // variable is not used beyond initialization
+    private StreamRepository streamRepository;
+    private ObjectRepository objectRepository;
     private String destination;
     private Set keys;
     private boolean fifo;
     private boolean cacheKeys; // experimental: for use with write mostly repositories such as spam and error
 
+    private void setStore(Store store) {
+        this.store = store;
+    }
+
     /**
-     * @see org.apache.avalon.framework.service.Serviceable#compose(ServiceManager )
+     * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager )
      */
     public void service( final ServiceManager componentManager )
             throws ServiceException {
-        store = (Store)componentManager.lookup( Store.ROLE );
+        setStore((Store)componentManager.lookup( Store.ROLE ));
     }
 
     /**
@@ -111,36 +115,19 @@
     public void initialize()
             throws Exception {
         try {
-            //prepare Configurations for object and stream repositories
-            DefaultConfiguration objectConfiguration
-                = new DefaultConfiguration( "repository",
-                                            "generated:AvalonFileRepository.compose()" );
-
-            objectConfiguration.setAttribute("destinationURL", destination);
-            objectConfiguration.setAttribute("type", "OBJECT");
-            objectConfiguration.setAttribute("model", "SYNCHRONOUS");
-
-            DefaultConfiguration streamConfiguration
-                = new DefaultConfiguration( "repository",
-                                            "generated:AvalonFileRepository.compose()" );
-
-            streamConfiguration.setAttribute( "destinationURL", destination );
-            streamConfiguration.setAttribute( "type", "STREAM" );
-            streamConfiguration.setAttribute( "model", "SYNCHRONOUS" );
+            objectRepository = (ObjectRepository) selectRepository(store, "OBJECT");
+            streamRepository = (StreamRepository) selectRepository(store, "STREAM");
 
-            sr = (StreamRepository) store.select(streamConfiguration);
-            or = (ObjectRepository) store.select(objectConfiguration);
             lock = new Lock();
             if (cacheKeys) keys = Collections.synchronizedSet(new HashSet());
 
-
             //Finds non-matching pairs and deletes the extra files
             HashSet streamKeys = new HashSet();
-            for (Iterator i = sr.list(); i.hasNext(); ) {
+            for (Iterator i = streamRepository.list(); i.hasNext(); ) {
                 streamKeys.add(i.next());
             }
             HashSet objectKeys = new HashSet();
-            for (Iterator i = or.list(); i.hasNext(); ) {
+            for (Iterator i = objectRepository.list(); i.hasNext(); ) {
                 objectKeys.add(i.next());
             }
 
@@ -162,14 +149,14 @@
                 // Next get a list from the object repository
                 // and use that for the list of keys
                 keys.clear();
-                for (Iterator i = or.list(); i.hasNext(); ) {
+                for (Iterator i = objectRepository.list(); i.hasNext(); ) {
                     keys.add(i.next());
                 }
             }
             if (getLogger().isDebugEnabled()) {
                 StringBuffer logBuffer =
                     new StringBuffer(128)
-                            .append(this.getClass().getName())
+                            .append(getClass().getName())
                             .append(" created in ")
                             .append(destination);
                 getLogger().debug(logBuffer.toString());
@@ -181,6 +168,17 @@
         }
     }
 
+    private Object selectRepository(Store store, String type) throws ServiceException {
+        DefaultConfiguration objectConfiguration
+            = new DefaultConfiguration( "repository",
+                                        "generated:AvalonFileRepository.compose()" );
+
+        objectConfiguration.setAttribute("destinationURL", destination);
+        objectConfiguration.setAttribute("type", type);
+        objectConfiguration.setAttribute("model", "SYNCHRONOUS");
+        return store.select(objectConfiguration);
+    }
+
     /**
      * Releases a lock on a message identified by a key
      *
@@ -296,14 +294,14 @@
                 if (saveStream) {
                     OutputStream out = null;
                     try {
-                        out = sr.put(key);
+                        out = streamRepository.put(key);
                         mc.getMessage().writeTo(out);
                     } finally {
                         if (out != null) out.close();
                     }
                 }
                 //Always save the header information
-                or.put(key, mc);
+                objectRepository.put(key, mc);
             } finally {
                 if (!wasLocked) {
                     // If it wasn't locked, we need to unlock now
@@ -343,7 +341,7 @@
         try {
             Mail mc = null;
             try {
-                mc = (Mail) or.get(key);
+                mc = (Mail) objectRepository.get(key);
             } 
             catch (RuntimeException re){
                 StringBuffer exceptionBuffer = new StringBuffer(128);
@@ -359,7 +357,7 @@
                 getLogger().warn(exceptionBuffer.toString());
                 return null;
             }
-            MimeMessageAvalonSource source = new MimeMessageAvalonSource(sr, destination, key);
+            MimeMessageAvalonSource source = new MimeMessageAvalonSource(streamRepository, destination, key);
             mc.setMessage(new MimeMessageCopyOnWriteProxy(source));
 
             return mc;
@@ -401,8 +399,8 @@
         if (lock(key)) {
             try {
                 if (keys != null) keys.remove(key);
-                sr.remove(key);
-                or.remove(key);
+                streamRepository.remove(key);
+                objectRepository.remove(key);
             } finally {
                 unlock(key);
             }
@@ -430,7 +428,7 @@
             clone = new ArrayList(keys);
         } else {
             clone = new ArrayList();
-            for (Iterator i = or.list(); i.hasNext(); ) {
+            for (Iterator i = objectRepository.list(); i.hasNext(); ) {
                 clone.add(i.next());
             }
         }

Modified: james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java (original)
+++ james/server/trunk/src/java/org/apache/james/mailrepository/JDBCMailRepository.java Sat Jul  8 09:56:27 2006
@@ -96,11 +96,6 @@
     private static final boolean DEEP_DEBUG = false;
 
     /**
-     * The Avalon componentManager used by the instance
-     */
-    private ServiceManager componentManager;
-
-    /**
      * The Avalon context used by the instance
      */
     protected Context context;
@@ -142,6 +137,11 @@
     protected DataSourceComponent datasource;
 
     /**
+     * The store where the repository is selected from
+     */
+    protected Store store; 
+    
+    /**
      * The name of the datasource used by this repository
      */
     protected String datasourceName;
@@ -166,6 +166,14 @@
      */
     private int inMemorySizeLimit;
 
+    public void setStore(Store store) {
+        this.store = store;
+    }
+
+    public void setDatasources(DataSourceSelector datasources) {
+        this.datasources = datasources;
+    }
+
     /**
      * @see org.apache.avalon.framework.context.Contextualizable#contextualize(Context)
      */
@@ -175,7 +183,7 @@
     }
 
     /**
-     * @see org.apache.avalon.framework.service.Servicable#service(ServiceManager)
+     * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
      */
     public void service( final ServiceManager componentManager )
         throws ServiceException {
@@ -188,9 +196,10 @@
             getLogger().debug(logBuffer.toString());
         }
         // Get the DataSourceSelector service
-        datasources = (DataSourceSelector)componentManager.lookup( DataSourceSelector.ROLE );
-        this.componentManager = componentManager;
-
+        DataSourceSelector datasources = (DataSourceSelector)componentManager.lookup( DataSourceSelector.ROLE );
+        setDatasources(datasources);
+        Store store = (Store)componentManager.lookup(Store.ROLE);
+        setStore(store);
     }
 
     /**
@@ -268,7 +277,6 @@
         }
         try {
             if (filestore != null) {
-                Store store = (Store)componentManager.lookup(Store.ROLE);
                 //prepare Configurations for stream repositories
                 DefaultConfiguration streamConfiguration
                     = new DefaultConfiguration( "repository",

Modified: james/server/trunk/src/java/org/apache/james/mailrepository/MailStoreSpoolRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/mailrepository/MailStoreSpoolRepository.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/mailrepository/MailStoreSpoolRepository.java (original)
+++ james/server/trunk/src/java/org/apache/james/mailrepository/MailStoreSpoolRepository.java Sat Jul  8 09:56:27 2006
@@ -64,15 +64,20 @@
      * The repository configuration
      */
     private Configuration configuration;
+
     
+    private void setStore(Store store) {
+        mailStore = store;
+    }
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
     public void service(ServiceManager serviceManager) throws ServiceException {
-        mailStore = (Store) serviceManager.lookup(Store.ROLE);
+        Store mailStore = (Store) serviceManager.lookup(Store.ROLE);
+        setStore(mailStore);
     }
 
-
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
      */
@@ -118,7 +123,7 @@
     }
 
     /**
-     * @see org.apache.james.services.MailRepository#store(org.apache.james.core.MailImpl)
+     * @see org.apache.james.services.MailRepository#store(org.apache.mailet.Mail)
      */
     public void store(Mail mc) throws MessagingException {
         spoolRep.store(mc);
@@ -139,7 +144,7 @@
     }
 
     /**
-     * @see org.apache.james.services.MailRepository#remove(org.apache.james.core.MailImpl)
+     * @see org.apache.james.services.MailRepository#remove(org.apache.mailet.Mail)
      */
     public void remove(Mail mail) throws MessagingException {
         spoolRep.remove(mail);

Modified: james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java (original)
+++ james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java Sat Jul  8 09:56:27 2006
@@ -39,8 +39,13 @@
 
     private Store mailStore;
 
+    public void setStore(Store mailStore) {
+        this.mailStore = mailStore;
+    }
+
     public void service(ServiceManager serviceManager) throws ServiceException {
-        mailStore = (Store)serviceManager.lookup("org.apache.avalon.cornerstone.services.store.Store" );
+        Store mailStore = (Store)serviceManager.lookup("org.apache.avalon.cornerstone.services.store.Store" );
+        setStore(mailStore);
     }
 
     public String[] listSpoolItems(String spoolRepositoryURL) throws SpoolManagementException {

Modified: james/server/trunk/src/java/org/apache/james/management/UserManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/UserManagement.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/management/UserManagement.java (original)
+++ james/server/trunk/src/java/org/apache/james/management/UserManagement.java Sat Jul  8 09:56:27 2006
@@ -42,6 +42,14 @@
     private UsersRepository localUsers;
     private UsersStore usersStore;
 
+    public void setLocalUsers(UsersRepository localUsers) {
+        this.localUsers = localUsers;
+    }
+
+    public void setUsersStore(UsersStore usersStore) {
+        this.usersStore = usersStore;
+    }
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
@@ -51,10 +59,12 @@
         if (localUsers == null) {
             throw new ServiceException("","The local user repository could not be found.");
         }
+        setLocalUsers(localUsers);
         usersStore = (UsersStore)componentManager.lookup( UsersStore.ROLE );
         if (usersStore == null) {
             throw new ServiceException("","The user store containing the user repositories could not be found.");
         }
+        setUsersStore(usersStore);
     }
 
     private JamesUser getJamesUser(String userName, String repositoryName) throws UserManagementException {

Modified: james/server/trunk/src/java/org/apache/james/nntpserver/NNTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/nntpserver/NNTPServer.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/nntpserver/NNTPServer.java (original)
+++ james/server/trunk/src/java/org/apache/james/nntpserver/NNTPServer.java Sat Jul  8 09:56:27 2006
@@ -40,13 +40,21 @@
     /**
      * The repository that stores the news articles for this NNTP server.
      */
-    private NNTPRepository repo;
+    private NNTPRepository repository;
 
     /**
      * The repository that stores the local users.  Used for authentication.
      */
     private UsersRepository userRepository = null;
 
+    public void setUserRepository(UsersRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    public void setRepository(NNTPRepository repository) {
+        this.repository = repository;
+    }
+
     /**
      * The configuration data to be passed to the handler
      */
@@ -59,11 +67,12 @@
     public void service( final ServiceManager componentManager )
         throws ServiceException {
         super.service(componentManager);
-        userRepository = (UsersRepository)componentManager.lookup(UsersRepository.ROLE);
+        UsersRepository userRepository = (UsersRepository)componentManager.lookup(UsersRepository.ROLE);
+        setUserRepository(userRepository);
 
-        repo = (NNTPRepository)componentManager
+        NNTPRepository repo = (NNTPRepository)componentManager
             .lookup("org.apache.james.nntpserver.repository.NNTPRepository");
-
+        setRepository(repo);
     }
 
     /**
@@ -121,7 +130,7 @@
         }
 
         /**
-         * @see org.apache.avalon.excalibur.pool.ObjectFactory#decommision(Object)
+         * @see org.apache.avalon.excalibur.pool.ObjectFactory#decommission(Object) 
          */
         public void decommission( Object object ) throws Exception {
             return;
@@ -135,31 +144,31 @@
         implements NNTPHandlerConfigurationData {
 
         /**
-         * @see org.apache.james.smtpserver.NNTPHandlerConfigurationData#getHelloName()
+         * @see org.apache.james.nntpserver.NNTPHandlerConfigurationData#getHelloName()
          */
         public String getHelloName() {
             return NNTPServer.this.helloName;
         }
 
         /**
-         * @see org.apache.james.smtpserver.NNTPHandlerConfigurationData#isAuthRequired()
+         * @see org.apache.james.nntpserver.NNTPHandlerConfigurationData#isAuthRequired()
          */
         public boolean isAuthRequired() {
             return NNTPServer.this.authRequired;
         }
 
         /**
-         * @see org.apache.james.smtpserver.NNTPHandlerConfigurationData#getUsersRepository()
+         * @see org.apache.james.nntpserver.NNTPHandlerConfigurationData#getUsersRepository()
          */
         public UsersRepository getUsersRepository() {
             return NNTPServer.this.userRepository;
         }
 
         /**
-         * @see org.apache.james.smtpserver.NNTPHandlerConfigurationData#getNNTPRepository()
+         * @see org.apache.james.nntpserver.NNTPHandlerConfigurationData#getNNTPRepository()
          */
         public NNTPRepository getNNTPRepository() {
-            return NNTPServer.this.repo;
+            return NNTPServer.this.repository;
         }
 
     }

Modified: james/server/trunk/src/java/org/apache/james/pop3server/POP3Server.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/POP3Server.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/pop3server/POP3Server.java (original)
+++ james/server/trunk/src/java/org/apache/james/pop3server/POP3Server.java Sat Jul  8 09:56:27 2006
@@ -68,15 +68,25 @@
 
     private ServiceManager serviceManager;
 
+    public void setMailServer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+
+    public void setUsers(UsersRepository users) {
+        this.users = users;
+    }
+
     /**
-     * @see org.apache.avalon.framework.service.Serviceable#compose(ServiceManager)
+     * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager) 
      */
     public void service( final ServiceManager componentManager )
         throws ServiceException {
         super.service(componentManager);
         serviceManager = componentManager;
-        mailServer = (MailServer)componentManager.lookup( MailServer.ROLE );
-        users = (UsersRepository)componentManager.lookup( UsersRepository.ROLE );
+        MailServer mailServer = (MailServer)componentManager.lookup( MailServer.ROLE );
+        setMailServer(mailServer);
+        UsersRepository users = (UsersRepository)componentManager.lookup( UsersRepository.ROLE );
+        setUsers(users);
     }
 
     /**
@@ -159,7 +169,7 @@
         }
 
         /**
-         * @see org.apache.avalon.excalibur.pool.ObjectFactory#decommision(Object)
+         * @see org.apache.avalon.excalibur.pool.ObjectFactory#decommission(Object) 
          */
         public void decommission( Object object ) throws Exception {
             return;

Modified: james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManager.java?rev=420167&r1=420166&r2=420167&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManager.java (original)
+++ james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManager.java Sat Jul  8 09:56:27 2006
@@ -75,7 +75,27 @@
     /**
      * There reference to the Store
      */
-    private Store mailStore;
+    private Store store;
+
+    public void setUsersStore(UsersStore usersStore) {
+        this.usersStore = usersStore;
+    }
+
+    public void setUsers(UsersRepository users) {
+        this.users = users;
+    }
+
+    public void setSpoolManagement(SpoolManagementService spoolManagement) {
+        this.spoolManagement = spoolManagement;
+    }
+
+    public void setMailServer(MailServer mailServer) {
+        this.mailServer = mailServer;
+    }
+
+    public void setStore(Store store) {
+        this.store = store;
+    }
 
     /**
      * The configuration data to be passed to the handler
@@ -89,17 +109,21 @@
     public void service( final ServiceManager componentManager )
         throws ServiceException {
         super.service(componentManager);
-        mailServer = (MailServer)componentManager.
-            lookup( MailServer.ROLE );
-        mailStore = (Store)componentManager.
+        MailServer mailServer = (MailServer)componentManager.lookup(MailServer.ROLE );
+        setMailServer(mailServer);
+        Store store = (Store)componentManager.
             lookup( "org.apache.avalon.cornerstone.services.store.Store" );
-        usersStore = (UsersStore)componentManager.
-            lookup( UsersStore.ROLE );
-        users = (UsersRepository) componentManager.lookup(UsersRepository.ROLE);
+        setStore(store);
+        UsersStore usersStore = (UsersStore)componentManager. lookup(UsersStore.ROLE );
+        setUsersStore(usersStore);
+        UsersRepository users = (UsersRepository) componentManager.lookup(UsersRepository.ROLE);
         if (users == null) {
             throw new ServiceException("","The user repository could not be found.");
         }
-        spoolManagement = (SpoolManagementService) componentManager.lookup(SpoolManagementService.ROLE);
+        setUsers(users);
+        SpoolManagementService spoolManagement = 
+            (SpoolManagementService) componentManager.lookup(SpoolManagementService.ROLE);
+        setSpoolManagement(spoolManagement);
     }
 
     /**
@@ -192,7 +216,7 @@
          * @see org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData#getStore()
          */
         public Store getStore() {
-            return RemoteManager.this.mailStore;
+            return RemoteManager.this.store;
         }
         
 



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org