1 19 20 21 package org.apache.james.test.mock.james; 22 23 import java.util.Collection ; 24 import java.util.HashMap ; 25 import java.util.Map ; 26 27 import org.apache.james.services.VirtualUserTable; 28 import org.apache.james.services.VirtualUserTableManagement; 29 import org.apache.james.util.VirtualUserTableUtil; 30 import org.apache.james.vut.ErrorMappingException; 31 import org.apache.james.vut.InvalidMappingException; 32 33 public class MockVirtualUserTableManagementImpl implements VirtualUserTableManagement { 34 35 HashMap store = new HashMap (); 36 37 public boolean addAddressMapping(String user, String domain, String address) throws InvalidMappingException { 38 return addRawMapping(user,domain,address); 39 } 40 41 public boolean addErrorMapping(String user, String domain, String error) throws InvalidMappingException { 42 return addRawMapping(user,domain,VirtualUserTable.ERROR_PREFIX + error); 43 } 44 45 public boolean addMapping(String user, String domain, String mapping) throws InvalidMappingException { 46 if (mapping.startsWith(VirtualUserTable.ERROR_PREFIX)){ 47 return addErrorMapping(user,domain,mapping.substring(VirtualUserTable.ERROR_PREFIX.length())); 48 } else if (mapping.startsWith(VirtualUserTable.REGEX_PREFIX)) { 49 return addErrorMapping(user,domain,mapping.substring(VirtualUserTable.REGEX_PREFIX.length())); 50 } else { 51 return addAddressMapping(user,domain,mapping); 52 } 53 } 54 55 public boolean addRegexMapping(String user, String domain, String regex) throws InvalidMappingException { 56 return addRawMapping(user,domain,VirtualUserTable.REGEX_PREFIX + regex); 57 } 58 59 public Map getAllMappings() { 60 if (store.size() > 0) { 61 return store; 62 } else { 63 return null; 64 } 65 } 66 67 public Collection getUserDomainMappings(String user, String domain) throws InvalidMappingException { 68 String mapping = (String ) store.get(user + "@" + domain); 69 if (mapping != null) { 70 return VirtualUserTableUtil.mappingToCollection(mapping); 71 } else { 72 return null; 73 } 74 } 75 76 public boolean removeAddressMapping(String user, String domain, String address) throws InvalidMappingException { 77 return removeRawMapping(user,domain,address); 78 } 79 80 public boolean removeErrorMapping(String user, String domain, String error) throws InvalidMappingException { 81 return removeRawMapping(user,domain,VirtualUserTable.ERROR_PREFIX + error); 82 } 83 84 public boolean removeMapping(String user, String domain, String mapping) throws InvalidMappingException { 85 if (mapping.startsWith(VirtualUserTable.ERROR_PREFIX)){ 86 return removeErrorMapping(user,domain,mapping.substring(VirtualUserTable.ERROR_PREFIX.length())); 87 } else if (mapping.startsWith(VirtualUserTable.REGEX_PREFIX)) { 88 return removeErrorMapping(user,domain,mapping.substring(VirtualUserTable.REGEX_PREFIX.length())); 89 } else { 90 return removeAddressMapping(user,domain,mapping); 91 } 92 } 93 94 public boolean removeRegexMapping(String user, String domain, String regex) throws InvalidMappingException { 95 return removeRawMapping(user,domain,VirtualUserTable.REGEX_PREFIX + regex); 96 } 97 98 public Collection getMappings(String user, String domain) throws ErrorMappingException { 99 throw new UnsupportedOperationException ("Not implemented yet"); 100 } 101 102 private boolean addRawMapping(String user,String domain, String mapping) { 103 Collection map; 104 String key = user + "@" + domain; 105 String mappings = (String ) store.get(key); 106 107 if (mappings != null) { 108 map = VirtualUserTableUtil.mappingToCollection(mappings); 109 110 if (map.contains(mapping)) { 111 return false; 112 } else { 113 map.add(mapping); 114 store.put(key, VirtualUserTableUtil.CollectionToMapping(map)); 115 return true; 116 } 117 } else { 118 store.put(key, mapping); 119 return true; 120 } 121 } 122 123 private boolean removeRawMapping(String user,String domain, String mapping) { 124 Collection map; 125 String key = user + "@" + domain; 126 String mappings = (String ) store.get(key); 127 if (mappings != null) { 128 map = VirtualUserTableUtil.mappingToCollection(mappings); 129 if (map.remove(mapping)) { 130 store.put(key, VirtualUserTableUtil.CollectionToMapping(map)); 131 return true; 132 } 133 } 134 return false; 135 } 136 137 public boolean addAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException { 138 return addRawMapping(null,aliasDomain,VirtualUserTable.ALIASDOMAIN_PREFIX + realDomain); 139 } 140 141 public boolean removeAliasDomainMapping(String aliasDomain, String realDomain) throws InvalidMappingException { 142 return removeRawMapping(null,aliasDomain,VirtualUserTable.ALIASDOMAIN_PREFIX + realDomain); 143 } 144 145 } 146 | Popular Tags |