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 no...@apache.org on 2010/10/25 13:42:33 UTC

svn commit: r1027073 [1/2] - in /james/server/trunk: container-spring/src/main/config/james/ mailets/src/main/java/org/apache/james/transport/mailets/ mailets/src/test/java/org/apache/james/transport/mailets/ remotemanager/src/main/java/org/apache/jame...

Author: norman
Date: Mon Oct 25 11:42:31 2010
New Revision: 1027073

URL: http://svn.apache.org/viewvc?rev=1027073&view=rev
Log:
Merge MangeableVirtualUserTable and VirtualUserTable (JAMES-1088)

Added:
    james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
      - copied, changed from r1026947, james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
    james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java
Removed:
    james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/ErrorMappingException.java
    james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/ManageableVirtualUserTable.java
    james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/ManageableVirtualUserTableException.java
    james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
Modified:
    james/server/trunk/container-spring/src/main/config/james/spring-beans.xml
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
    james/server/trunk/mailets/src/test/java/org/apache/james/transport/mailets/VirtualUserTableTest.java
    james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AbstractMappingCmdHandler.java
    james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java
    james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java
    james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java
    james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java
    james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
    james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java
    james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
    james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
    james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/VirtualUserTable.java
    james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java
    james/server/trunk/user-file/src/test/java/org/apache/james/vut/file/XMLVirtualUserTableTest.java
    james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/AbstractJdbcUsersRepository.java
    james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java
    james/server/trunk/user-jdbc/src/main/java/org/apache/james/vut/jdbc/JDBCVirtualUserTable.java
    james/server/trunk/user-jdbc/src/test/java/org/apache/james/vut/jdbc/JDBCVirtualUserTableTest.java
    james/server/trunk/user-jpa/src/main/java/org/apache/james/vut/jpa/JPAVirtualUserTable.java
    james/server/trunk/user-jpa/src/test/java/org/apache/james/vut/jpa/JPAVirtualUserTableTest.java
    james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/LocalJamesUsersRepository.java
    james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractVirtualUserTable.java
    james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/JamesVirtualUserTable.java
    james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/VirtualUserTableManagement.java
    james/server/trunk/user-library/src/test/java/org/apache/james/user/lib/MockUsersRepository.java
    james/server/trunk/user-library/src/test/java/org/apache/james/vut/lib/AbstractVirtualUserTableTest.java
    james/server/trunk/user-library/src/test/java/org/apache/james/vut/lib/MockVirtualUserTableManagementImpl.java

Modified: james/server/trunk/container-spring/src/main/config/james/spring-beans.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/spring-beans.xml?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/spring-beans.xml (original)
+++ james/server/trunk/container-spring/src/main/config/james/spring-beans.xml Mon Oct 25 11:42:31 2010
@@ -241,7 +241,7 @@
     <!-- The context FileSystem implementation -->
     <bean id="filesystem" class="org.apache.james.container.spring.SpringFileSystem" />
 
-    <bean id="virtualusertable" name="manageablevirtualusertable" class="org.apache.james.vut.lib.JamesVirtualUserTable" />
+    <bean id="virtualusertable" class="org.apache.james.vut.lib.JamesVirtualUserTable" />
 
     <!-- The context domainlist implementation -->
     <bean id="domainlist" class="org.apache.james.domainlist.lib.JamesDomainList" />

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java Mon Oct 25 11:42:31 2010
@@ -30,8 +30,8 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersStore;
-import org.apache.james.vut.api.ErrorMappingException;
 import org.apache.james.vut.api.VirtualUserTable;
