http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java index 7579d39..a52d80f 100644 --- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java +++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java @@ -40,6 +40,7 @@ import javax.mail.internet.ParseException; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.TemporaryResolutionException; @@ -232,7 +233,7 @@ public class JamesMailetContext implements MailetContext, Configurable { try { if (!name.contains("@")) { try { - return isLocalEmail(new MailAddress(name.toLowerCase(Locale.US), domains.getDefaultDomain())); + return isLocalEmail(new MailAddress(name.toLowerCase(Locale.US), domains.getDefaultDomain().asString())); } catch (DomainListException e) { LOGGER.error("Unable to access DomainList", e); return false; @@ -249,7 +250,7 @@ public class JamesMailetContext implements MailetContext, Configurable { @Override public boolean isLocalEmail(MailAddress mailAddress) { if (mailAddress != null) { - if (!isLocalServer(mailAddress.getDomain().toLowerCase(Locale.US))) { + if (!isLocalServer(Domain.of(mailAddress.getDomain()))) { return false; } try { @@ -308,9 +309,9 @@ public class JamesMailetContext implements MailetContext, Configurable { } @Override - public boolean isLocalServer(String name) { + public boolean isLocalServer(Domain domain) { try { - return domains.containsDomain(name); + return domains.containsDomain(domain); } catch (DomainListException e) { LOGGER.error("Unable to retrieve domains", e); return false; @@ -455,14 +456,14 @@ public class JamesMailetContext implements MailetContext, Configurable { // list of supported domains that isn't localhost. If that // doesn't work, use the hostname, even if it is localhost. if (postMasterAddress.indexOf('@') < 0) { - String domainName = null; // the domain to use + Domain domainName = null; // the domain to use // loop through candidate domains until we find one or exhaust // the // list - for (String dom : domains.getDomains()) { - String serverName = dom.toLowerCase(Locale.US); - if (!("localhost".equals(serverName))) { - domainName = serverName; // ok, not localhost, so + Domain localhost = Domain.of("localhost"); + for (Domain dom : domains.getDomains()) { + if (!(localhost.equals(dom))) { + domainName = dom; // ok, not localhost, so // use it } } @@ -470,15 +471,15 @@ public class JamesMailetContext implements MailetContext, Configurable { // if we found a suitable domain, use it. Otherwise fallback to // the // host name. - postMasterAddress = postMasterAddress + "@" + (domainName != null ? domainName : domains.getDefaultDomain()); + postMasterAddress = postMasterAddress + "@" + (domainName != null ? domainName.name() : domains.getDefaultDomain()); } try { this.postmaster = new MailAddress(postMasterAddress); - if (!domains.containsDomain(postmaster.getDomain())) { + if (!domains.containsDomain(Domain.of(postmaster.getDomain()))) { LOGGER.warn("The specified postmaster address ( {} ) is not a local " + - "address. This is not necessarily a problem, but it does mean that emails addressed to " + - "the postmaster will be routed to another server. For some configurations this may " + - "cause problems.", postmaster); + "address. This is not necessarily a problem, but it does mean that emails addressed to " + + "the postmaster will be routed to another server. For some configurations this may " + + "cause problems.", postmaster); } } catch (AddressException e) { throw new ConfigurationException("Postmaster address " + postMasterAddress + "is invalid", e);
http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java index bd8a732..1d0d04b 100644 --- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java +++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/JamesMailetContextTest.java @@ -32,6 +32,7 @@ import java.util.concurrent.TimeUnit; import javax.mail.internet.MimeMessage; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.core.builder.MimeMessageBuilder; import org.apache.james.dnsservice.api.DNSService; @@ -52,9 +53,9 @@ import org.mockito.ArgumentCaptor; import com.google.common.collect.ImmutableList; public class JamesMailetContextTest { - public static final String DOMAIN_COM = "domain.com"; + public static final Domain DOMAIN_COM = Domain.of("domain.com"); public static final String USERNAME = "user"; - public static final String USERMAIL = USERNAME + "@" + DOMAIN_COM; + public static final String USERMAIL = USERNAME + "@" + DOMAIN_COM.name(); public static final String PASSWORD = "password"; public static final DNSService DNS_SERVICE = null; @@ -117,7 +118,7 @@ public class JamesMailetContextTest { public void isLocalUserShouldReturnTrueWhenUsedWithLocalPartAndUserExistOnDefaultDomain() throws Exception { HierarchicalConfiguration configuration = mock(HierarchicalConfiguration.class); when(configuration.getString(eq("defaultDomain"), any(String.class))) - .thenReturn(DOMAIN_COM); + .thenReturn(DOMAIN_COM.name()); domainList.configure(configuration); usersRepository.addUser(USERMAIL, PASSWORD); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java index a66f25f..e048835 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java @@ -32,6 +32,7 @@ import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.ParseException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -126,7 +127,8 @@ public abstract class AbstractRecipientRewriteTable extends GenericMailet { } try { - MailAddress target = (targetAddress.indexOf('@') < 0) ? new MailAddress(targetAddress, domainList.getDefaultDomain()) : new MailAddress(targetAddress); + MailAddress target = (targetAddress.indexOf('@') < 0) ? + new MailAddress(targetAddress, domainList.getDefaultDomain().asString()) : new MailAddress(targetAddress); // Mark this source address as an address to remove // from the recipient list @@ -134,7 +136,7 @@ public abstract class AbstractRecipientRewriteTable extends GenericMailet { // We need to separate local and remote // recipients. This is explained below. - if (getMailetContext().isLocalServer(target.getDomain())) { + if (getMailetContext().isLocalServer(Domain.of(target.getDomain()))) { recipientsToAddLocal.add(target); } else { recipientsToAddForward.add(target); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java index 7e9c29a..60249a6 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java @@ -31,6 +31,7 @@ import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.sql.DataSource; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.util.bayesian.JDBCBayesianAnalyzer; @@ -294,7 +295,7 @@ public class BayesianAnalysis extends GenericMailet { if (ignoreLocalSender) { // ignore the message if the sender is local - if (mail.getSender() != null && getMailetContext().isLocalServer(mail.getSender().getDomain())) { + if (mail.getSender() != null && getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain()))) { return; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java index ec49b8b..d2d3165 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java @@ -29,6 +29,7 @@ import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.mail.internet.MimeMessage; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -117,7 +118,7 @@ public class RecipientRewriteTableProcessor { private RrtExecutionResult getRrtExecutionResult(Mail mail, MailAddress recipient) { try { - Mappings mappings = virtualTableStore.getMappings(recipient.getLocalPart(), recipient.getDomain()); + Mappings mappings = virtualTableStore.getMappings(recipient.getLocalPart(), Domain.of(recipient.getDomain())); if (mappings != null) { List<MailAddress> newMailAddresses = handleMappings(mappings, mail.getSender(), recipient, mail.getMessage()); @@ -154,7 +155,7 @@ public class RecipientRewriteTableProcessor { private ImmutableList<MailAddress> getLocalAddresses(ImmutableList<MailAddress> mailAddresses) { return mailAddresses.stream() - .filter(mailAddress -> mailetContext.isLocalServer(mailAddress.getDomain())) + .filter(mailAddress -> mailetContext.isLocalServer(Domain.of(mailAddress.getDomain()))) .collect(Guavate.toImmutableList()); } @@ -172,7 +173,7 @@ public class RecipientRewriteTableProcessor { .collect(Guavate.toImmutableList()); if (!addressWithoutDomains.isEmpty()) { - final String defaultDomain = getDefaultDomain(domainList); + final Domain defaultDomain = getDefaultDomain(domainList); return addressWithoutDomains.stream() .map(address -> address.appendDomain(defaultDomain)) @@ -183,7 +184,7 @@ public class RecipientRewriteTableProcessor { private void forwardToRemoteAddress(MailAddress sender, MailAddress recipient, MimeMessage message, ImmutableList<MailAddress> mailAddresses) throws MessagingException { ImmutableList<MailAddress> remoteAddress = mailAddresses.stream() - .filter(mailAddress -> !mailetContext.isLocalServer(mailAddress.getDomain())) + .filter(mailAddress -> !mailetContext.isLocalServer(Domain.of(mailAddress.getDomain()))) .collect(Guavate.toImmutableList()); if (!remoteAddress.isEmpty()) { @@ -196,7 +197,7 @@ public class RecipientRewriteTableProcessor { } } - private String getDefaultDomain(DomainList domainList) throws MessagingException { + private Domain getDefaultDomain(DomainList domainList) throws MessagingException { try { return domainList.getDefaultDomain(); } catch (DomainListException e) { http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java index 2a4889a..96bc35d 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java @@ -46,6 +46,7 @@ import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.sql.DataSource; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.transport.mailets.managesieve.ManageSieveMailet; import org.apache.james.user.api.UsersRepository; @@ -307,7 +308,7 @@ public class WhiteListManager extends GenericMailet { ResultSet selectRS = null; try { String recipientUser = recipient.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipient.getDomain().toLowerCase(Locale.US); + Domain recipientHost = Domain.of(recipient.getDomain()); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -324,7 +325,7 @@ public class WhiteListManager extends GenericMailet { selectStmt.setString(1, senderUser); selectStmt.setString(2, senderHost); selectStmt.setString(3, recipientUser); - selectStmt.setString(4, recipientHost); + selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list @@ -337,7 +338,7 @@ public class WhiteListManager extends GenericMailet { insertStmt.setString(1, senderUser); insertStmt.setString(2, senderHost); insertStmt.setString(3, recipientUser); - insertStmt.setString(4, recipientHost); + insertStmt.setString(4, recipientHost.asString()); insertStmt.executeUpdate(); dbUpdated = true; @@ -457,7 +458,7 @@ public class WhiteListManager extends GenericMailet { continue; } String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain().toLowerCase(Locale.US); + Domain recipientHost = Domain.of(recipientMailAddress.getDomain()); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -474,7 +475,7 @@ public class WhiteListManager extends GenericMailet { selectStmt.setString(1, senderUser); selectStmt.setString(2, senderHost); selectStmt.setString(3, recipientUser); - selectStmt.setString(4, recipientHost); + selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list @@ -488,7 +489,7 @@ public class WhiteListManager extends GenericMailet { insertStmt.setString(1, senderUser); insertStmt.setString(2, senderHost); insertStmt.setString(3, recipientUser); - insertStmt.setString(4, recipientHost); + insertStmt.setString(4, recipientHost.asString()); insertStmt.executeUpdate(); dbUpdated = true; out.println("Inserted: " + recipientMailAddress); @@ -578,7 +579,7 @@ public class WhiteListManager extends GenericMailet { continue; } String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain().toLowerCase(Locale.US); + Domain recipientHost = Domain.of(recipientMailAddress.getDomain()); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -595,7 +596,7 @@ public class WhiteListManager extends GenericMailet { selectStmt.setString(1, senderUser); selectStmt.setString(2, senderHost); selectStmt.setString(3, recipientUser); - selectStmt.setString(4, recipientHost); + selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); if (!selectRS.next()) { // This address was not in the list @@ -609,7 +610,7 @@ public class WhiteListManager extends GenericMailet { deleteStmt.setString(1, senderUser); deleteStmt.setString(2, senderHost); deleteStmt.setString(3, recipientUser); - deleteStmt.setString(4, recipientHost); + deleteStmt.setString(4, recipientHost.asString()); deleteStmt.executeUpdate(); dbUpdated = true; out.println("Removed: " + recipientMailAddress); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java index 736bed8..84aeb0c 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java @@ -26,6 +26,7 @@ import java.util.Map; import javax.mail.MessagingException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.rrt.lib.RecipientRewriteTableUtil; import org.apache.mailet.Experimental; @@ -103,7 +104,7 @@ public class XMLRecipientRewriteTable extends AbstractRecipientRewriteTable { for (MailAddress source : recipients) { String user = source.getLocalPart().toLowerCase(Locale.US); - String domain = source.getDomain().toLowerCase(Locale.US); + Domain domain = Domain.of(source.getDomain()); String targetString = RecipientRewriteTableUtil.getTargetString(user, domain, mappings); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java index c07201f..e705a48 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java @@ -24,12 +24,12 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import java.util.Locale; import java.util.Scanner; import javax.inject.Inject; import javax.mail.MessagingException; +import org.apache.james.core.Domain; import org.apache.james.managesieve.api.Session; import org.apache.james.managesieve.api.SieveParser; import org.apache.james.managesieve.core.CoreProcessor; @@ -127,7 +127,7 @@ public class ManageSieveMailet extends GenericMailet implements MessageToCoreToM LOGGER.error("Sender is null"); return; } - if (!getMailetContext().isLocalServer(mail.getSender().getDomain().toLowerCase(Locale.US))) { + if (!getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain()))) { LOGGER.error("Sender not local"); return; } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProvider.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProvider.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProvider.java index 9042fbb..95bee1b 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProvider.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProvider.java @@ -41,7 +41,7 @@ public class HeloNameProvider { if (heloName == null) { // TODO: Maybe we should better just lookup the hostname via dns try { - return domainList.getDefaultDomain(); + return domainList.getDefaultDomain().name(); } catch (DomainListException e) { LOGGER.warn("Unable to access DomainList", e); return LOCALHOST; http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java index acbbad5..36df391 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java @@ -34,6 +34,7 @@ import javax.inject.Inject; import javax.mail.MessagingException; import javax.sql.DataSource; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.transport.mailets.WhiteListManager; @@ -155,9 +156,9 @@ public abstract class AbstractSQLWhitelistMatcher extends GenericMatcher { for (MailAddress recipientMailAddress : recipients) { String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain().toLowerCase(Locale.US); + String recipientHost = recipientMailAddress.getDomain(); - if (!getMailetContext().isLocalServer(recipientHost)) { + if (!getMailetContext().isLocalServer(Domain.of(recipientHost))) { // not a local recipient, so skip continue; } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java index 59881a1..5caf722 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessorTest.java @@ -29,6 +29,7 @@ import java.util.Collection; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -104,7 +105,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingsShouldReturnTheMailAddressBelongToLocalServer() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(NONEDOMAIN) @@ -118,7 +119,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingsShouldReturnTheOnlyMailAddressBelongToLocalServer() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES2_APACHE_ORG); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES2_APACHE_ORG)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) @@ -134,7 +135,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingsShouldRemoveMappingElementWhenCannotCreateMailAddress() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(NONEDOMAIN) @@ -149,7 +150,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingsShouldForwardEmailToRemoteServer() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) @@ -172,7 +173,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingsShouldNotForwardAnyEmailToRemoteServerWhenNoMoreReomoteAddress() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(NONEDOMAIN) @@ -186,7 +187,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingWithOnlyLocalRecipient() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(NONEDOMAIN) @@ -201,7 +202,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void handleMappingWithOnlyRemoteRecipient() throws Exception { - when(domainList.getDefaultDomain()).thenReturn(MailAddressFixture.JAMES_LOCAL); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) @@ -223,7 +224,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void processShouldNotRewriteRecipientWhenVirtualTableStoreReturnNullMappings() throws Exception { - when(virtualTableStore.getMappings(any(String.class), any(String.class))).thenReturn(null); + when(virtualTableStore.getMappings(any(String.class), any(Domain.class))).thenReturn(null); mail = FakeMail.builder() .mimeMessage(message) @@ -238,7 +239,7 @@ public class RecipientRewriteTableProcessorTest { @SuppressWarnings("unchecked") @Test public void processShouldSendMailToAllErrorRecipientsWhenErrorMappingException() throws Exception { - when(virtualTableStore.getMappings(eq("other"), eq(MailAddressFixture.JAMES_LOCAL))).thenThrow(ErrorMappingException.class); + when(virtualTableStore.getMappings(eq("other"), eq(Domain.of(MailAddressFixture.JAMES_LOCAL)))).thenThrow(ErrorMappingException.class); mail = FakeMail.builder() .sender(MailAddressFixture.ANY_AT_JAMES) @@ -263,7 +264,7 @@ public class RecipientRewriteTableProcessorTest { @SuppressWarnings("unchecked") @Test public void processShouldSendMailToAllErrorRecipientsWhenRecipientRewriteTableException() throws Exception { - when(virtualTableStore.getMappings(eq("other"), eq(MailAddressFixture.JAMES_LOCAL))).thenThrow(RecipientRewriteTableException.class); + when(virtualTableStore.getMappings(eq("other"), eq(Domain.of(MailAddressFixture.JAMES_LOCAL)))).thenThrow(RecipientRewriteTableException.class); mail = FakeMail.builder() .sender(MailAddressFixture.ANY_AT_JAMES) @@ -288,7 +289,7 @@ public class RecipientRewriteTableProcessorTest { @SuppressWarnings("unchecked") @Test public void processShouldSendMailToAllErrorRecipientsWhenMessagingException() throws Exception { - when(virtualTableStore.getMappings(eq("other"), eq(MailAddressFixture.JAMES_LOCAL))).thenThrow(MessagingException.class); + when(virtualTableStore.getMappings(eq("other"), eq(Domain.of(MailAddressFixture.JAMES_LOCAL)))).thenThrow(MessagingException.class); mail = FakeMail.builder() .sender(MailAddressFixture.ANY_AT_JAMES) @@ -312,7 +313,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void processShouldNotSendMailWhenNoErrorRecipients() throws Exception { - when(virtualTableStore.getMappings(any(String.class), any(String.class))).thenReturn(null); + when(virtualTableStore.getMappings(any(String.class), any(Domain.class))).thenReturn(null); mail = FakeMail.builder() .mimeMessage(message) @@ -326,7 +327,7 @@ public class RecipientRewriteTableProcessorTest { @Test public void processShouldResetMailStateToGhostWhenCanNotBuildNewRecipient() throws Exception { - when(virtualTableStore.getMappings(any(String.class), any(String.class))).thenReturn(mappings); + when(virtualTableStore.getMappings(any(String.class), any(Domain.class))).thenReturn(mappings); mail = FakeMail.builder() .mimeMessage(message) http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProviderTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProviderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProviderTest.java index 1ac0d55..e2c38c5 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProviderTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/HeloNameProviderTest.java @@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.transport.mailets.remote.delivery.HeloNameProvider; @@ -54,7 +55,7 @@ public class HeloNameProviderTest { @Test public void getHeloNameShouldReturnDomainListDefaultDomainOnNullHeloName() throws DomainListException { - when(domainList.getDefaultDomain()).thenReturn(DOMAIN); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(DOMAIN)); HeloNameProvider heloNameProvider = new HeloNameProvider(null, domainList); assertThat(heloNameProvider.getHeloName()).isEqualTo(DOMAIN); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/RemoteDeliveryConfigurationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/RemoteDeliveryConfigurationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/RemoteDeliveryConfigurationTest.java index f8aef3e..3e6e40f 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/RemoteDeliveryConfigurationTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/RemoteDeliveryConfigurationTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.when; import java.util.Properties; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.mailet.base.test.FakeMailetConfig; import org.assertj.core.data.MapEntry; @@ -519,7 +520,7 @@ public class RemoteDeliveryConfigurationTest { public void getHeloNameProviderShouldCallDomainListByDefault() throws Exception { DomainList domainList = mock(DomainList.class); String value = "value"; - when(domainList.getDefaultDomain()).thenReturn(value); + when(domainList.getDefaultDomain()).thenReturn(Domain.of(value)); FakeMailetConfig mailetConfig = FakeMailetConfig.builder() .setProperty(RemoteDeliveryConfiguration.DELIVERY_THREADS, "1") .build(); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java index 313b9d6..c1e84ce 100644 --- a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java +++ b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java @@ -32,6 +32,7 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.ParseException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.server.core.MailImpl; @@ -849,7 +850,7 @@ public class MessageProcessor extends ProcessorAbstract { */ protected boolean isLocalServer(MailAddress recipient) { try { - return getConfiguration().getDomainList().containsDomain(recipient.getDomain()); + return getConfiguration().getDomainList().containsDomain(Domain.of(recipient.getDomain())); } catch (DomainListException e) { LOGGER.error("Unable to access DomainList", e); return false; http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java ---------------------------------------------------------------------- diff --git a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java index 9a62259..bd42f7b 100644 --- a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java +++ b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java @@ -28,6 +28,7 @@ import javax.mail.internet.ParseException; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -780,7 +781,7 @@ class ParsedConfiguration { */ protected void validateDefaultDomainName(String defaultDomainName) throws ConfigurationException { try { - if (!getDomainList().containsDomain(defaultDomainName)) { + if (!getDomainList().containsDomain(Domain.of(defaultDomainName))) { throw new ConfigurationException("Default domain name is not a local server: " + defaultDomainName); } } catch (DomainListException e) { http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/JmapMDN.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/JmapMDN.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/JmapMDN.java index 7178c1e..abb4cd9 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/JmapMDN.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/JmapMDN.java @@ -24,6 +24,7 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; +import org.apache.james.core.Domain; import org.apache.james.core.User; import org.apache.james.jmap.exceptions.InvalidOriginMessageForMDNException; import org.apache.james.mailbox.MailboxSession; @@ -150,7 +151,7 @@ public class JmapMDN { .setTo(getSenderAddress(originalMessage)) .setFrom(user.asString()) .setSubject(subject) - .setMessageId(MimeUtil.createUniqueMessageId(user.getDomainPart().orElse(null))) + .setMessageId(MimeUtil.createUniqueMessageId(user.getDomainPart().map(Domain::name).orElse(null))) .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java index 4186e33..69fb9d6 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java @@ -22,6 +22,7 @@ import javax.inject.Inject; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.protocols.smtp.core.AbstractAuthRequiredToRelayRcptHook; @@ -48,7 +49,7 @@ public class AuthRequiredToRelayRcptHook extends AbstractAuthRequiredToRelayRcpt @Override protected boolean isLocalDomain(String domain) { try { - return domains.containsDomain(domain); + return domains.containsDomain(Domain.of(domain)); } catch (DomainListException e) { return false; } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesMailCmdHandler.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesMailCmdHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesMailCmdHandler.java index 87ad536..9ff0e71 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesMailCmdHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesMailCmdHandler.java @@ -42,7 +42,7 @@ public class JamesMailCmdHandler extends MailCmdHandler { @Override public String getDefaultDomain() { try { - return domainList.getDefaultDomain(); + return domainList.getDefaultDomain().name(); } catch (DomainListException e) { return super.getDefaultDomain(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesRcptCmdHandler.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesRcptCmdHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesRcptCmdHandler.java index 70abba4..1ec3a2f 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesRcptCmdHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/JamesRcptCmdHandler.java @@ -43,7 +43,7 @@ public class JamesRcptCmdHandler extends RcptCmdHandler { @Override public String getDefaultDomain() { try { - return domainList.getDefaultDomain(); + return domainList.getDefaultDomain().name(); } catch (DomainListException e) { return super.getDefaultDomain(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java index d261810..db00d42 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java @@ -22,6 +22,7 @@ import javax.inject.Inject; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -73,7 +74,7 @@ public class SenderAuthIdentifyVerificationRcptHook extends AbstractSenderAuthId } @Override - protected boolean isLocalDomain(String domain) { + protected boolean isLocalDomain(Domain domain) { try { return domains.containsDomain(domain); } catch (DomainListException e) { http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java index e348c6d..3a1cdf8 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java @@ -22,6 +22,7 @@ import javax.inject.Inject; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -111,7 +112,7 @@ public class ValidRcptHandler extends AbstractValidRcptHandler implements Protoc LOGGER.debug("Unknown user {} check if it's an alias", username); try { - Mappings targetString = vut.getMappings(recipient.getLocalPart(), recipient.getDomain()); + Mappings targetString = vut.getMappings(recipient.getLocalPart(), Domain.of(recipient.getDomain())); if (targetString != null && !targetString.isEmpty()) { return true; @@ -136,7 +137,7 @@ public class ValidRcptHandler extends AbstractValidRcptHandler implements Protoc @Override protected boolean isLocalDomain(SMTPSession session, String domain) { try { - return domains.containsDomain(domain); + return domains.containsDomain(Domain.of(domain)); } catch (DomainListException e) { LOGGER.error("Unable to get domains", e); return false; http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java index 366ac25..e9f6d1a 100644 --- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java +++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java @@ -43,6 +43,7 @@ import org.apache.commons.net.ProtocolCommandEvent; import org.apache.commons.net.ProtocolCommandListener; import org.apache.commons.net.smtp.SMTPClient; import org.apache.commons.net.smtp.SMTPReply; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -233,7 +234,7 @@ public class SMTPServerTest { queue = queueFactory.createQueue(MailQueueFactory.SPOOL); chain.put("mailqueuefactory", MailQueueFactory.class, queueFactory); MemoryDomainList domainList = new MemoryDomainList(mock(DNSService.class)); - domainList.addDomain("localhost"); + domainList.addDomain(Domain.of("localhost")); chain.put("domainlist", DomainList.class, domainList); } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java index 85fb7ab..88755b6 100644 --- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java +++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java @@ -26,6 +26,7 @@ import java.io.ByteArrayInputStream; import java.util.HashMap; import org.apache.commons.configuration.DefaultConfigurationBuilder; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -46,7 +47,7 @@ import org.junit.Test; public class ValidRcptHandlerTest { - private static final String VALID_DOMAIN = "localhost"; + private static final Domain VALID_DOMAIN = Domain.of("localhost"); private static final String VALID_USER = "postmaster"; private static final String INVALID_USER = "invalid"; private static final String USER1 = "user1"; @@ -115,8 +116,8 @@ public class ValidRcptHandlerTest { private RecipientRewriteTable setUpRecipientRewriteTable(DomainList domainList) throws RecipientRewriteTableException { MemoryRecipientRewriteTable memoryRecipientRewriteTable = new MemoryRecipientRewriteTable(); memoryRecipientRewriteTable.setDomainList(domainList); - memoryRecipientRewriteTable.addAddressMapping(USER1, "localhost", "address"); - memoryRecipientRewriteTable.addErrorMapping(USER2, "localhost", "554 BOUNCE"); + memoryRecipientRewriteTable.addAddressMapping(USER1, Domain.of("localhost"), "address"); + memoryRecipientRewriteTable.addErrorMapping(USER2, Domain.of("localhost"), "554 BOUNCE"); return memoryRecipientRewriteTable; } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java index 8438279..673ec80 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java @@ -22,6 +22,7 @@ package org.apache.james.webadmin.routes; import static org.apache.james.webadmin.Constants.SEPARATOR; import java.util.List; +import java.util.stream.Collectors; import javax.inject.Inject; import javax.ws.rs.DELETE; @@ -30,6 +31,7 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.webadmin.Constants; @@ -42,8 +44,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Preconditions; -import com.google.common.base.Strings; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -146,14 +146,15 @@ public class DomainsRoutes implements Routes { }) public void defineGetDomains() { service.get(DOMAINS, - (request, response) -> domainList.getDomains(), + (request, response) -> + domainList.getDomains().stream().map(Domain::name).collect(Collectors.toList()), jsonTransformer); } private String removeDomain(Request request, Response response) { try { - String domain = request.params(DOMAIN_NAME); - removeDomain(domain); + Domain domain = checkValidDomain(request); + domainList.removeDomain(domain); } catch (DomainListException e) { LOGGER.info("{} did not exists", request.params(DOMAIN_NAME)); } @@ -161,22 +162,17 @@ public class DomainsRoutes implements Routes { return Constants.EMPTY_BODY; } - private void removeDomain(String domain) throws DomainListException { - Preconditions.checkArgument(!Strings.isNullOrEmpty(domain)); - domainList.removeDomain(domain); - } - private String addDomain(Request request, Response response) { - String domainName = request.params(DOMAIN_NAME); + Domain domain = checkValidDomain(request); try { - addDomain(domainName); + addDomain(domain); response.status(204); } catch (DomainListException e) { - LOGGER.info("{} already exists", domainName); + LOGGER.info("{} already exists", domain); throw ErrorResponder.builder() .statusCode(HttpStatus.NO_CONTENT_204) .type(ErrorType.INVALID_ARGUMENT) - .message(domainName + " already exists") + .message(domain.name() + " already exists") .cause(e) .haltError(); } catch (IllegalArgumentException e) { @@ -184,31 +180,43 @@ public class DomainsRoutes implements Routes { throw ErrorResponder.builder() .statusCode(HttpStatus.BAD_REQUEST_400) .type(ErrorType.INVALID_ARGUMENT) - .message("Invalid request for domain creation " + domainName) + .message("Invalid request for domain creation " + domain.name()) .cause(e) .haltError(); } return Constants.EMPTY_BODY; } - private void addDomain(String domain) throws DomainListException { - Preconditions.checkArgument(!Strings.isNullOrEmpty(domain)); - Preconditions.checkArgument(!domain.contains("@")); - Preconditions.checkArgument(domain.length() < MAXIMUM_DOMAIN_SIZE); + private Domain checkValidDomain(Request request) { + String domainName = request.params(DOMAIN_NAME); + try { + return Domain.of(domainName); + } catch (IllegalArgumentException e) { + throw ErrorResponder.builder() + .statusCode(HttpStatus.BAD_REQUEST_400) + .type(ErrorType.INVALID_ARGUMENT) + .message("Invalid request for domain creation " + domainName) + .cause(e) + .haltError(); + } + } + + private void addDomain(Domain domain) throws DomainListException { + Preconditions.checkArgument(domain.name().length() < MAXIMUM_DOMAIN_SIZE); domainList.addDomain(domain); } - private String exists(Request request, Response response) throws DomainListException { - String domainName = request.params(DOMAIN_NAME); - if (!domainList.containsDomain(domainName)) { + private Response exists(Request request, Response response) throws DomainListException { + Domain domain = checkValidDomain(request); + if (!domainList.containsDomain(domain)) { throw ErrorResponder.builder() .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorType.INVALID_ARGUMENT) - .message("The domain list does not contain: " + domainName) + .message("The domain list does not contain: " + domain.name()) .haltError(); } else { response.status(HttpStatus.NO_CONTENT_204); + return response; } - return Constants.EMPTY_BODY; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java index d4987b4..0817f16 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java @@ -38,6 +38,7 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -61,7 +62,6 @@ import org.slf4j.LoggerFactory; import com.github.steveash.guavate.Guavate; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSortedSet; - import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -154,19 +154,20 @@ public class GroupsRoutes implements Routes { }) public HaltException addToGroup(Request request, Response response) throws JsonExtractException, AddressException, RecipientRewriteTableException, UsersRepositoryException, DomainListException { MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS)); - ensureRegisteredDomain(groupAddress.getDomain()); + Domain domain = Domain.of(groupAddress.getDomain()); + ensureRegisteredDomain(domain); ensureNotShadowingAnotherAddress(groupAddress); MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS)); - recipientRewriteTable.addAddressMapping(groupAddress.getLocalPart(), groupAddress.getDomain(), userAddress.asString()); + recipientRewriteTable.addAddressMapping(groupAddress.getLocalPart(), domain, userAddress.asString()); return halt(HttpStatus.CREATED_201); } - private void ensureRegisteredDomain(String domain) throws DomainListException { + private void ensureRegisteredDomain(Domain domain) throws DomainListException { if (!domainList.containsDomain(domain)) { throw ErrorResponder.builder() .statusCode(HttpStatus.FORBIDDEN_403) .type(ErrorType.INVALID_ARGUMENT) - .message("Server doesn't own the domain: " + domain) + .message("Server doesn't own the domain: " + domain.name()) .haltError(); } } @@ -199,7 +200,10 @@ public class GroupsRoutes implements Routes { public HaltException removeFromGroup(Request request, Response response) throws JsonExtractException, AddressException, RecipientRewriteTableException { MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS)); MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS)); - recipientRewriteTable.removeAddressMapping(groupAddress.getLocalPart(), groupAddress.getDomain(), userAddress.asString()); + recipientRewriteTable.removeAddressMapping( + groupAddress.getLocalPart(), + Domain.of(groupAddress.getDomain()), + userAddress.asString()); return halt(HttpStatus.OK_200); } @@ -218,7 +222,7 @@ public class GroupsRoutes implements Routes { }) public ImmutableSortedSet<String> listGroupMembers(Request request, Response response) throws RecipientRewriteTable.ErrorMappingException, RecipientRewriteTableException { MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS)); - Mappings mappings = recipientRewriteTable.getMappings(groupAddress.getLocalPart(), groupAddress.getDomain()); + Mappings mappings = recipientRewriteTable.getMappings(groupAddress.getLocalPart(), Domain.of(groupAddress.getDomain())); ensureNonEmptyMappings(mappings); http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java index 683fc91..1925284 100644 --- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java +++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java @@ -34,6 +34,7 @@ import java.net.InetAddress; import java.util.List; import java.util.Map; +import org.apache.james.core.Domain; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -50,7 +51,6 @@ import org.junit.runner.RunWith; import com.jayway.restassured.RestAssured; import com.jayway.restassured.http.ContentType; - import de.bechte.junit.runners.context.HierarchicalContextRunner; @RunWith(HierarchicalContextRunner.class) @@ -260,13 +260,13 @@ public class DomainsRoutesTest { public class ExceptionHandling { private DomainList domainList; - private String domain; + private Domain domain; @Before public void setUp() throws Exception { domainList = mock(DomainList.class); createServer(domainList); - domain = "domain"; + domain = Domain.of("domain"); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java index fee6ba0..33bba7c 100644 --- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java +++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/GroupsRoutesTest.java @@ -26,6 +26,7 @@ import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; @@ -33,6 +34,7 @@ import static org.mockito.Mockito.mock; import java.util.List; import java.util.Map; +import org.apache.james.core.Domain; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; @@ -57,21 +59,20 @@ import org.mockito.Mockito; import com.jayway.restassured.RestAssured; import com.jayway.restassured.filter.log.LogDetail; import com.jayway.restassured.http.ContentType; - import de.bechte.junit.runners.context.HierarchicalContextRunner; @RunWith(HierarchicalContextRunner.class) public class GroupsRoutesTest { - private static final String DOMAIN = "b.com"; - private static final String GROUP1 = "group1" + "@" + DOMAIN; - private static final String GROUP2 = "group2" + "@" + DOMAIN; - private static final String GROUP_WITH_SLASH = "group10/10" + "@" + DOMAIN; - private static final String GROUP_WITH_ENCODED_SLASH = "group10%2F10" + "@" + DOMAIN; - private static final String USER_A = "a" + "@" + DOMAIN; - private static final String USER_B = "b" + "@" + DOMAIN; - private static final String USER_WITH_SLASH = "user/@" + DOMAIN; - private static final String USER_WITH_ENCODED_SLASH = "user%2F@" + DOMAIN; + private static final Domain DOMAIN = Domain.of("b.com"); + private static final String GROUP1 = "group1" + "@" + DOMAIN.name(); + private static final String GROUP2 = "group2" + "@" + DOMAIN.name(); + private static final String GROUP_WITH_SLASH = "group10/10" + "@" + DOMAIN.name(); + private static final String GROUP_WITH_ENCODED_SLASH = "group10%2F10" + "@" + DOMAIN.name(); + private static final String USER_A = "a" + "@" + DOMAIN.name(); + private static final String USER_B = "b" + "@" + DOMAIN.name(); + private static final String USER_WITH_SLASH = "user/@" + DOMAIN.name(); + private static final String USER_WITH_ENCODED_SLASH = "user%2F@" + DOMAIN.name(); private WebAdminServer webAdminServer; @@ -372,7 +373,7 @@ public class GroupsRoutesTest { super.setUp(); memoryRecipientRewriteTable.addErrorMapping("error", DOMAIN, "disabled"); memoryRecipientRewriteTable.addRegexMapping("regex", DOMAIN, ".*@b\\.com"); - memoryRecipientRewriteTable.addAliasDomainMapping("alias", DOMAIN); + memoryRecipientRewriteTable.addAliasDomainMapping(Domain.of("alias"), DOMAIN); } @@ -387,7 +388,7 @@ public class GroupsRoutesTest { memoryRecipientRewriteTable = mock(RecipientRewriteTable.class); UsersRepository userRepository = mock(UsersRepository.class); DomainList domainList = mock(DomainList.class); - Mockito.when(domainList.containsDomain(anyString())).thenReturn(true); + Mockito.when(domainList.containsDomain(any())).thenReturn(true); createServer(new GroupsRoutes(memoryRecipientRewriteTable, userRepository, domainList, new JsonTransformer())); } @@ -526,7 +527,7 @@ public class GroupsRoutesTest { public void putShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTableException.class) .when(memoryRecipientRewriteTable) - .addAddressMapping(anyString(), anyString(), anyString()); + .addAddressMapping(anyString(), any(), anyString()); when() .put(GROUP1 + SEPARATOR + GROUP2) @@ -539,7 +540,7 @@ public class GroupsRoutesTest { public void putShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTable.ErrorMappingException.class) .when(memoryRecipientRewriteTable) - .addAddressMapping(anyString(), anyString(), anyString()); + .addAddressMapping(anyString(), any(), anyString()); when() .put(GROUP1 + SEPARATOR + GROUP2) @@ -552,7 +553,7 @@ public class GroupsRoutesTest { public void putShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception { doThrow(RuntimeException.class) .when(memoryRecipientRewriteTable) - .addAddressMapping(anyString(), anyString(), anyString()); + .addAddressMapping(anyString(), any(), anyString()); when() .put(GROUP1 + SEPARATOR + GROUP2) @@ -604,7 +605,7 @@ public class GroupsRoutesTest { public void deleteShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTableException.class) .when(memoryRecipientRewriteTable) - .removeAddressMapping(anyString(), anyString(), anyString()); + .removeAddressMapping(anyString(), any(), anyString()); when() .delete(GROUP1 + SEPARATOR + GROUP2) @@ -617,7 +618,7 @@ public class GroupsRoutesTest { public void deleteShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTable.ErrorMappingException.class) .when(memoryRecipientRewriteTable) - .removeAddressMapping(anyString(), anyString(), anyString()); + .removeAddressMapping(anyString(), any(), anyString()); when() .delete(GROUP1 + SEPARATOR + GROUP2) @@ -630,7 +631,7 @@ public class GroupsRoutesTest { public void deleteShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception { doThrow(RuntimeException.class) .when(memoryRecipientRewriteTable) - .removeAddressMapping(anyString(), anyString(), anyString()); + .removeAddressMapping(anyString(), any(), anyString()); when() .delete(GROUP1 + SEPARATOR + GROUP2) @@ -643,7 +644,7 @@ public class GroupsRoutesTest { public void getShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTableException.class) .when(memoryRecipientRewriteTable) - .getMappings(anyString(), anyString()); + .getMappings(anyString(), any()); when() .get(GROUP1) @@ -656,7 +657,7 @@ public class GroupsRoutesTest { public void getShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception { doThrow(RecipientRewriteTable.ErrorMappingException.class) .when(memoryRecipientRewriteTable) - .getMappings(anyString(), anyString()); + .getMappings(anyString(), any()); when() .get(GROUP1) @@ -669,7 +670,7 @@ public class GroupsRoutesTest { public void getShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception { doThrow(RuntimeException.class) .when(memoryRecipientRewriteTable) - .getMappings(anyString(), anyString()); + .getMappings(anyString(), any()); when() .get(GROUP1) http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UsersRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UsersRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UsersRoutesTest.java index 028a198..a9349a2 100644 --- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UsersRoutesTest.java +++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/UsersRoutesTest.java @@ -32,6 +32,7 @@ import static org.mockito.Mockito.when; import java.util.List; import java.util.Map; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.metrics.logger.DefaultMetricFactory; import org.apache.james.user.api.UsersRepository; @@ -57,8 +58,8 @@ import de.bechte.junit.runners.context.HierarchicalContextRunner; @RunWith(HierarchicalContextRunner.class) public class UsersRoutesTest { - public static final String DOMAIN = "domain"; - public static final String USERNAME = "username@" + DOMAIN; + public static final Domain DOMAIN = Domain.of("domain"); + public static final String USERNAME = "username@" + DOMAIN.name(); private WebAdminServer webAdminServer; private void createServer(UsersRepository usersRepository) throws Exception { http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaRoutes.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaRoutes.java index d02fd8a..a73c5d1 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaRoutes.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaRoutes.java @@ -30,6 +30,7 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import org.apache.james.core.Domain; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.mailbox.quota.QuotaCount; @@ -123,7 +124,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineUpdateQuota() { service.put(QUOTA_ENDPOINT, ((request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); QuotaDTO quotaDTO = parseQuotaDTO(request); domainQuotaService.defineQuota(domain, quotaDTO); response.status(HttpStatus.NO_CONTENT_204); @@ -144,7 +145,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineGetQuota() { service.get(QUOTA_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); return domainQuotaService.getQuota(domain); }, jsonTransformer); } @@ -160,7 +161,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineDeleteQuotaSize() { service.delete(SIZE_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); domainQuotaService.remoteMaxQuotaSize(domain); response.status(HttpStatus.NO_CONTENT_204); return response; @@ -183,7 +184,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineUpdateQuotaSize() { service.put(SIZE_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); QuotaSize quotaSize = Quotas.quotaSize(request.body()); domainQuotaService.setMaxSizeQuota(domain, quotaSize); response.status(HttpStatus.NO_CONTENT_204); @@ -203,7 +204,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineGetQuotaSize() { service.get(SIZE_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); Optional<QuotaSize> maxSizeQuota = domainQuotaService.getMaxSizeQuota(domain); if (maxSizeQuota.isPresent()) { return maxSizeQuota; @@ -224,7 +225,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineDeleteQuotaCount() { service.delete(COUNT_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); domainQuotaService.remoteMaxQuotaCount(domain); response.status(HttpStatus.NO_CONTENT_204); return response; @@ -247,7 +248,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineUpdateQuotaCount() { service.put(COUNT_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); QuotaCount quotaCount = Quotas.quotaCount(request.body()); domainQuotaService.setMaxCountQuota(domain, quotaCount); response.status(HttpStatus.NO_CONTENT_204); @@ -266,7 +267,7 @@ public class DomainQuotaRoutes implements Routes { }) public void defineGetQuotaCount() { service.get(COUNT_ENDPOINT, (request, response) -> { - String domain = checkDomainExist(request); + Domain domain = checkDomainExist(request); Optional<QuotaCount> maxCountQuota = domainQuotaService.getMaxCountQuota(domain); if (maxCountQuota.isPresent()) { return maxCountQuota; @@ -276,7 +277,7 @@ public class DomainQuotaRoutes implements Routes { }, jsonTransformer); } - private String checkDomainExist(Request request) { + private Domain checkDomainExist(Request request) { if (!isVirtualHostingSupported()) { throw ErrorResponder.builder() .statusCode(HttpStatus.METHOD_NOT_ALLOWED_405) @@ -284,8 +285,8 @@ public class DomainQuotaRoutes implements Routes { .message("Domain Quota configuration not supported when virtual hosting is desactivated. Please use global quota configuration instead") .haltError(); } - String domain = request.params(DOMAIN); try { + Domain domain = Domain.of(request.params(DOMAIN)); if (!domainList.containsDomain(domain)) { throw ErrorResponder.builder() .statusCode(HttpStatus.NOT_FOUND_404) @@ -293,14 +294,21 @@ public class DomainQuotaRoutes implements Routes { .message("Domain not found") .haltError(); } + return domain; } catch (DomainListException e) { throw ErrorResponder.builder() .statusCode(HttpStatus.NOT_FOUND_404) .type(ErrorType.NOT_FOUND) .cause(e) .haltError(); + } catch (IllegalArgumentException e) { + throw ErrorResponder.builder() + .statusCode(HttpStatus.BAD_REQUEST_400) + .type(ErrorType.INVALID_ARGUMENT) + .message("Invalid domain") + .cause(e) + .haltError(); } - return domain; } private QuotaDTO parseQuotaDTO(Request request) { http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaService.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaService.java index 35a10ff..08b75e4 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaService.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/DomainQuotaService.java @@ -23,6 +23,7 @@ import java.util.Optional; import javax.inject.Inject; +import org.apache.james.core.Domain; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.quota.MaxQuotaManager; import org.apache.james.mailbox.quota.QuotaCount; @@ -40,31 +41,31 @@ public class DomainQuotaService { this.maxQuotaManager = maxQuotaManager; } - public Optional<QuotaCount> getMaxCountQuota(String domain) { + public Optional<QuotaCount> getMaxCountQuota(Domain domain) { return maxQuotaManager.getDomainMaxMessage(domain); } - public void setMaxCountQuota(String domain, QuotaCount quotaCount) throws MailboxException { + public void setMaxCountQuota(Domain domain, QuotaCount quotaCount) throws MailboxException { maxQuotaManager.setDomainMaxMessage(domain, quotaCount); } - public void remoteMaxQuotaCount(String domain) throws MailboxException { + public void remoteMaxQuotaCount(Domain domain) throws MailboxException { maxQuotaManager.removeDomainMaxMessage(domain); } - public Optional<QuotaSize> getMaxSizeQuota(String domain) { + public Optional<QuotaSize> getMaxSizeQuota(Domain domain) { return maxQuotaManager.getDomainMaxStorage(domain); } - public void setMaxSizeQuota(String domain, QuotaSize quotaSize) throws MailboxException { + public void setMaxSizeQuota(Domain domain, QuotaSize quotaSize) throws MailboxException { maxQuotaManager.setDomainMaxStorage(domain, quotaSize); } - public void remoteMaxQuotaSize(String domain) throws MailboxException { + public void remoteMaxQuotaSize(Domain domain) throws MailboxException { maxQuotaManager.removeDomainMaxStorage(domain); } - public QuotaDTO getQuota(String domain) { + public QuotaDTO getQuota(Domain domain) { return QuotaDTO .builder() .count(maxQuotaManager.getDomainMaxMessage(domain)) @@ -72,7 +73,7 @@ public class DomainQuotaService { .build(); } - public void defineQuota(String domain, QuotaDTO quota) { + public void defineQuota(Domain domain, QuotaDTO quota) { quota.getCount() .ifPresent(Throwing.consumer(count -> maxQuotaManager.setDomainMaxMessage(domain, count))); quota.getSize() http://git-wip-us.apache.org/repos/asf/james-project/blob/33cb12e5/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesNoVirtualHostingTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesNoVirtualHostingTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesNoVirtualHostingTest.java index 66f9062..ddb89b7 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesNoVirtualHostingTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/DomainQuotaRoutesNoVirtualHostingTest.java @@ -24,6 +24,7 @@ import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION; import java.util.Collection; +import org.apache.james.core.Domain; import org.apache.james.dnsservice.api.InMemoryDNSService; import org.apache.james.domainlist.memory.MemoryDomainList; import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager; @@ -70,14 +71,13 @@ public class DomainQuotaRoutesNoVirtualHostingTest { @Before public void setUp() throws Exception { InMemoryPerUserMaxQuotaManager maxQuotaManager = new InMemoryPerUserMaxQuotaManager(); - MemoryDomainList domainList = new MemoryDomainList(new InMemoryDNSService()); - domainList.setAutoDetect(false); - domainList.setAutoDetectIP(false); - domainList.addDomain(FOUND_COM); + MemoryDomainList memoryDomainList = new MemoryDomainList(new InMemoryDNSService()); + memoryDomainList.setAutoDetect(false); + memoryDomainList.addDomain(Domain.of(FOUND_COM)); DomainQuotaService domainQuotaService = new DomainQuotaService(maxQuotaManager); QuotaModule quotaModule = new QuotaModule(); MemoryUsersRepository usersRepository = MemoryUsersRepository.withoutVirtualHosting(); - DomainQuotaRoutes domainQuotaRoutes = new DomainQuotaRoutes(domainList, domainQuotaService, usersRepository, new JsonTransformer(quotaModule), ImmutableSet.of(quotaModule)); + DomainQuotaRoutes domainQuotaRoutes = new DomainQuotaRoutes(memoryDomainList, domainQuotaService, usersRepository, new JsonTransformer(quotaModule), ImmutableSet.of(quotaModule)); webAdminServer = WebAdminUtils.createWebAdminServer( new NoopMetricFactory(), domainQuotaRoutes); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org