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 2006/11/20 10:07:43 UTC
svn commit: r477113 - in /james/server/trunk/src: conf/
java/org/apache/james/core/ java/org/apache/james/management/
java/org/apache/james/remotemanager/ java/org/apache/james/services/
java/org/apache/james/util/ java/org/apache/james/vut/ test/org/a...
Author: norman
Date: Mon Nov 20 01:07:39 2006
New Revision: 477113
URL: http://svn.apache.org/viewvc?view=rev&rev=477113
Log:
Add method which return all mappings to RemoteManager and management interfaces. See JAMES-706
Start to write junit tests
Move some utils methods from AbstractVirtualUserTable to VirtualUserTableUtil
Added:
james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java (with props)
james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java (with props)
Modified:
james/server/trunk/src/conf/sqlResources.xml
james/server/trunk/src/java/org/apache/james/core/DefaultVirtualUserTable.java
james/server/trunk/src/java/org/apache/james/management/VirtualUserTableManagement.java
james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagement.java
james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagementService.java
james/server/trunk/src/java/org/apache/james/util/VirtualUserTableUtil.java
james/server/trunk/src/java/org/apache/james/vut/AbstractVirtualUserTable.java
james/server/trunk/src/java/org/apache/james/vut/JDBCVirtualUserTable.java
james/server/trunk/src/java/org/apache/james/vut/XMLVirtualUserTable.java
james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java
james/server/trunk/src/test/org/apache/james/vut/AbstractVirtualUserTableTest.java
james/server/trunk/src/test/org/apache/james/vut/XMLVirtualUserTableTest.java
Modified: james/server/trunk/src/conf/sqlResources.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/conf/sqlResources.xml?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/conf/sqlResources.xml (original)
+++ james/server/trunk/src/conf/sqlResources.xml Mon Nov 20 01:07:39 2006
@@ -1002,6 +1002,8 @@
<sql name="addMapping">insert into VirtualUserTable values(?,?,?) </sql>
+ <sql name="selectAllMappings">select * from VirtualUserTable </sql>
+
<sql name="selectDomains">select distinct domain from VirtualUserTable</sql>
<sql name="selectDomain">select distinct domain from VirtualUserTable where domain = ? </sql>
Modified: james/server/trunk/src/java/org/apache/james/core/DefaultVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/core/DefaultVirtualUserTable.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/DefaultVirtualUserTable.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/DefaultVirtualUserTable.java Mon Nov 20 01:07:39 2006
@@ -22,6 +22,7 @@
package org.apache.james.core;
import java.util.Collection;
+import java.util.Map;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.service.ServiceException;
@@ -126,5 +127,12 @@
*/
public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException {
return vut.removeMapping(user, domain, mapping);
+ }
+
+ /**
+ * @see org.apache.james.services.VirtualUserTableManagement#getAllMappings()
+ */
+ public Map getAllMappings() {
+ return vut.getAllMappings();
}
}
Modified: james/server/trunk/src/java/org/apache/james/management/VirtualUserTableManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/VirtualUserTableManagement.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/management/VirtualUserTableManagement.java (original)
+++ james/server/trunk/src/java/org/apache/james/management/VirtualUserTableManagement.java Mon Nov 20 01:07:39 2006
@@ -22,6 +22,7 @@
package org.apache.james.management;
import java.util.Collection;
+import java.util.Map;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
@@ -177,5 +178,12 @@
} catch (InvalidMappingException e) {
throw new VirtualUserTableManagementException(e);
}
+ }
+
+ /**
+ * @see org.apache.james.services.VirtualUserTableManagementService#getAllMappings(java.lang.String)
+ */
+ public Map getAllMappings(String virtualUserTable) throws VirtualUserTableManagementException{
+ return getTable(virtualUserTable).getAllMappings();
}
}
Modified: james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java Mon Nov 20 01:07:39 2006
@@ -30,6 +30,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import javax.mail.internet.ParseException;
@@ -93,6 +94,7 @@
"ADDMAPPING",
"REMOVEMAPPING",
"LISTMAPPING",
+ "LISTALLMAPPINGS",
"QUIT",
"SHUTDOWN"
});
@@ -254,6 +256,7 @@
} catch (NoSuchMethodException e) {
return doUnknownCommand(rawCommand);
} catch (Exception e) {
+ e.printStackTrace();
writeLoggedFlushedResponse("could not execute command " + command);
}
return false;
@@ -509,6 +512,7 @@
out.println("addmapping [table=virtualusertablename] user@domain mapping add mapping for the given emailaddress");
out.println("removemapping [table=virtualusertablename] user@domain mapping remove mapping for the given emailaddress");
out.println("listmapping [table=virtualusertablename] user@domain list all mappings for the given emailaddress");
+ out.println("listallmappings [table=virtualusertablename] list all mappings");
out.println("listspool [spoolrepositoryname] ([header=name] [regex=value]) list all mails which reside in the spool and have an error state");
out.println("flushspool [spoolrepositoryname] ([key] | [header=name] [regex=value]) try to resend the mail assing to the given key. If no key is given all mails get resend");
out.println("deletespool [spoolrepositoryname] ([key] | [header=name] [regex=value]) delete the mail assign to the given key. If no key is given all mails get deleted");
@@ -1521,6 +1525,51 @@
} catch (IllegalArgumentException e) {
getLogger().error("Error on listing mapping: " + e);
out.println("Error on listing mapping: " + e);
+ out.flush();
+ }
+ return true;
+ }
+
+ private boolean doLISTALLMAPPINGS(String argument) {
+ String[] args = null;
+ String table = null;
+
+ if (argument != null)
+ args = argument.split(" ");
+
+ // check if the command was called correct
+ if (args != null && args.length > 1) {
+ writeLoggedFlushedResponse("Usage: LISTALLMAPPINGS [table=table]");
+ return true;
+ }
+
+ if (args != null && args[0].startsWith("table=")) {
+ table = args[0].substring("table=".length());
+
+ }
+
+ try {
+ Map mappings = theConfigData.getVirtualUserTableManagement().getAllMappings(table);
+ if (mappings == null) {
+ out.println("No mappings found");
+ out.flush();
+ } else {
+ out.println("Mappings:");
+
+ Iterator m = mappings.keySet().iterator();
+ while(m.hasNext()) {
+ String key = m.next().toString();
+ out.println(key + " -> " + mappings.get(key));
+ }
+ out.flush();
+ }
+ } catch (VirtualUserTableManagementException e) {
+ getLogger().error("Error on listing all mapping: " + e);
+ out.println("Error on listing all mapping: " + e);
+ out.flush();
+ } catch (IllegalArgumentException e) {
+ getLogger().error("Error on listing all mapping: " + e);
+ out.println("Error on listing all mapping: " + e);
out.flush();
}
return true;
Modified: james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagement.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagement.java (original)
+++ james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagement.java Mon Nov 20 01:07:39 2006
@@ -22,6 +22,7 @@
package org.apache.james.services;
import java.util.Collection;
+import java.util.Map;
import org.apache.james.vut.InvalidMappingException;
@@ -130,4 +131,12 @@
* @throws InvalidMappingException
*/
public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException;
+
+
+ /**
+ * Return a Map which holds all mappings
+ *
+ * @return Map which holds all mappings
+ */
+ public Map getAllMappings();
}
Modified: james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagementService.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagementService.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagementService.java (original)
+++ james/server/trunk/src/java/org/apache/james/services/VirtualUserTableManagementService.java Mon Nov 20 01:07:39 2006
@@ -22,6 +22,7 @@
package org.apache.james.services;
import java.util.Collection;
+import java.util.Map;
import org.apache.james.management.VirtualUserTableManagementException;
import org.apache.james.vut.InvalidMappingException;
@@ -140,4 +141,13 @@
* @throws InvalidMappingException get thrown if an invalid argument was given
*/
public boolean removeMapping(String virtualUserTable, String user, String domain, String mapping) throws VirtualUserTableManagementException;
+
+ /**
+ * Return a Map which holds all mappings
+ *
+ * @param virtualUserTable The virtualUserTable
+ * @return Map which holds all mappings
+ * @throws VirtualUserTableManagementException
+ */
+ public Map getAllMappings(String virtualUserTable) throws VirtualUserTableManagementException;
}
Modified: james/server/trunk/src/java/org/apache/james/util/VirtualUserTableUtil.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/util/VirtualUserTableUtil.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/util/VirtualUserTableUtil.java (original)
+++ james/server/trunk/src/java/org/apache/james/util/VirtualUserTableUtil.java Mon Nov 20 01:07:39 2006
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
@@ -162,5 +163,45 @@
map.add(tokenizer.nextToken().trim());
}
return map;
+ }
+
+ /**
+ * Convert a raw mapping String to a Collection
+ *
+ * @param rawMapping the mapping Strin
+ * @return map a collection which holds all mappings
+ */
+ public static ArrayList mappingToCollection(String rawMapping) {
+ ArrayList map = new ArrayList();
+ StringTokenizer tokenizer = new StringTokenizer(rawMapping,
+ VirtualUserTableUtil.getSeparator(rawMapping));
+
+ while (tokenizer.hasMoreTokens()) {
+ String raw = tokenizer.nextToken().trim();
+ map.add(raw);
+ }
+ return map;
+ }
+
+
+ /**
+ * Convert a Collection which holds mappings to a raw mapping String
+ *
+ * @param map the Collection
+ * @return mapping the mapping String
+ */
+ public static String CollectionToMapping(Collection map) {
+ StringBuffer mapping = new StringBuffer();
+
+ Iterator mappings = map.iterator();
+
+ while (mappings.hasNext()) {
+ mapping.append(mappings.next());
+
+ if (mappings.hasNext()) {
+ mapping.append(";");
+ }
+ }
+ return mapping.toString();
}
}
Modified: james/server/trunk/src/java/org/apache/james/vut/AbstractVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/vut/AbstractVirtualUserTable.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/vut/AbstractVirtualUserTable.java (original)
+++ james/server/trunk/src/java/org/apache/james/vut/AbstractVirtualUserTable.java Mon Nov 20 01:07:39 2006
@@ -27,7 +27,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
-import java.util.StringTokenizer;
+import java.util.Map;
import javax.mail.internet.ParseException;
@@ -202,7 +202,7 @@
*/
public boolean addMapping(String user, String domain, String mapping) throws InvalidMappingException {
String map = mapping.toLowerCase();
-
+
if (map.startsWith(VirtualUserTable.ERROR_PREFIX)) {
return addErrorMapping(user,domain,map.substring(VirtualUserTable.ERROR_PREFIX.length()));
} else if (map.startsWith(VirtualUserTable.REGEX_PREFIX)) {
@@ -228,44 +228,19 @@
}
/**
- * Convert a raw mapping String to a Collection
- *
- * @param rawMapping the mapping Strin
- * @return map a collection which holds all mappings
- */
- protected ArrayList mappingToCollection(String rawMapping) {
- ArrayList map = new ArrayList();
- StringTokenizer tokenizer = new StringTokenizer(rawMapping,
- VirtualUserTableUtil.getSeparator(rawMapping));
-
- while (tokenizer.hasMoreTokens()) {
- String raw = tokenizer.nextToken().trim();
- map.add(raw);
- }
- return map;
- }
-
-
- /**
- * Convert a Collection which holds mappings to a raw mapping String
- *
- * @param map the Collection
- * @return mapping the mapping String
+ * @see org.apache.james.services.VirtualUserTableManagement#getAllMappings()
*/
- protected String CollectionToMapping(Collection map) {
- StringBuffer mapping = new StringBuffer();
+ public Map getAllMappings() {
+ int count = 0;
+ Map mappings = getAllMappingsInternal();
- Iterator mappings = map.iterator();
+ if (mappings != null) {
+ count = mappings.size();
+ }
+ getLogger().debug("Retrieve all mappings. Mapping count: " + count);
+ return mappings;
+ }
- while (mappings.hasNext()) {
- mapping.append(mappings.next());
-
- if (mappings.hasNext()) {
- mapping.append(";");
- }
- }
- return mapping.toString();
- }
private boolean checkMapping(String user,String domain, String mapping) {
Collection mappings = getUserDomainMappings(user,domain);
@@ -388,4 +363,11 @@
* @return Collection which hold the mappings
*/
protected abstract Collection getUserDomainMappingsInternal(String user, String domain);
+
+ /**
+ * Return a Map which holds all Mappings
+ *
+ * @return Map
+ */
+ protected abstract Map getAllMappingsInternal();
}
Modified: james/server/trunk/src/java/org/apache/james/vut/JDBCVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/vut/JDBCVirtualUserTable.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/vut/JDBCVirtualUserTable.java (original)
+++ james/server/trunk/src/java/org/apache/james/vut/JDBCVirtualUserTable.java Mon Nov 20 01:07:39 2006
@@ -46,6 +46,7 @@
import org.apache.james.services.FileSystem;
import org.apache.james.util.JDBCUtil;
import org.apache.james.util.SqlResources;
+import org.apache.james.util.VirtualUserTableUtil;
/**
*
@@ -293,7 +294,7 @@
if (map != null && map.size() > 1) {
map.remove(mapping);
- return updateMapping(newUser,newDomain,CollectionToMapping(map));
+ return updateMapping(newUser,newDomain,VirtualUserTableUtil.CollectionToMapping(map));
} else {
return removeRawMapping(newUser,newDomain,mapping);
}
@@ -311,7 +312,7 @@
if (map != null && map.size() != 0) {
map.add(regex);
- return updateMapping(newUser,newDomain,CollectionToMapping(map));
+ return updateMapping(newUser,newDomain,VirtualUserTableUtil.CollectionToMapping(map));
}
return addRawMapping(newUser,newDomain,regex);
}
@@ -489,7 +490,7 @@
mappingStmt.setString(2, domain);
mappingRS = mappingStmt.executeQuery();
if (mappingRS.next()) {
- return mappingToCollection(mappingRS.getString(1));
+ return VirtualUserTableUtil.mappingToCollection(mappingRS.getString(1));
}
} finally {
theJDBCUtil.closeJDBCResultSet(mappingRS);
@@ -571,6 +572,43 @@
theJDBCUtil.closeJDBCConnection(conn);
}
return false;
+ }
+
+ /**
+ * @see org.apache.james.vut.AbstractVirtualUserTable#getAllMappingsInternal()
+ */
+ public Map getAllMappingsInternal() {
+ Connection conn = null;
+ PreparedStatement mappingStmt = null;
+ HashMap mapping = new HashMap();
+
+ try {
+ conn = dataSourceComponent.getConnection();
+ mappingStmt = conn.prepareStatement(sqlQueries.getSqlString("selectAllMappings", true));
+
+ ResultSet mappingRS = null;
+ try {
+ mappingRS = mappingStmt.executeQuery();
+ while(mappingRS.next()) {
+ String user = mappingRS.getString(1);
+ String domain = mappingRS.getString(2);
+ String map = mappingRS.getString(3);
+
+ mapping.put(user + "@" + domain,map);
+ }
+
+ if (mapping.size() > 0 ) return mapping;
+ } finally {
+ theJDBCUtil.closeJDBCResultSet(mappingRS);
+ }
+
+ } catch (SQLException sqle) {
+ getLogger().error("Error accessing database", sqle);
+ } finally {
+ theJDBCUtil.closeJDBCStatement(mappingStmt);
+ theJDBCUtil.closeJDBCConnection(conn);
+ }
+ return null;
}
}
Modified: james/server/trunk/src/java/org/apache/james/vut/XMLVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/vut/XMLVirtualUserTable.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/java/org/apache/james/vut/XMLVirtualUserTable.java (original)
+++ james/server/trunk/src/java/org/apache/james/vut/XMLVirtualUserTable.java Mon Nov 20 01:07:39 2006
@@ -59,7 +59,7 @@
while (keys.hasNext()) {
String key = keys.next().toString();
- Collection values = mappingToCollection(mappings.get(key).toString());
+ Collection values = VirtualUserTableUtil.mappingToCollection(mappings.get(key).toString());
String[] args1 = key.split("@");
if (args1 != null && args1.length == 2) {
@@ -110,7 +110,7 @@
public Collection getUserDomainMappingsInternal(String user, String domain) {
Object maps = mappings.get(user + "@" + domain);
if (maps != null) {
- return mappingToCollection(maps.toString());
+ return VirtualUserTableUtil.mappingToCollection(maps.toString());
} else {
return null;
}
@@ -128,5 +128,16 @@
*/
public boolean containsDomain(String domain) {
return domains.contains(domain);
+ }
+
+ /**
+ * @see org.apache.james.vut.AbstractVirtualUserTable#getAllMappingsInternal()
+ */
+ public Map getAllMappingsInternal() {
+ if (mappings.size() > 0) {
+ return mappings;
+ } else {
+ return null;
+ }
}
}
Modified: james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java Mon Nov 20 01:07:39 2006
@@ -25,18 +25,22 @@
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.commons.net.telnet.TelnetClient;
+import org.apache.james.management.VirtualUserTableManagement;
import org.apache.james.services.AbstractDNSServer;
import org.apache.james.services.DNSServer;
import org.apache.james.services.JamesConnectionManager;
import org.apache.james.services.MailServer;
import org.apache.james.services.UsersRepository;
import org.apache.james.services.UsersStore;
+import org.apache.james.services.VirtualUserTableManagementService;
import org.apache.james.test.mock.avalon.MockLogger;
import org.apache.james.test.mock.avalon.MockServiceManager;
import org.apache.james.test.mock.avalon.MockSocketManager;
import org.apache.james.test.mock.avalon.MockThreadManager;
import org.apache.james.test.mock.james.MockMailServer;
import org.apache.james.test.mock.james.MockUsersStore;
+import org.apache.james.test.mock.james.MockVirtualUserTableManagementImpl;
+import org.apache.james.test.mock.james.MockVirtualUserTableStore;
import org.apache.james.test.util.Util;
import org.apache.james.userrepository.MockUsersRepository;
import org.apache.james.util.InternetPrintWriter;
@@ -73,6 +77,7 @@
protected TelnetClient m_telnetClient;
private MockUsersRepository m_mockUsersRepository;
private MockMailServer mailServer;
+ private static final String VUT_TABLE = "VUT";
protected void setUp() throws Exception {
m_remoteManager = new RemoteManager();
@@ -169,6 +174,12 @@
serviceManager.put(SocketManager.ROLE, new MockSocketManager(m_remoteManagerListenerPort));
serviceManager.put(ThreadManager.ROLE, new MockThreadManager());
serviceManager.put(DNSServer.ROLE, setUpDNSServer());
+
+ MockVirtualUserTableStore vutStore = new MockVirtualUserTableStore();
+ VirtualUserTableManagement vutManagement = new VirtualUserTableManagement();
+ vutManagement.setVirtualUserTableStore(vutStore);
+ vutManagement.setDefaultVirtualUserTable(new MockVirtualUserTableManagementImpl());
+ serviceManager.put(VirtualUserTableManagementService.ROLE, vutManagement);
return serviceManager;
}
@@ -515,5 +526,78 @@
assertFalse("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd2"));
assertTrue("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pWD2"));
+ }
+
+ public void testAddMapping() throws IOException {
+ String lastLine;
+ finishSetUp(m_testConfiguration);
+ connect();
+ login();
+
+ sendCommand("addmapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("addmapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Not add mapping... allready exists",lastLine.endsWith("false"));
+ }
+
+ public void testRemoveMapping() throws IOException {
+ String lastLine;
+ finishSetUp(m_testConfiguration);
+ connect();
+ login();
+
+ sendCommand("addmapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("removemapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("remove mapping",lastLine.endsWith("true"));
+
+ sendCommand("removemapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Not remove mapping... mapping not exists",lastLine.endsWith("false"));
+ }
+
+ public void testListAllMappings() throws IOException {
+ String lastLine;
+ finishSetUp(m_testConfiguration);
+ connect();
+ login();
+
+ sendCommand("addmapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("addmapping test2@test junit2");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("listallmappings");
+ List answer = readAnswer(3);
+ assertTrue("Read first mapping", answer.get(1).toString().endsWith("junit"));
+ assertTrue("Read second mapping line", answer.get(2).toString().endsWith("junit2"));
+ }
+
+ public void testListMapping() throws IOException {
+ String lastLine;
+ finishSetUp(m_testConfiguration);
+ connect();
+ login();
+
+ sendCommand("addmapping test@test junit");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("addmapping test2@test junit2");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("Add mapping", lastLine.endsWith("true"));
+
+ sendCommand("listmapping test@test");
+ lastLine = readAnswer(2).get(1).toString();
+ assertTrue("list mapping", lastLine.endsWith("junit"));
}
}
Added: james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java?view=auto&rev=477113
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java (added)
+++ james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java Mon Nov 20 01:07:39 2006
@@ -0,0 +1,137 @@
+/****************************************************************
+ * 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.test.mock.james;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.james.services.VirtualUserTable;
+import org.apache.james.services.VirtualUserTableManagement;
+import org.apache.james.util.VirtualUserTableUtil;
+import org.apache.james.vut.ErrorMappingException;
+import org.apache.james.vut.InvalidMappingException;
+
+public class MockVirtualUserTableManagementImpl implements VirtualUserTableManagement {
+
+ HashMap store = new HashMap();
+
+ public boolean addAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return addRawMapping(user,domain,address);
+ }
+
+ public boolean addErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return addRawMapping(user,domain,VirtualUserTable.ERROR_PREFIX + error);
+ }
+
+ public boolean addMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ if (mapping.startsWith(VirtualUserTable.ERROR_PREFIX)){
+ return addErrorMapping(user,domain,mapping.substring(VirtualUserTable.ERROR_PREFIX.length()));
+ } else if (mapping.startsWith(VirtualUserTable.REGEX_PREFIX)) {
+ return addErrorMapping(user,domain,mapping.substring(VirtualUserTable.REGEX_PREFIX.length()));
+ } else {
+ return addAddressMapping(user,domain,mapping);
+ }
+ }
+
+ public boolean addRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return addRawMapping(user,domain,VirtualUserTable.REGEX_PREFIX + regex);
+ }
+
+ public Map getAllMappings() {
+ if (store.size() > 0) {
+ return store;
+ } else {
+ return null;
+ }
+ }
+
+ public Collection getUserDomainMappings(String user, String domain) throws InvalidMappingException {
+ String mapping = (String) store.get(user + "@" + domain);
+ if (mapping != null) {
+ return VirtualUserTableUtil.mappingToCollection(mapping);
+ } else {
+ return null;
+ }
+ }
+
+ public boolean removeAddressMapping(String user, String domain, String address) throws InvalidMappingException {
+ return removeRawMapping(user,domain,address);
+ }
+
+ public boolean removeErrorMapping(String user, String domain, String error) throws InvalidMappingException {
+ return removeRawMapping(user,domain,VirtualUserTable.ERROR_PREFIX + error);
+ }
+
+ public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException {
+ if (mapping.startsWith(VirtualUserTable.ERROR_PREFIX)){
+ return removeErrorMapping(user,domain,mapping.substring(VirtualUserTable.ERROR_PREFIX.length()));
+ } else if (mapping.startsWith(VirtualUserTable.REGEX_PREFIX)) {
+ return removeErrorMapping(user,domain,mapping.substring(VirtualUserTable.REGEX_PREFIX.length()));
+ } else {
+ return removeAddressMapping(user,domain,mapping);
+ }
+ }
+
+ public boolean removeRegexMapping(String user, String domain, String regex) throws InvalidMappingException {
+ return removeRawMapping(user,domain,VirtualUserTable.REGEX_PREFIX + regex);
+ }
+
+ public Collection getMappings(String user, String domain) throws ErrorMappingException {
+ throw new UnsupportedOperationException("Not implemented yet");
+ }
+
+ private boolean addRawMapping(String user,String domain, String mapping) {
+ Collection map;
+ String key = user + "@" + domain;
+ String mappings = (String) store.get(key);
+
+ if (mappings != null) {
+ map = VirtualUserTableUtil.mappingToCollection(mappings);
+
+ if (map.contains(mapping)) {
+ return false;
+ } else {
+ map.add(mapping);
+ store.put(key, VirtualUserTableUtil.CollectionToMapping(map));
+ return true;
+ }
+ } else {
+ store.put(key, mapping);
+ return true;
+ }
+ }
+
+ private boolean removeRawMapping(String user,String domain, String mapping) {
+ Collection map;
+ String key = user + "@" + domain;
+ String mappings = (String) store.get(key);
+ if (mappings != null) {
+ map = VirtualUserTableUtil.mappingToCollection(mappings);
+ if (map.remove(mapping)) {
+ store.put(key, VirtualUserTableUtil.CollectionToMapping(map));
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
Propchange: james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableManagementImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java?view=auto&rev=477113
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java (added)
+++ james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java Mon Nov 20 01:07:39 2006
@@ -0,0 +1,49 @@
+/****************************************************************
+ * 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.test.mock.james;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.james.services.VirtualUserTable;
+import org.apache.james.services.VirtualUserTableStore;
+
+public class MockVirtualUserTableStore implements VirtualUserTableStore {
+ HashMap tableStore = new HashMap();
+
+ public VirtualUserTable getTable(String name) {
+ return (VirtualUserTable) tableStore.get(name);
+ }
+
+ public Iterator getTableNames() {
+ return tableStore.keySet().iterator();
+ }
+
+ public void addTable(String tableName) {
+ tableStore.put(tableName, new MockVirtualUserTableManagementImpl());
+ }
+
+ public void removeTable(String tableName) {
+ tableStore.remove(tableName);
+ }
+
+}
Propchange: james/server/trunk/src/test/org/apache/james/test/mock/james/MockVirtualUserTableStore.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: james/server/trunk/src/test/org/apache/james/vut/AbstractVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/vut/AbstractVirtualUserTableTest.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/test/org/apache/james/vut/AbstractVirtualUserTableTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/vut/AbstractVirtualUserTableTest.java Mon Nov 20 01:07:39 2006
@@ -58,7 +58,8 @@
assertTrue("Added virtual mapping", virtualUserTable.addRegexMapping(user, domain, regex));
assertTrue("Added virtual mapping", virtualUserTable.addRegexMapping(user, domain, regex2));
- assertTrue("Two mappings",virtualUserTable.getMappings(user, domain).size() == 2);
+ assertEquals("Two mappings",virtualUserTable.getMappings(user, domain).size(), 2);
+ assertEquals("One mappingline",virtualUserTable.getAllMappings().size(),1);
// Test DomainList implementations!
assertEquals("Four domains",virtualUserTable.getDomains().size(), 4);
@@ -75,6 +76,8 @@
assertTrue("remove virtual mapping", virtualUserTable.removeRegexMapping(user, domain, regex2));
assertNull("No mapping",virtualUserTable.getMappings(user, domain));
+ assertNull("No mappings",virtualUserTable.getAllMappings());
+
} catch (InvalidMappingException e) {
fail("Storing failed");
}
@@ -96,7 +99,8 @@
assertTrue("Added virtual mapping", virtualUserTable.addAddressMapping(user, domain, address));
assertTrue("Added virtual mapping", virtualUserTable.addAddressMapping(user, domain, address2));
- assertTrue("Two mappings",virtualUserTable.getMappings(user, domain).size() == 2);
+ assertEquals("Two mappings",virtualUserTable.getMappings(user, domain).size(),2);
+ assertEquals("One mappingline",virtualUserTable.getAllMappings().size(),1);
assertTrue("remove virtual mapping", virtualUserTable.removeAddressMapping(user, domain, address));
@@ -109,6 +113,8 @@
assertTrue("remove virtual mapping", virtualUserTable.removeAddressMapping(user, domain, address2));
assertNull("No mapping",virtualUserTable.getMappings(user, domain));
+ assertNull("No mappings",virtualUserTable.getAllMappings());
+
} catch (InvalidMappingException e) {
fail("Storing failed");
}
@@ -126,6 +132,7 @@
assertNull("No mapping",virtualUserTable.getMappings(user, domain));
assertTrue("Added virtual mapping", virtualUserTable.addErrorMapping(user, domain, error));
+ assertEquals("One mappingline",virtualUserTable.getAllMappings().size(),1);
try {
virtualUserTable.getMappings(user, domain);
@@ -136,11 +143,12 @@
assertTrue("remove virtual mapping", virtualUserTable.removeErrorMapping(user, domain, error));
assertNull("No mapping",virtualUserTable.getMappings(user, domain));
+ assertNull("No mappings",virtualUserTable.getAllMappings());
+
} catch (InvalidMappingException e) {
fail("Storing failed");
}
-
}
}
Modified: james/server/trunk/src/test/org/apache/james/vut/XMLVirtualUserTableTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/vut/XMLVirtualUserTableTest.java?view=diff&rev=477113&r1=477112&r2=477113
==============================================================================
--- james/server/trunk/src/test/org/apache/james/vut/XMLVirtualUserTableTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/vut/XMLVirtualUserTableTest.java Mon Nov 20 01:07:39 2006
@@ -89,6 +89,7 @@
public void testGetMappings() throws ErrorMappingException {
assertEquals("Found 2 mappings", table.getMappings(user, domain).size(), 2);
assertEquals("Found 2 domains", table.getDomains().size(),2);
+ assertEquals("Found 2 mapping line", table.getAllMappings().size(),2);
}
public void testGetUserMappings() throws ErrorMappingException, InvalidMappingException {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org