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 ma...@apache.org on 2015/11/02 14:47:30 UTC
svn commit: r1711987 - in /james/project/trunk/server:
data/data-api/src/main/java/org/apache/james/rrt/lib/
data/data-library/src/main/java/org/apache/james/rrt/lib/
data/data-library/src/test/java/org/apache/james/rrt/lib/
mailet/mailets/src/main/jav...
Author: matthieu
Date: Mon Nov 2 13:47:30 2015
New Revision: 1711987
URL: http://svn.apache.org/viewvc?rev=1711987&view=rev
Log:
JAMES-1595 Mapping gain some domain handling
Added:
james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java
Modified:
james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
Modified: james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java?rev=1711987&r1=1711986&r2=1711987&view=diff
==============================================================================
--- james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java (original)
+++ james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mapping.java Mon Nov 2 13:47:30 2015
@@ -25,4 +25,8 @@ public interface Mapping {
String asString();
+ boolean hasDomain();
+
+ Mapping appendDomain(String domain);
+
}
\ No newline at end of file
Modified: james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java?rev=1711987&r1=1711986&r2=1711987&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java (original)
+++ james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingImpl.java Mon Nov 2 13:47:30 2015
@@ -21,6 +21,7 @@
package org.apache.james.rrt.lib;
import com.google.common.base.Objects;
+import com.google.common.base.Preconditions;
public class MappingImpl implements Mapping {
@@ -41,6 +42,17 @@ public class MappingImpl implements Mapp
}
@Override
+ public boolean hasDomain() {
+ return mapping.contains("@");
+ }
+
+ @Override
+ public Mapping appendDomain(String domain) {
+ Preconditions.checkNotNull(domain);
+ return new MappingImpl(mapping + "@" + domain);
+ }
+
+ @Override
public boolean equals(Object other) {
if (other instanceof MappingImpl) {
MappingImpl otherMapping = (MappingImpl) other;
Added: james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java?rev=1711987&view=auto
==============================================================================
--- james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java (added)
+++ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingImplTest.java Mon Nov 2 13:47:30 2015
@@ -0,0 +1,69 @@
+/*
+ * 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.rrt.lib;
+
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class MappingImplTest {
+
+ @Test
+ public void hasDomainshouldReturnTrueWhenMappingContainAtMark() {
+ assertThat(MappingImpl.of("a@b").hasDomain()).isTrue();
+ }
+
+ @Test
+ public void hasDomainshouldReturnFalseWhenMappingIsEmpty() {
+ assertThat(MappingImpl.of("").hasDomain()).isFalse();
+ }
+
+ @Test
+ public void hasDomainshouldReturnFalseWhenMappingIsBlank() {
+ assertThat(MappingImpl.of(" ").hasDomain()).isFalse();
+ }
+
+ @Test
+ public void hasDomainshouldReturnFalseWhenMappingDoesntContainAtMark() {
+ assertThat(MappingImpl.of("abc").hasDomain()).isFalse();
+ }
+
+ @Test
+ public void appendDomainShouldWorkOnValidDomain() {
+ assertThat(MappingImpl.of("abc").appendDomain("domain")).isEqualTo(MappingImpl.of("abc@domain"));
+ }
+
+ @Test
+ public void appendDomainShouldWorkWhenMappingAlreadyContainsDomains() {
+ assertThat(MappingImpl.of("abc@d").appendDomain("domain")).isEqualTo(MappingImpl.of("abc@d@domain"));
+ }
+
+ @Test(expected=NullPointerException.class)
+ public void appendDomainShouldThrowWhenNullDomain() {
+ MappingImpl.of("abc@d").appendDomain(null);
+ }
+
+ @Test
+ public void appendDomainShouldWorkWhenEmptyDomain() {
+ assertThat(MappingImpl.of("abc").appendDomain("")).isEqualTo(MappingImpl.of("abc@"));
+ }
+
+}
Modified: james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java?rev=1711987&r1=1711986&r2=1711987&view=diff
==============================================================================
--- james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java (original)
+++ james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTableMailet.java Mon Nov 2 13:47:30 2015
@@ -31,6 +31,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.domainlist.api.DomainListException;
+import org.apache.james.rrt.lib.Mapping;
import org.apache.james.rrt.lib.Mappings;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -125,22 +126,22 @@ public abstract class AbstractRecipientR
* @throws MessagingException
*/
protected Collection<MailAddress> handleMappings(Mappings mappings, MailAddress sender, MailAddress recipient, MimeMessage message) throws MessagingException {
- Iterator<String> i = mappings.asStrings().iterator();
+ Iterator<Mapping> i = mappings.iterator();
Collection<MailAddress> remoteRecipients = new ArrayList<MailAddress>();
Collection<MailAddress> localRecipients = new ArrayList<MailAddress>();
while (i.hasNext()) {
- String rcpt = i.next();
+ Mapping rcpt = i.next();
- if (!rcpt.contains("@")) {
+ if (!rcpt.hasDomain()) {
// the mapping contains no domain name, use the default domain
try {
- rcpt = rcpt + "@" + domainList.getDefaultDomain();
+ rcpt = rcpt.appendDomain(domainList.getDefaultDomain());
} catch (DomainListException e) {
throw new MessagingException("Unable to access DomainList", e);
}
}
- MailAddress nextMap = new MailAddress(rcpt);
+ MailAddress nextMap = new MailAddress(rcpt.asString());
if (getMailetContext().isLocalServer(nextMap.getDomain())) {
localRecipients.add(nextMap);
} else {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org