+import org.apache.james.vut.api.VirtualUserTable.ErrorMappingException;
 import org.apache.mailet.MailAddress;
 
 /**

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/VirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -26,7 +26,7 @@ import javax.annotation.Resource;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.vut.api.ErrorMappingException;
+import org.apache.james.vut.api.VirtualUserTable.ErrorMappingException;
 import org.apache.mailet.MailAddress;
 
 /**

Modified: james/server/trunk/mailets/src/test/java/org/apache/james/transport/mailets/VirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/test/java/org/apache/james/transport/mailets/VirtualUserTableTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/mailets/src/test/java/org/apache/james/transport/mailets/VirtualUserTableTest.java (original)
+++ james/server/trunk/mailets/src/test/java/org/apache/james/transport/mailets/VirtualUserTableTest.java Mon Oct 25 11:42:31 2010
@@ -23,13 +23,13 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.mail.MessagingException;
 
 import junit.framework.TestCase;
 
-import org.apache.james.vut.api.ErrorMappingException;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
@@ -69,6 +69,66 @@ public class VirtualUserTableTest extend
 						return null;
 					}
 
+                    public boolean addAddressMapping(String user, String domain, String address) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean addErrorMapping(String user, String domain, String error) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean addMapping(String user, String domain, String mapping) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean addRegexMapping(String user, String domain, String regex) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public Map<String, Collection<String>> getAllMappings() {
+                        // TODO Auto-generated method stub
+                        return null;
+                    }
+
+                    public Collection<String> getUserDomainMappings(String user, String domain) {
+                        // TODO Auto-generated method stub
+                        return null;
+                    }
+
+                    public boolean removeAddressMapping(String user, String domain, String address) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean removeErrorMapping(String user, String domain, String error) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean removeMapping(String user, String domain, String mapping) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
+                    public boolean removeRegexMapping(String user, String domain, String regex) {
+                        // TODO Auto-generated method stub
+                        return false;
+                    }
+
 				});
 
         table.init(mockMailetConfig);

Modified: james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AbstractMappingCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AbstractMappingCmdHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AbstractMappingCmdHandler.java (original)
+++ james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AbstractMappingCmdHandler.java Mon Oct 25 11:42:31 2010
@@ -22,23 +22,22 @@ package org.apache.james.remotemanager.c
 import javax.annotation.Resource;
 
 import org.apache.james.remotemanager.CommandHandler;
-import org.apache.james.vut.api.ManageableVirtualUserTable;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
+import org.apache.james.vut.api.VirtualUserTable;
 
 public abstract class AbstractMappingCmdHandler implements CommandHandler {
 
     protected final static String ADD_MAPPING_ACTION = "ADDMAPPING";
     protected final static String REMOVE_MAPPING_ACTION = "REMOVEMAPPING";
-    protected ManageableVirtualUserTable vutManagement;
+    protected VirtualUserTable vutManagement;
 
 
-    @Resource(name="manageablevirtualusertable")
-    public void setManageableVirtualUserTable(org.apache.james.vut.api.ManageableVirtualUserTable vut) {
+    @Resource(name="virtualusertable")
+    public void setVirtualUserTable(VirtualUserTable vut) {
         this.vutManagement = vut;
     }
     
 
-    protected boolean mappingAction(String[] args, String action) throws IllegalArgumentException, ManageableVirtualUserTableException {
+    protected boolean mappingAction(String[] args, String action) throws IllegalArgumentException {
         String user = null;
         String domain = null;
         String mapping = null;

Modified: james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java (original)
+++ james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java Mon Oct 25 11:42:31 2010
@@ -28,7 +28,6 @@ import org.apache.james.protocols.api.Re
 import org.apache.james.remotemanager.CommandHelp;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 
 public class AddMappingCmdHandler extends AbstractMappingCmdHandler {
 
@@ -51,9 +50,6 @@ public class AddMappingCmdHandler extend
         } else {
             try {
                 response = new RemoteManagerResponse("Adding mapping successful: " + mappingAction(args, ADD_MAPPING_ACTION));
-            } catch (ManageableVirtualUserTableException e) {
-                session.getLogger().error("Error on adding mapping: " + e);
-                response = new RemoteManagerResponse("Error on adding mapping: " + e);
             } catch (IllegalArgumentException e) {
                 session.getLogger().error("Error on adding mapping: " + e);
                 response = new RemoteManagerResponse("Error on adding mapping: " + e);

Modified: james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java (original)
+++ james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java Mon Oct 25 11:42:31 2010
@@ -33,18 +33,18 @@ import org.apache.james.remotemanager.Co
 import org.apache.james.remotemanager.CommandHelp;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
-import org.apache.james.vut.api.ManageableVirtualUserTable;
+import org.apache.james.vut.api.VirtualUserTable;
 
 public class ListAllMappingsCmdHandler implements CommandHandler {
     private CommandHelp help = new CommandHelp("listallmappings","list all mappings");
 
     public final static String COMMAND_NAME = "LISTALLMAPPINGS";
 
-    protected ManageableVirtualUserTable vutManagement;
+    protected VirtualUserTable vutManagement;
 
 
-    @Resource(name="manageablevirtualusertable")
-    public void setManageableVirtualUserTable(org.apache.james.vut.api.ManageableVirtualUserTable vut) {
+    @Resource(name="virtualusertable")
+    public void setManageableVirtualUserTable(VirtualUserTable vut) {
         this.vutManagement = vut;
     }
     

Modified: james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java (original)
+++ james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java Mon Oct 25 11:42:31 2010
@@ -29,8 +29,6 @@ import org.apache.james.protocols.api.Re
 import org.apache.james.remotemanager.CommandHelp;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
-import org.apache.james.vut.api.ManageableVirtualUserTable;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 
 public class ListMappingCmdHandler extends AbstractMappingCmdHandler {
     private CommandHelp help = new CommandHelp("listmapping [user@domain]","list all mappings for the given emailaddress");
@@ -68,25 +66,19 @@ public class ListMappingCmdHandler exten
 			}
 
             try {
-            	if (vutManagement instanceof ManageableVirtualUserTable) {
-            		Collection<String> mappings = ((ManageableVirtualUserTable)vutManagement).getUserDomainMappings(user, domain);
-                    if (mappings == null) {
-                        response = new RemoteManagerResponse("No mappings found");
-                    } else {
-                        response = new RemoteManagerResponse("Mappings:");
-
-                        Iterator<String> m = mappings.iterator();
-                        while (m.hasNext()) {
-                            response.appendLine(m.next());
-                        }
-                    }
-            	} else {
-                    response = new RemoteManagerResponse("Listing mappings not supported");
-            	}
-                
-            } catch (ManageableVirtualUserTableException e) {
-                session.getLogger().error("Error on listing mapping: " + e);
-                response = new RemoteManagerResponse("Error on listing mapping: " + e);
+                Collection<String> mappings = vutManagement.getUserDomainMappings(user, domain);
+                if (mappings == null) {
+                    response = new RemoteManagerResponse("No mappings found");
+                } else {
+                    response = new RemoteManagerResponse("Mappings:");
+
+                    Iterator<String> m = mappings.iterator();
+                    while (m.hasNext()) {
+                        response.appendLine(m.next());
+                     }
+                }
+            
+
             } catch (IllegalArgumentException e) {
                 session.getLogger().error("Error on listing mapping: " + e);
                 response = new RemoteManagerResponse("Error on listing mapping: " + e);

Modified: james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java (original)
+++ james/server/trunk/remotemanager/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java Mon Oct 25 11:42:31 2010
@@ -28,7 +28,6 @@ import org.apache.james.protocols.api.Re
 import org.apache.james.remotemanager.CommandHelp;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 
 public class RemoveMappingCmdHandler extends AbstractMappingCmdHandler {
     private CommandHelp help = new CommandHelp("removemapping [toUser@toDomain] [fromMapping]","remove mapping for the given emailaddress");
@@ -51,9 +50,6 @@ public class RemoveMappingCmdHandler ext
         } else {
             try {
                 response = new RemoteManagerResponse("Removing mapping successful: " + mappingAction(args, REMOVE_MAPPING_ACTION));
-            } catch (ManageableVirtualUserTableException e) {
-                session.getLogger().error("Error on  removing mapping: " + e);
-                response = new RemoteManagerResponse("Error on removing mapping: " + e);
             } catch (IllegalArgumentException e) {
                 session.getLogger().error("Error on  removing mapping: " + e);
                 response = new RemoteManagerResponse("Error on removing mapping: " + e);

Modified: james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java (original)
+++ james/server/trunk/remotemanager/src/test/java/org/apache/james/remotemanager/AbstractRemoteManagerTest.java Mon Oct 25 11:42:31 2010
@@ -186,7 +186,7 @@ public abstract class AbstractRemoteMana
 		serviceManager.put("dnsservice", dnsservice);
 		
 		vutManagement = new MockVirtualUserTableManagementImpl();
-		serviceManager.put("manageablevirtualusertable", vutManagement);
+		serviceManager.put("virtualusertable", vutManagement);
 	
 		DomainList xml = new SimpleDomainList();
 

Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java Mon Oct 25 11:42:31 2010
@@ -30,8 +30,8 @@ import org.apache.james.protocols.smtp.S
 import org.apache.james.protocols.smtp.core.fastfail.AbstractValidRcptHandler;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
-import org.apache.james.vut.api.ErrorMappingException;
 import org.apache.james.vut.api.VirtualUserTable;
+import org.apache.james.vut.api.VirtualUserTable.ErrorMappingException;
 import org.apache.mailet.MailAddress;
 
 /**

Modified: james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java (original)
+++ james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java Mon Oct 25 11:42:31 2010
@@ -32,6 +32,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
@@ -51,7 +52,6 @@ import org.apache.james.socket.JamesProt
 import org.apache.james.user.lib.MockUsersRepository;
 import org.apache.james.util.TestUtil;
 import org.apache.james.util.codec.Base64;
-import org.apache.james.vut.api.ErrorMappingException;
 import org.apache.james.vut.api.VirtualUserTable;
 import org.apache.mailet.HostAddress;
 import org.apache.mailet.Mail;
@@ -224,11 +224,70 @@ public abstract class AbstractSMTPServer
         m_serviceManager.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
         m_serviceManager.put("virtualusertable", new VirtualUserTable() {
 
-			public Collection<String> getMappings(String user, String domain)
-					throws ErrorMappingException {
-				return null;
-			}
-        	
+            public boolean addAddressMapping(String user, String domain, String address) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addErrorMapping(String user, String domain, String error) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addMapping(String user, String domain, String mapping) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addRegexMapping(String user, String domain, String regex) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public Map<String, Collection<String>> getAllMappings() {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public Collection<String> getMappings(String user, String domain) throws ErrorMappingException {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public Collection<String> getUserDomainMappings(String user, String domain) {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public boolean removeAddressMapping(String user, String domain, String address) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeErrorMapping(String user, String domain, String error) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeMapping(String user, String domain, String mapping) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeRegexMapping(String user, String domain, String regex) {
+                // TODO Auto-generated method stub
+                return false;
+            }
         });
 
         m_serviceManager.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);

Modified: james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java (original)
+++ james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java Mon Oct 25 11:42:31 2010
@@ -39,7 +39,6 @@ import org.apache.james.services.MailSer
 import org.apache.james.smtpserver.fastfail.ValidRcptHandler;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.lib.MockUsersRepository;
-import org.apache.james.vut.api.ErrorMappingException;
 import org.apache.james.vut.api.VirtualUserTable;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
@@ -134,6 +133,66 @@ public class ValidRcptHandlerTest extend
                 }
                 return mappings;
             }
+
+            public boolean addAddressMapping(String user, String domain, String address) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addErrorMapping(String user, String domain, String error) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addMapping(String user, String domain, String mapping) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean addRegexMapping(String user, String domain, String regex) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public Map<String, Collection<String>> getAllMappings() {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public Collection<String> getUserDomainMappings(String user, String domain) {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public boolean removeAddressMapping(String user, String domain, String address) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeErrorMapping(String user, String domain, String error) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeMapping(String user, String domain, String mapping) {
+                // TODO Auto-generated method stub
+                return false;
+            }
+
+            public boolean removeRegexMapping(String user, String domain, String regex) {
+                // TODO Auto-generated method stub
+                return false;
+            }
         };
         return table;
     }

Modified: james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/VirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/VirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/VirtualUserTable.java (original)
+++ james/server/trunk/user-api/src/main/java/org/apache/james/vut/api/VirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -19,17 +19,13 @@
 package org.apache.james.vut.api;
 
 import java.util.Collection;
+import java.util.Map;
 
 /**
  * Interface which should be implemented of classes which map recipients.
  */
 public interface VirtualUserTable {
-    
-    /**
-     * The component role used by components implementing this service
-     */
-    public static final String ROLE = VirtualUserTable.class.getName();
-    
+
     /**
      * The prefix which is used for error mappings
      */
@@ -59,5 +55,133 @@ public interface VirtualUserTable {
      * @throws ErrorMappingException get thrown if an error mapping was found
      */
     public Collection<String> getMappings(String user, String domain) throws ErrorMappingException;
+    
+    
+    /**
+     * Add regex mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param regex the regex.
+     * @return true if successfully
+     */
+    public boolean addRegexMapping(String user, String domain, String regex);
+    
+    /**
+     * Remove regex mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param regex the regex.
+     * @return true if successfully
+     */
+    public boolean removeRegexMapping(String user,String domain, String regex);
+    
+    /***
+     * Add address mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param address 
+     * @return true if successfully
+     */
+    public boolean addAddressMapping(String user, String domain, String address);
+    
+    /**
+     * Remove address mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param address 
+     * @return true if successfully
+     */
+    public boolean removeAddressMapping(String user,String domain, String address);
+    
+    /**
+     * Add error mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param error the regex.
+     * @return true if successfully
+     */
+    public boolean addErrorMapping(String user, String domain, String error);
+
+    /**
+     * Remove error mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param error
+     * @return true if successfully
+     * @throws ManageableVirtualUserTableException get thrown if an invalid argument was given
+     */
+    public boolean removeErrorMapping(String user,String domain, String error);
+    
+    /**
+     * Return the explicit mapping stored for the given user and domain. Return null
+     * if no mapping was found
+     * 
+     * @param user the username
+     * @param domain the domain
+     * @return the collection which holds the mappings. 
+     */
+    public Collection<String> getUserDomainMappings(String user, String domain);
+    
+    /**
+     * Add mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param mapping the mapping
+     * @return true if successfully
+     */
+    public boolean addMapping(String user, String domain, String mapping);
+    
+    /**
+     * Remove mapping
+     * 
+     * @param user the username. Null if no username should be used
+     * @param domain the domain. Null if no domain should be used
+     * @param mapping the mapping
+     * @return true if successfully
+     */
+    public boolean removeMapping(String user, String domain, String mapping);
+
+
+    /**
+     * Return a Map which holds all mappings. The key is the user@domain and the value is a Collection 
+     * which holds all mappings
+     * 
+     * @return Map which holds all mappings
+     */
+    public Map<String,Collection<String>> getAllMappings();
+    
+    /**
+     * Add aliasDomain mapping
+     * 
+     * @param aliasDomain the aliasdomain which should be mapped to the realDomain
+     * @param realDomain the realDomain
+     * @return true if successfully
+     */
+    public boolean addAliasDomainMapping(String aliasDomain, String realDomain);
+    
+    /**
+     * Remove aliasDomain mapping
+     * 
+     * @param aliasDomain the aliasdomain which should be mapped to the realDomain
+     * @param realDomain the realDomain
+     * @return true if successfully
+     */
+    public boolean removeAliasDomainMapping(String aliasDomain, String realDomain);
+
+    public class ErrorMappingException extends Exception {
+
+        private static final long serialVersionUID = 2348752938798L;
+
+        public ErrorMappingException(String string) {
+            super(string);
+        }
 
+    }
 }

Modified: james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java (original)
+++ james/server/trunk/user-file/src/main/java/org/apache/james/user/file/UsersFileRepository.java Mon Oct 25 11:42:31 2010
@@ -27,7 +27,7 @@ import org.apache.commons.configuration.
 import org.apache.james.mailstore.api.MailStore;
 import org.apache.james.repository.ObjectRepository;
 import org.apache.james.user.api.User;
-import org.apache.james.user.lib.AbstractUsersRepository;
+import org.apache.james.user.lib.AbstractJamesUsersRepository;
 import org.apache.james.user.lib.DefaultJamesUser;
 
 
@@ -50,7 +50,7 @@ import javax.annotation.Resource;
  *
  */
 public class UsersFileRepository
-    extends AbstractUsersRepository {
+    extends AbstractJamesUsersRepository {
  
     /**
      * Whether 'deep debugging' is turned on.
@@ -78,7 +78,7 @@ public class UsersFileRepository
 
 
     /**
-     * @see org.apache.james.user.lib.AbstractUsersRepository#doConfigure(org.apache.commons.configuration.HierarchicalConfiguration)
+     * @see org.apache.james.user.lib.AbstractJamesUsersRepository#doConfigure(org.apache.commons.configuration.HierarchicalConfiguration)
      */
     protected void doConfigure( final HierarchicalConfiguration configuration )
         throws ConfigurationException {
@@ -128,7 +128,7 @@ public class UsersFileRepository
     }
 
     /**
-     * @see org.apache.james.user.lib.AbstractUsersRepository#doAddUser(org.apache.james.user.api.User)
+     * @see org.apache.james.user.lib.AbstractJamesUsersRepository#doAddUser(org.apache.james.user.api.User)
      */
     protected void doAddUser(User user) {
         try {
@@ -206,7 +206,7 @@ public class UsersFileRepository
     }
     
     /**
-     * @see org.apache.james.user.lib.AbstractUsersRepository#doUpdateUser(org.apache.james.user.api.User)
+     * @see org.apache.james.user.lib.AbstractJamesUsersRepository#doUpdateUser(org.apache.james.user.api.User)
      */
     public void doUpdateUser(User user) {
         try {

Modified: james/server/trunk/user-file/src/test/java/org/apache/james/vut/file/XMLVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-file/src/test/java/org/apache/james/vut/file/XMLVirtualUserTableTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-file/src/test/java/org/apache/james/vut/file/XMLVirtualUserTableTest.java (original)
+++ james/server/trunk/user-file/src/test/java/org/apache/james/vut/file/XMLVirtualUserTableTest.java Mon Oct 25 11:42:31 2010
@@ -24,7 +24,6 @@ import java.util.List;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.api.VirtualUserTable;
 import org.apache.james.vut.file.XMLVirtualUserTable;
 import org.apache.james.vut.lib.AbstractVirtualUserTable;
@@ -53,7 +52,7 @@ public class XMLVirtualUserTableTest ext
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#addMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean addMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {
+    protected boolean addMapping(String user, String domain, String mapping, int type) {
 
         Collection<String> mappings = virtualUserTable.getUserDomainMappings(user, domain);
 
@@ -94,7 +93,7 @@ public class XMLVirtualUserTableTest ext
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#removeMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean removeMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {       
+    protected boolean removeMapping(String user, String domain, String mapping, int type)  {       
 
         Collection<String> mappings = virtualUserTable.getUserDomainMappings(user, domain);
         

Modified: james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/AbstractJdbcUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/AbstractJdbcUsersRepository.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/AbstractJdbcUsersRepository.java (original)
+++ james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/AbstractJdbcUsersRepository.java Mon Oct 25 11:42:31 2010
@@ -23,7 +23,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.services.FileSystem;
 import org.apache.james.user.api.User;
-import org.apache.james.user.lib.AbstractUsersRepository;
+import org.apache.james.user.lib.AbstractJamesUsersRepository;
 import org.apache.james.util.sql.JDBCUtil;
 import org.apache.james.util.sql.SqlResources;
 
@@ -68,7 +68,7 @@ import javax.sql.DataSource;
  *
  */
 public abstract class AbstractJdbcUsersRepository extends
-        AbstractUsersRepository {
+        AbstractJamesUsersRepository {
 
 
     protected Map<String,String> m_sqlParameters;
@@ -379,7 +379,7 @@ public abstract class AbstractJdbcUsersR
      *   &lt;/repository&gt;
      * </pre>
      * 
-     * @see org.apache.james.user.lib.AbstractUsersRepository#doConfigure(org.apache.commons.configuration.HierarchicalConfiguration)
+     * @see org.apache.james.user.lib.AbstractJamesUsersRepository#doConfigure(org.apache.commons.configuration.HierarchicalConfiguration)
      */
     @SuppressWarnings("unchecked")
     protected void doConfigure(HierarchicalConfiguration configuration)
@@ -619,7 +619,7 @@ public abstract class AbstractJdbcUsersR
     /**
      * Gets a user by name, ignoring case if specified. If the specified SQL
      * statement has been defined, this method overrides the basic
-     * implementation in AbstractUsersRepository to increase performance.
+     * implementation in AbstractJamesUsersRepository to increase performance.
      * 
      * @param name
      *            the name of the user being retrieved

Modified: james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java (original)
+++ james/server/trunk/user-jdbc/src/main/java/org/apache/james/user/jdbc/ListUsersJdbcRepository.java Mon Oct 25 11:42:31 2010
@@ -40,7 +40,7 @@ public class ListUsersJdbcRepository ext
 
     
     /**
-     * @see org.apache.james.user.lib.AbstractUsersRepository#test(java.lang.String, java.lang.String)
+     * @see org.apache.james.user.lib.AbstractJamesUsersRepository#test(java.lang.String, java.lang.String)
      */
     public boolean test(String name, String password) {
         // list repository does not store passwords so we always return false!

Modified: james/server/trunk/user-jdbc/src/main/java/org/apache/james/vut/jdbc/JDBCVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/main/java/org/apache/james/vut/jdbc/JDBCVirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/main/java/org/apache/james/vut/jdbc/JDBCVirtualUserTable.java (original)
+++ james/server/trunk/user-jdbc/src/main/java/org/apache/james/vut/jdbc/JDBCVirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -39,7 +39,6 @@ import org.apache.commons.configuration.
 import org.apache.james.services.FileSystem;
 import org.apache.james.util.sql.JDBCUtil;
 import org.apache.james.util.sql.SqlResources;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.lib.AbstractVirtualUserTable;
 import org.apache.james.vut.lib.VirtualUserTableUtil;
 
@@ -221,7 +220,7 @@ public class JDBCVirtualUserTable extend
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTable#addMappingInternal(String, String, String)
      */
-    protected boolean addMappingInternal(String user, String domain, String regex) throws ManageableVirtualUserTableException {
+    protected boolean addMappingInternal(String user, String domain, String regex) {
 
         String newUser = getUserString(user);
         String newDomain = getDomainString(domain);
@@ -332,7 +331,7 @@ public class JDBCVirtualUserTable extend
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTable#removeMappingInternal(String, String, String)
      */
-    protected boolean removeMappingInternal(String user, String domain, String mapping) throws ManageableVirtualUserTableException {
+    protected boolean removeMappingInternal(String user, String domain, String mapping) {
         String newUser = getUserString(user);
         String newDomain = getDomainString(domain);
         Collection<String> map = getUserDomainMappings(newUser,newDomain);
@@ -467,14 +466,13 @@ public class JDBCVirtualUserTable extend
      * 
      * @param user the given user String
      * @return user the user String
-     * @throws InvalidMappingException get thrown on invalid argument
      */
-    private String getUserString(String user) throws ManageableVirtualUserTableException {
+    private String getUserString(String user) {
         if (user != null) {
             if(user.equals(WILDCARD) || user.indexOf("@") < 0) {
                 return user;
             } else {
-                throw new ManageableVirtualUserTableException("Invalid user: " + user);
+                throw new IllegalArgumentException("Invalid user: " + user);
             }
         } else {
             return WILDCARD;
@@ -486,14 +484,13 @@ public class JDBCVirtualUserTable extend
      * 
      * @param domain the given domain String
      * @return domainString the domain String
-     * @throws InvalidMappingException get thrown on invalid argument
      */
-    private String getDomainString(String domain) throws ManageableVirtualUserTableException {
+    private String getDomainString(String domain) {
         if(domain != null) {
             if (domain.equals(WILDCARD) || domain.indexOf("@") < 0) {
                 return domain;  
             } else {
-                throw new ManageableVirtualUserTableException("Invalid domain: " + domain);
+                throw new IllegalArgumentException("Invalid domain: " + domain);
             }
         } else {
             return WILDCARD;

Modified: james/server/trunk/user-jdbc/src/test/java/org/apache/james/vut/jdbc/JDBCVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jdbc/src/test/java/org/apache/james/vut/jdbc/JDBCVirtualUserTableTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jdbc/src/test/java/org/apache/james/vut/jdbc/JDBCVirtualUserTableTest.java (original)
+++ james/server/trunk/user-jdbc/src/test/java/org/apache/james/vut/jdbc/JDBCVirtualUserTableTest.java Mon Oct 25 11:42:31 2010
@@ -22,7 +22,6 @@ import org.apache.commons.configuration.
 import org.apache.commons.logging.impl.SimpleLog;
 import org.apache.james.services.MockFileSystem;
 import org.apache.james.util.TestUtil;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.jdbc.JDBCVirtualUserTable;
 import org.apache.james.vut.lib.AbstractVirtualUserTable;
 import org.apache.james.vut.lib.AbstractVirtualUserTableTest;
@@ -51,7 +50,7 @@ public class JDBCVirtualUserTableTest ex
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#addMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean addMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {
+    protected boolean addMapping(String user, String domain, String mapping, int type) {
         if (type == ERROR_TYPE) {
             return virtualUserTable.addErrorMapping(user, domain, mapping);
         } else if (type == REGEX_TYPE) {
@@ -68,7 +67,7 @@ public class JDBCVirtualUserTableTest ex
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#removeMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean removeMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {
+    protected boolean removeMapping(String user, String domain, String mapping, int type) {
         if (type == ERROR_TYPE) {
             return virtualUserTable.removeErrorMapping(user, domain, mapping);
         } else if (type == REGEX_TYPE) {

Modified: james/server/trunk/user-jpa/src/main/java/org/apache/james/vut/jpa/JPAVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jpa/src/main/java/org/apache/james/vut/jpa/JPAVirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jpa/src/main/java/org/apache/james/vut/jpa/JPAVirtualUserTable.java (original)
+++ james/server/trunk/user-jpa/src/main/java/org/apache/james/vut/jpa/JPAVirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -29,7 +29,6 @@ import javax.persistence.EntityTransacti
 import javax.persistence.PersistenceException;
 import javax.persistence.PersistenceUnit;
 
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.jpa.model.JPAVirtualUser;
 import org.apache.james.vut.lib.AbstractVirtualUserTable;
 import org.apache.james.vut.lib.VirtualUserTableUtil;
@@ -57,7 +56,7 @@ public class JPAVirtualUserTable extends
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTable#addMappingInternal(String, String, String)
      */
-    protected boolean addMappingInternal(String user, String domain, String regex) throws ManageableVirtualUserTableException {
+    protected boolean addMappingInternal(String user, String domain, String regex) {
         
         String newUser = getUserString(user);
         String newDomain = getDomainString(domain);
@@ -153,7 +152,7 @@ public class JPAVirtualUserTable extends
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTable#removeMappingInternal(String, String, String)
      */
-    protected boolean removeMappingInternal(String user, String domain, String mapping) throws ManageableVirtualUserTableException {
+    protected boolean removeMappingInternal(String user, String domain, String mapping) {
         String newUser = getUserString(user);
         String newDomain = getDomainString(domain);
         Collection<String> map = getUserDomainMappings(newUser,newDomain);
@@ -265,12 +264,12 @@ public class JPAVirtualUserTable extends
      * @return user the user String
      * @throws InvalidMappingException get thrown on invalid argument
      */
-    private String getUserString(String user) throws ManageableVirtualUserTableException {
+    private String getUserString(String user) {
         if (user != null) {
             if(user.equals(WILDCARD) || user.indexOf("@") < 0) {
                 return user;
             } else {
-                throw new ManageableVirtualUserTableException("Invalid user: " + user);
+                throw new IllegalArgumentException("Invalid user: " + user);
             }
         } else {
             return WILDCARD;
@@ -284,12 +283,12 @@ public class JPAVirtualUserTable extends
      * @return domainString the domain String
      * @throws InvalidMappingException get thrown on invalid argument
      */
-    private String getDomainString(String domain) throws ManageableVirtualUserTableException {
+    private String getDomainString(String domain) {
         if(domain != null) {
             if (domain.equals(WILDCARD) || domain.indexOf("@") < 0) {
                 return domain;  
             } else {
-                throw new ManageableVirtualUserTableException("Invalid domain: " + domain);
+                throw new IllegalArgumentException("Invalid domain: " + domain);
             }
         } else {
             return WILDCARD;

Modified: james/server/trunk/user-jpa/src/test/java/org/apache/james/vut/jpa/JPAVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-jpa/src/test/java/org/apache/james/vut/jpa/JPAVirtualUserTableTest.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-jpa/src/test/java/org/apache/james/vut/jpa/JPAVirtualUserTableTest.java (original)
+++ james/server/trunk/user-jpa/src/test/java/org/apache/james/vut/jpa/JPAVirtualUserTableTest.java Mon Oct 25 11:42:31 2010
@@ -22,7 +22,6 @@ import java.util.HashMap;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.commons.logging.impl.SimpleLog;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.jpa.JPAVirtualUserTable;
 import org.apache.james.vut.jpa.model.JPAVirtualUser;
 import org.apache.james.vut.lib.AbstractVirtualUserTable;
@@ -78,7 +77,7 @@ public class JPAVirtualUserTableTest ext
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#addMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean addMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {
+    protected boolean addMapping(String user, String domain, String mapping, int type) {
         if (type == ERROR_TYPE) {
             return virtualUserTable.addErrorMapping(user, domain, mapping);
         } else if (type == REGEX_TYPE) {
@@ -95,7 +94,7 @@ public class JPAVirtualUserTableTest ext
     /**
      * @see org.apache.james.vut.lib.AbstractVirtualUserTableTest#removeMapping(java.lang.String, java.lang.String, java.lang.String, int)
      */
-    protected boolean removeMapping(String user, String domain, String mapping, int type) throws ManageableVirtualUserTableException {
+    protected boolean removeMapping(String user, String domain, String mapping, int type) {
         if (type == ERROR_TYPE) {
             return virtualUserTable.removeErrorMapping(user, domain, mapping);
         } else if (type == REGEX_TYPE) {

Copied: james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java (from r1026947, james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java?p2=james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java&p1=james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java&r1=1026947&r2=1027073&rev=1027073&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java Mon Oct 25 11:42:31 2010
@@ -29,10 +29,14 @@ import org.apache.james.lifecycle.LogEna
 import org.apache.james.user.api.JamesUser;
 import org.apache.james.user.api.JamesUsersRepository;
 import org.apache.james.user.api.User;
-import org.apache.james.vut.api.ErrorMappingException;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.james.vut.lib.AbstractReadOnlyVirtualUserTable;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
@@ -42,8 +46,10 @@ import javax.annotation.Resource;
  * <p>This implements common functionality found in different UsersRespository 
  * implementations, and makes it easier to create new User repositories.</p>
  *
+ *@deprecated Please implement {@link UsersRepository}
  */
-public abstract class AbstractUsersRepository implements JamesUsersRepository, LogEnabled, Configurable {
+@Deprecated
+public abstract class AbstractJamesUsersRepository extends AbstractReadOnlyVirtualUserTable implements JamesUsersRepository, LogEnabled, Configurable {
 
     /**
      * Ignore case in usernames
@@ -229,4 +235,43 @@ public abstract class AbstractUsersRepos
         this.ignoreCase = ignoreCase;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.vut.api.VirtualUserTable#getAllMappings()
+     */
+    public Map<String, Collection<String>> getAllMappings() {
+        Map<String, Collection<String>> mappings = new HashMap<String, Collection<String>>();
+        if (enableAliases == true || enableForwarding == true) {
+            Iterator<String> users = list();
+            while(users.hasNext()) {
+                String user = users.next();
+                int index = user.indexOf("@");
+                String username;
+                String domain;
+                if (index != -1) {
+                    username = user.substring(0, index);
+                    domain = user.substring(index +1, user.length());
+                } else {
+                    username = user;
+                    domain = "localhost";
+                }
+                try {
+                    mappings.put(user, getMappings(username, domain));
+                } catch (ErrorMappingException e) {
+                    // shold never happen here
+                }
+            }        
+        }
+       
+        return mappings;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.vut.api.VirtualUserTable#getUserDomainMappings(java.lang.String, java.lang.String)
+     */
+    public Collection<String> getUserDomainMappings(String user, String domain) {
+        return new ArrayList<String>();
+    }
+
 }

Modified: james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/LocalJamesUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/LocalJamesUsersRepository.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/LocalJamesUsersRepository.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/user/lib/LocalJamesUsersRepository.java Mon Oct 25 11:42:31 2010
@@ -19,10 +19,11 @@
 
 package org.apache.james.user.lib;
 
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.james.user.api.JamesUsersRepository;
-import org.apache.james.vut.api.ErrorMappingException;
 
 import java.util.Collection;
+import java.util.Map;
 
 /**
  * This is a wrapper that provide access to the "LocalUsers" repository
@@ -35,50 +36,98 @@ import java.util.Collection;
 public class LocalJamesUsersRepository extends LocalUsersRepository implements JamesUsersRepository{
 
     
+    private JamesUsersRepository getUsersRepository() {
+        if (users instanceof JamesUsersRepository) {
+            return (JamesUsersRepository) users;
+        }
+        throw new UnsupportedOperationException("No supported by this implementation");
+    }
+
+
+    @Override
+    public void init() throws Exception {
+        super.init();
+        
+        if ((users instanceof JamesUsersRepository) == false) {
+            throw new ConfigurationException("Please use the LocalUsersRepository for this UsersRepository");
+        }
+    }
 
 
     /**
      * @see org.apache.james.user.api.JamesUsersRepository#setEnableAliases(boolean)
      */
     public void setEnableAliases(boolean enableAliases) {
-        if (users instanceof JamesUsersRepository) {
-            ((JamesUsersRepository) users).setEnableAliases(enableAliases);
-        } else {
-            throw new UnsupportedOperationException("Not supported by this implementation");
-        }
+        getUsersRepository().setEnableAliases(enableAliases);
     }
 
     /**
      * @see org.apache.james.user.api.JamesUsersRepository#setEnableForwarding(boolean)
      */
     public void setEnableForwarding(boolean enableForwarding) {
-        if (users instanceof JamesUsersRepository) {
-            ((JamesUsersRepository) users).setEnableForwarding(enableForwarding);
-        } else {
-            throw new UnsupportedOperationException("Not supported by this implementation");
-        }
+        getUsersRepository().setEnableForwarding(enableForwarding);
     }
 
     /**
      * @see org.apache.james.user.api.JamesUsersRepository#setIgnoreCase(boolean)
      */
     public void setIgnoreCase(boolean ignoreCase) {
-        if (users instanceof JamesUsersRepository) {
-            ((JamesUsersRepository) users).setIgnoreCase(ignoreCase);
-        } else {
-            throw new UnsupportedOperationException("Not supported by this implementation");
-        }
+        getUsersRepository().setIgnoreCase(ignoreCase);
     }
 
     /**
      * @see org.apache.james.vut.api.VirtualUserTable#getMappings(java.lang.String, java.lang.String)
      */
     public Collection<String> getMappings(String user, String domain) throws ErrorMappingException {
-        if (users instanceof JamesUsersRepository) {
-            return ((JamesUsersRepository) users).getMappings(user, domain);
-            
-        }
-        return null;
+        return getUsersRepository().getMappings(user, domain);
+    }
+
+    public boolean addAddressMapping(String user, String domain, String address) {
+        return getUsersRepository().addAddressMapping(user, domain, address);
+    }
+
+    public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+        return getUsersRepository().addAliasDomainMapping(aliasDomain, realDomain);
+    }
+
+    public boolean addErrorMapping(String user, String domain, String error) {
+        return getUsersRepository().addErrorMapping(user, domain, error);
+    }
+
+    public boolean addMapping(String user, String domain, String mapping) {
+        return getUsersRepository().addMapping(user, domain, mapping);
+    }
+
+    public boolean addRegexMapping(String user, String domain, String regex) {
+        return getUsersRepository().addRegexMapping(user, domain, regex);
+    }
+
+    public Map<String, Collection<String>> getAllMappings() {
+        return getUsersRepository().getAllMappings();
+    }
+
+    public Collection<String> getUserDomainMappings(String user, String domain) {
+        return getUsersRepository().getUserDomainMappings(user, domain);
+    }
+
+    public boolean removeAddressMapping(String user, String domain, String address) {
+        return getUsersRepository().removeAddressMapping(user, domain, address);
+    }
+
+    public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+        return getUsersRepository().removeAliasDomainMapping(aliasDomain, realDomain);
+    }
+
+    public boolean removeErrorMapping(String user, String domain, String error) {
+        return getUsersRepository().removeErrorMapping(user, domain, error);
+    }
+
+    public boolean removeMapping(String user, String domain, String mapping) {
+        return getUsersRepository().removeMapping(user, domain, mapping);
+    }
+
+    public boolean removeRegexMapping(String user, String domain, String regex) {
+        return getUsersRepository().removeRegexMapping(user, domain, regex);
     }
 
 }

Added: james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java?rev=1027073&view=auto
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java (added)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractReadOnlyVirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -0,0 +1,101 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * 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.                                           *
+ ****************************************************************/
+package org.apache.james.vut.lib;
+
+
+import org.apache.james.vut.api.VirtualUserTable;
+
+/**
+ * Abstract base class which can be used by {@link VirtualUserTable} implementations which are read-only
+ * 
+ *
+ */
+public abstract class AbstractReadOnlyVirtualUserTable implements VirtualUserTable{
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean addAddressMapping(String user, String domain, String address) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean addErrorMapping(String user, String domain, String error) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean addMapping(String user, String domain, String mapping) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean addRegexMapping(String user, String domain, String regex) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean removeAddressMapping(String user, String domain, String address) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean removeErrorMapping(String user, String domain, String error) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean removeMapping(String user, String domain, String mapping) {
+        return false;
+    }
+
+    /**
+     * Do nothing and return false
+     */
+    public boolean removeRegexMapping(String user, String domain, String regex) {
+        return false;
+    }
+
+}

Modified: james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractVirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractVirtualUserTable.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/AbstractVirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -31,9 +31,6 @@ import org.apache.commons.configuration.
 import org.apache.commons.logging.Log;
 import org.apache.james.lifecycle.Configurable;
 import org.apache.james.lifecycle.LogEnabled;
-import org.apache.james.vut.api.ErrorMappingException;
-import org.apache.james.vut.api.ManageableVirtualUserTable;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.api.VirtualUserTable;
 import org.apache.mailet.MailAddress;
 import org.apache.oro.text.regex.MalformedPatternException;
@@ -42,7 +39,7 @@ import org.apache.oro.text.regex.Perl5Co
 /**
  * 
  */
-public abstract class AbstractVirtualUserTable implements VirtualUserTable, ManageableVirtualUserTable, LogEnabled, Configurable {       
+public abstract class AbstractVirtualUserTable implements VirtualUserTable, LogEnabled, Configurable {
     // The maximum mappings which will process before throwing exception
     private int mappingLimit = 10;
        
@@ -186,11 +183,11 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#addRegexMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean addRegexMapping(String user, String domain, String regex) throws ManageableVirtualUserTableException {     
+    public boolean addRegexMapping(String user, String domain, String regex){     
         try {
             new Perl5Compiler().compile(regex);
         } catch (MalformedPatternException e) {
-            throw new ManageableVirtualUserTableException("Invalid regex: " + regex);
+            throw new IllegalArgumentException("Invalid regex: " + regex);
         }
         
         if (checkMapping(user,domain,regex) == true) {
@@ -205,7 +202,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#removeRegexMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean removeRegexMapping(String user, String domain, String regex) throws ManageableVirtualUserTableException {
+    public boolean removeRegexMapping(String user, String domain, String regex) {
         getLogger().info("Remove regex mapping => " + regex + " for user: " + user + " domain: " + domain);
         return removeMappingInternal(user,domain,VirtualUserTable.REGEX_PREFIX + regex);
     }
@@ -213,14 +210,14 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#addAddressMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean addAddressMapping(String user, String domain, String address) throws ManageableVirtualUserTableException {
+    public boolean addAddressMapping(String user, String domain, String address) {
         if (address.indexOf('@') < 0) {
             address =  address + "@localhost";
         } 
         try {
             new MailAddress(address);
         } catch (ParseException e) {
-            throw new ManageableVirtualUserTableException("Invalid emailAddress: " + address);
+            throw new IllegalArgumentException("Invalid emailAddress: " + address);
         }
         if (checkMapping(user,domain,address) == true) {          
             getLogger().info("Add address mapping => " + address + " for user: " + user + " domain: " + domain);
@@ -233,7 +230,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#removeAddressMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean removeAddressMapping(String user, String domain, String address) throws ManageableVirtualUserTableException {
+    public boolean removeAddressMapping(String user, String domain, String address) {
         if (address.indexOf('@') < 0) {
             address =  address + "@localhost";
         } 
@@ -244,7 +241,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#addErrorMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean addErrorMapping(String user, String domain, String error) throws ManageableVirtualUserTableException {   
+    public boolean addErrorMapping(String user, String domain, String error) {   
         if (checkMapping(user,domain,error) == true) {          
             getLogger().info("Add error mapping => " + error + " for user: " + user + " domain: " + domain);
             return addMappingInternal(user,domain, VirtualUserTable.ERROR_PREFIX + error);
@@ -256,7 +253,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#removeErrorMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean removeErrorMapping(String user, String domain, String error) throws ManageableVirtualUserTableException {
+    public boolean removeErrorMapping(String user, String domain, String error) {
         getLogger().info("Remove error mapping => " + error + " for user: " + user + " domain: " + domain);     
         return removeMappingInternal(user,domain,VirtualUserTable.ERROR_PREFIX + error);
     }
@@ -265,7 +262,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#addMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean addMapping(String user, String domain, String mapping) throws ManageableVirtualUserTableException {
+    public boolean addMapping(String user, String domain, String mapping) {
 
         String map = mapping.toLowerCase();
         
@@ -274,7 +271,7 @@ public abstract class AbstractVirtualUse
         } else if (map.startsWith(VirtualUserTable.REGEX_PREFIX)) {
             return addRegexMapping(user,domain,map.substring(VirtualUserTable.REGEX_PREFIX.length()));
         } else if (map.startsWith(VirtualUserTable.ALIASDOMAIN_PREFIX)) {
-            if (user != null) throw new ManageableVirtualUserTableException("User must be null for aliasDomain mappings");
+            if (user != null) throw new IllegalArgumentException("User must be null for aliasDomain mappings");
             return addAliasDomainMapping(domain,map.substring(VirtualUserTable.ALIASDOMAIN_PREFIX.length()));
         } else {
             return addAddressMapping(user,domain,map);
@@ -285,7 +282,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#removeMapping(java.lang.String, java.lang.String, java.lang.String)
      */
-    public boolean removeMapping(String user, String domain, String mapping) throws ManageableVirtualUserTableException {
+    public boolean removeMapping(String user, String domain, String mapping) {
 
         String map = mapping.toLowerCase();
     
@@ -294,7 +291,7 @@ public abstract class AbstractVirtualUse
         } else if (map.startsWith(VirtualUserTable.REGEX_PREFIX)) {
             return removeRegexMapping(user,domain,map.substring(VirtualUserTable.REGEX_PREFIX.length()));
         } else if (map.startsWith(VirtualUserTable.ALIASDOMAIN_PREFIX)) {
-            if (user != null) throw new ManageableVirtualUserTableException("User must be null for aliasDomain mappings");
+            if (user != null) throw new IllegalArgumentException("User must be null for aliasDomain mappings");
             return removeAliasDomainMapping(domain,map.substring(VirtualUserTable.ALIASDOMAIN_PREFIX.length()));
         } else {
             return removeAddressMapping(user,domain,map);
@@ -326,7 +323,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#addAliasDomainMapping(java.lang.String, java.lang.String)
      */
-    public synchronized boolean addAliasDomainMapping(String aliasDomain, String realDomain) throws ManageableVirtualUserTableException {
+    public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
         getLogger().info("Add domain mapping: " + aliasDomain  + " => " + realDomain);
         return addMappingInternal(null, aliasDomain, VirtualUserTable.ALIASDOMAIN_PREFIX + realDomain);
     }
@@ -334,7 +331,7 @@ public abstract class AbstractVirtualUse
     /**
      * @see org.apache.james.vut.api.ManageableVirtualUserTable#removeAliasDomainMapping(java.lang.String, java.lang.String)
      */
-    public synchronized boolean removeAliasDomainMapping(String aliasDomain, String realDomain) throws ManageableVirtualUserTableException {
+    public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) {
         getLogger().info("Remove domain mapping: " + aliasDomain  + " => " + realDomain);
         return removeMappingInternal(null, aliasDomain, VirtualUserTable.ALIASDOMAIN_PREFIX + realDomain);
     }
@@ -352,7 +349,7 @@ public abstract class AbstractVirtualUse
      * @return true if successfully
      * @throws InvalidMappingException 
      */
-    protected abstract boolean  addMappingInternal(String user, String domain, String mapping) throws ManageableVirtualUserTableException;
+    protected abstract boolean  addMappingInternal(String user, String domain, String mapping);
     
     /**
      * Remove mapping 
@@ -363,7 +360,7 @@ public abstract class AbstractVirtualUse
      * @return true if successfully
      * @throws InvalidMappingException 
      */
-    protected abstract boolean  removeMappingInternal(String user, String domain, String mapping) throws ManageableVirtualUserTableException;
+    protected abstract boolean  removeMappingInternal(String user, String domain, String mapping);
 
     /**
      * Return Collection of all mappings for the given username and domain

Modified: james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/JamesVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/JamesVirtualUserTable.java?rev=1027073&r1=1027072&r2=1027073&view=diff
==============================================================================
--- james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/JamesVirtualUserTable.java (original)
+++ james/server/trunk/user-library/src/main/java/org/apache/james/vut/lib/JamesVirtualUserTable.java Mon Oct 25 11:42:31 2010
@@ -19,7 +19,6 @@
 package org.apache.james.vut.lib;
 
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Map;
 
 import javax.annotation.PostConstruct;
@@ -33,12 +32,9 @@ import org.apache.james.lifecycle.Config
 import org.apache.james.lifecycle.Disposable;
 import org.apache.james.lifecycle.LogEnabled;
 import org.apache.james.services.InstanceFactory;
-import org.apache.james.vut.api.ErrorMappingException;
-import org.apache.james.vut.api.ManageableVirtualUserTable;
-import org.apache.james.vut.api.ManageableVirtualUserTableException;
 import org.apache.james.vut.api.VirtualUserTable;
 
-public class JamesVirtualUserTable implements ManageableVirtualUserTable, Configurable, LogEnabled{
+public class JamesVirtualUserTable implements VirtualUserTable, Configurable, LogEnabled{
 
 	private HierarchicalConfiguration config;
 	private Log log;
@@ -100,76 +96,56 @@ public class JamesVirtualUserTable imple
 		}
 	}
 
-	public boolean addAddressMapping(String user, String domain, String address)
-			throws ManageableVirtualUserTableException {
-		return getManagement().addAddressMapping(user, domain, address);
+	public boolean addAddressMapping(String user, String domain, String address) {
+		return vut.addAddressMapping(user, domain, address);
 	}
 
-	public boolean addAliasDomainMapping(String aliasDomain, String realDomain)
-			throws ManageableVirtualUserTableException {
-		return getManagement().addAliasDomainMapping(aliasDomain, realDomain);
+	public boolean addAliasDomainMapping(String aliasDomain, String realDomain) {
+		return vut.addAliasDomainMapping(aliasDomain, realDomain);
 	}
 
-	public boolean addErrorMapping(String user, String domain, String error)
-			throws ManageableVirtualUserTableException {
-		return getManagement().addErrorMapping(user, domain, error);
+	public boolean addErrorMapping(String user, String domain, String error) {
+		return vut.addErrorMapping(user, domain, error);
 	}
 
-	public boolean addMapping(String user, String domain, String mapping)
-			throws ManageableVirtualUserTableException {
-		return getManagement().addMapping(user, domain, mapping);
+	public boolean addMapping(String user, String domain, String mapping) {
+		return vut.addMapping(user, domain, mapping);
 	}
 
-	public boolean addRegexMapping(String user, String domain, String regex)
-			throws ManageableVirtualUserTableException {
-		return getManagement().addRegexMapping(user, domain, regex);
+	public boolean addRegexMapping(String user, String domain, String regex) {
+		return vut.addRegexMapping(user, domain, regex);
 	}
 
 	public Map<String, Collection<String>> getAllMappings() {
-		try {
-			return getManagement().getAllMappings();
-		} catch (ManageableVirtualUserTableException e) {
-			return new HashMap<String, Collection<String>>();
-		}
+	    return vut.getAllMappings();
 	}
 
-	public Collection<String> getUserDomainMappings(String user, String domain)
-			throws ManageableVirtualUserTableException {
-		return getManagement().getUserDomainMappings(user, domain);
+	public Collection<String> getUserDomainMappings(String user, String domain) {
+		return vut.getUserDomainMappings(user, domain);
 	}
 
 	public boolean removeAddressMapping(String user, String domain,
-			String address) throws ManageableVirtualUserTableException {
-		return getManagement().removeAddressMapping(user, domain, address);
+			String address) {
+		return vut.removeAddressMapping(user, domain, address);
 	}
 
 	public boolean removeAliasDomainMapping(String aliasDomain,
-			String realDomain) throws ManageableVirtualUserTableException {
-		return getManagement().removeAliasDomainMapping(aliasDomain, realDomain);
+			String realDomain) {
+		return vut.removeAliasDomainMapping(aliasDomain, realDomain);
 
 	}
 
-	public boolean removeErrorMapping(String user, String domain, String error)
-			throws ManageableVirtualUserTableException {
-		return getManagement().removeErrorMapping(user, domain, error);
+	public boolean removeErrorMapping(String user, String domain, String error) {
+		return vut.removeErrorMapping(user, domain, error);
 	}
 
-	public boolean removeMapping(String user, String domain, String mapping)
-			throws ManageableVirtualUserTableException {
-		return getManagement().removeMapping(user, domain, mapping);
+	public boolean removeMapping(String user, String domain, String mapping) {
+		return vut.removeMapping(user, domain, mapping);
 	}
 
-	public boolean removeRegexMapping(String user, String domain, String regex)
-			throws ManageableVirtualUserTableException {
-		return getManagement().removeRegexMapping(user, domain, regex);
+	public boolean removeRegexMapping(String user, String domain, String regex) {
+		return vut.removeRegexMapping(user, domain, regex);
 	}
 	
-	private ManageableVirtualUserTable getManagement() throws ManageableVirtualUserTableException{
-		if (vut instanceof ManageableVirtualUserTable) {
-			return (ManageableVirtualUserTable) vut;
-		} else {
-			throw new ManageableVirtualUserTableException("VirtualUserTable implementation is not managable");
-		}
-	}
     
 }



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