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:44:40 UTC

svn commit: r1711978 - in /james/project/trunk/server: data/data-api/src/main/java/org/apache/james/rrt/lib/ data/data-file/src/test/java/org/apache/james/rrt/file/ data/data-hbase/src/main/java/org/apache/james/rrt/hbase/ data/data-jdbc/src/main/java/...

Author: matthieu
Date: Mon Nov  2 13:44:40 2015
New Revision: 1711978

URL: http://svn.apache.org/viewvc?rev=1711978&view=rev
Log:
JAMES-1595 create a Builder to handle add and addAll on Mappings

Modified:
    james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
    james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
    james/project/trunk/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
    james/project/trunk/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
    james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
    james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
    james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
    james/project/trunk/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
    james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/mock/MockRecipientRewriteTableManagementImpl.java
    james/project/trunk/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java

Modified: james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java (original)
+++ james/project/trunk/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java Mon Nov  2 13:44:40 2015
@@ -28,8 +28,6 @@ public interface Mappings extends Iterab
     
     Mappings addAll(Mappings toAdd);
 
-    void add(String mapping);
-
     boolean contains(String mapping);
 
     int size();

Modified: james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java (original)
+++ james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java Mon Nov  2 13:44:40 2015
@@ -28,10 +28,13 @@ import org.apache.james.rrt.lib.Abstract
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
+import org.apache.james.rrt.lib.MappingsImpl.Builder;
 import org.apache.james.rrt.lib.RecipientRewriteTableUtil;
 import org.junit.Before;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Optional;
+
 /**
  * Test the XML Virtual User Table implementation.
  */
@@ -59,31 +62,33 @@ public class XMLRecipientRewriteTableTes
 
         Mappings mappings = virtualUserTable.getUserDomainMappings(user, domain);
 
-        if (mappings == null) {
-            mappings = MappingsImpl.empty();
-        } else {
+        if (mappings != null) {
             removeMappingsFromConfig(user, domain, mappings);
         }
 
+        Builder builder = MappingsImpl.from(Optional.fromNullable(mappings).or(MappingsImpl.empty()));
+        
         if (type == ERROR_TYPE) {
-            mappings.add(RecipientRewriteTable.ERROR_PREFIX + mapping);
+            builder.add(RecipientRewriteTable.ERROR_PREFIX + mapping);
         } else if (type == REGEX_TYPE) {
-            mappings.add(RecipientRewriteTable.REGEX_PREFIX + mapping);
+            builder.add(RecipientRewriteTable.REGEX_PREFIX + mapping);
         } else if (type == ADDRESS_TYPE) {
-            mappings.add(mapping);
+            builder.add(mapping);
         } else if (type == ALIASDOMAIN_TYPE) {
-            mappings.add(RecipientRewriteTable.ALIASDOMAIN_PREFIX + mapping);
+            builder.add(RecipientRewriteTable.ALIASDOMAIN_PREFIX + mapping);
         }
 
-        if (mappings.size() > 0) {
+        Mappings updatedMappings = builder.build();
+        
+        if (!updatedMappings.isEmpty()) {
             defaultConfiguration.addProperty("mapping", user + "@" + domain + "=" + RecipientRewriteTableUtil.
-                    CollectionToMapping(mappings));
+                    CollectionToMapping(updatedMappings));
         }
 
         try {
             virtualUserTable.configure(defaultConfiguration);
         } catch (Exception e) {
-            return mappings.size() <= 0;
+            return updatedMappings.size() <= 0;
         }
 
         return true;

Modified: james/project/trunk/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java (original)
+++ james/project/trunk/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java Mon Nov  2 13:44:40 2015
@@ -37,11 +37,14 @@ import org.apache.james.rrt.hbase.def.HR
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
+import org.apache.james.rrt.lib.MappingsImpl.Builder;
 import org.apache.james.rrt.lib.RecipientRewriteTableUtil;
 import org.apache.james.system.hbase.TablePool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Optional;
+
 /**
  * Implementation of the RecipientRewriteTable for a HBase persistence.
  */
@@ -62,8 +65,8 @@ public class HBaseRecipientRewriteTable
         String fixedDomain = getFixedDomain(domain);
         Mappings map = getUserDomainMappings(fixedUser, fixedDomain);
         if (map != null && map.size() != 0) {
-            map.add(mapping);
-            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(map));
+            Mappings updatedMappings = MappingsImpl.from(map).add(mapping).build();
+            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(updatedMappings.getMappings()));
         } else {
             doAddMapping(fixedUser, fixedDomain, mapping);
         }
@@ -131,12 +134,14 @@ public class HBaseRecipientRewriteTable
                         if (map == null) {
                             map = new HashMap<String, Mappings>();
                         }
-                        Mappings list = map.get(email);
-                        if (list == null) {
-                            list = MappingsImpl.empty();
-                        }
-                        list.add(Bytes.toString(keyValue.getRow()));
-                        map.put(email, list);
+                        Mappings mappings = 
+                                MappingsImpl.from(
+                                    Optional.fromNullable(
+                                        map.get(email))
+                                        .or(MappingsImpl.empty()))
+                                .add(Bytes.toString(keyValue.getRow()))
+                                .build();
+                        map.put(email, mappings);
                     }
                 }
             }

Modified: james/project/trunk/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java (original)
+++ james/project/trunk/server/data/data-jdbc/src/main/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTable.java Mon Nov  2 13:44:40 2015
@@ -209,8 +209,8 @@ public class JDBCRecipientRewriteTable e
         String fixedDomain = getFixedDomain(domain);
         Mappings map = getUserDomainMappings(fixedUser, fixedDomain);
         if (map != null && map.size() != 0) {
-            map.add(regex);
-            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(map));
+            Mappings updatedMappings = MappingsImpl.from(map).add(regex).build();
+            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(updatedMappings));
         }
         doAddMapping(fixedUser, fixedDomain, regex);
     }

Modified: james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java (original)
+++ james/project/trunk/server/data/data-jpa/src/main/java/org/apache/james/rrt/jpa/JPARecipientRewriteTable.java Mon Nov  2 13:44:40 2015
@@ -65,8 +65,8 @@ public class JPARecipientRewriteTable ex
         String fixedDomain = getFixedDomain(domain);
         Mappings map = getUserDomainMappings(fixedUser, fixedDomain);
         if (map != null && map.size() != 0) {
-            map.add(mapping);
-            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(map));
+            Mappings updatedMappings = MappingsImpl.from(map).add(mapping).build();
+            doUpdateMapping(fixedUser, fixedDomain, RecipientRewriteTableUtil.CollectionToMapping(updatedMappings));
         } else {
             doAddMapping(fixedUser, fixedDomain, mapping);
         }

Modified: james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java (original)
+++ james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java Mon Nov  2 13:44:40 2015
@@ -126,7 +126,7 @@ public abstract class AbstractRecipientR
 
         // Only non-null mappings are translated
         if (targetString != null) {
-            Mappings mappings = MappingsImpl.empty();
+            MappingsImpl.Builder mappings = MappingsImpl.builder();
             if (targetString.startsWith(RecipientRewriteTable.ERROR_PREFIX)) {
                 throw new ErrorMappingException(targetString.substring(RecipientRewriteTable.ERROR_PREFIX.length()));
 
@@ -189,7 +189,7 @@ public abstract class AbstractRecipientR
                 }
             }
 
-            return mappings;
+            return mappings.build();
 
         }
 

Modified: james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java (original)
+++ james/project/trunk/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java Mon Nov  2 13:44:40 2015
@@ -23,9 +23,9 @@ package org.apache.james.rrt.lib;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.List;
 import java.util.StringTokenizer;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
@@ -53,6 +53,40 @@ public class MappingsImpl implements Map
         return new MappingsImpl(mappings);
     }
     
+    public static Builder from(Mappings from) {
+        Builder builder = new Builder();
+        builder.addAll(from);
+        return builder;
+    }
+    
+    public static Builder builder() {
+        return new Builder();
+    }
+    
+    public static class Builder {
+        
+        private final ImmutableList.Builder<String> mappings;
+        
+        private Builder() {
+            mappings = ImmutableList.builder();
+        }
+
+        public Builder add(String mapping) {
+            mappings.add(mapping);
+            return this;
+        }
+
+        public Builder addAll(Mappings mappings) {
+            this.mappings.addAll(mappings);
+            return this;
+        }
+        
+        public Mappings build() {
+            return new MappingsImpl(mappings.build());
+        }
+        
+    }
+    
     private final Collection<String> mappings;
 
     private MappingsImpl(Collection<String> mappings) {
@@ -75,11 +109,6 @@ public class MappingsImpl implements Map
     }
 
     @Override
-    public void add(String mapping) {
-       mappings.add(mapping); 
-    }
-
-    @Override
     public boolean contains(String mapping) {
         return mappings.contains(mapping);
     }
@@ -94,10 +123,6 @@ public class MappingsImpl implements Map
         return mappings.remove(mapping);
     }
 
-    public void addAll(List<String> target) {
-        mappings.addAll(target);
-    }
-
     @Override
     public boolean isEmpty() {
         return mappings.isEmpty();

Modified: james/project/trunk/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java (original)
+++ james/project/trunk/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java Mon Nov  2 13:44:40 2015
@@ -29,6 +29,7 @@ import org.apache.james.rrt.api.Recipien
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
+import org.apache.james.rrt.lib.MappingsImpl.Builder;
 import org.apache.james.user.api.JamesUsersRepository;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
@@ -121,7 +122,7 @@ public abstract class AbstractJamesUsers
      *      java.lang.String)
      */
     public Mappings getMappings(String username, String domain) throws ErrorMappingException, RecipientRewriteTableException {
-        MappingsImpl mappings = MappingsImpl.empty();
+        Builder mappingsBuilder = MappingsImpl.builder();
         try {
             User user = getUserByName(username);
 
@@ -131,14 +132,14 @@ public abstract class AbstractJamesUsers
                 if (enableAliases && jUser.getAliasing()) {
                     String alias = jUser.getAlias();
                     if (alias != null) {
-                        mappings.add(alias + "@" + domain);
+                        mappingsBuilder.add(alias + "@" + domain);
                     }
                 }
 
                 if (enableForwarding && jUser.getForwarding()) {
                     String forward;
                     if (jUser.getForwardingDestination() != null && ((forward = jUser.getForwardingDestination().toString()) != null)) {
-                        mappings.add(forward);
+                        mappingsBuilder.add(forward);
                     } else {
                         String errorBuffer = "Forwarding was enabled for " + username + " but no forwarding address was set for this account.";
                         getLogger().error(errorBuffer);
@@ -148,6 +149,7 @@ public abstract class AbstractJamesUsers
         } catch (UsersRepositoryException e) {
             throw new RecipientRewriteTableException("Unable to lookup forwards/aliases", e);
         }
+        Mappings mappings = mappingsBuilder.build();
         if (mappings.size() == 0) {
             return null;
         } else {

Modified: james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/mock/MockRecipientRewriteTableManagementImpl.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/mock/MockRecipientRewriteTableManagementImpl.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/mock/MockRecipientRewriteTableManagementImpl.java (original)
+++ james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/mock/MockRecipientRewriteTableManagementImpl.java Mon Nov  2 13:44:40 2015
@@ -109,18 +109,17 @@ public class MockRecipientRewriteTableMa
     }
 
     private void addRawMapping(String user, String domain, String mapping) throws RecipientRewriteTableException {
-        MappingsImpl map;
         String key = user + "@" + domain;
         String mappings = (String) store.get(key);
 
         if (mappings != null) {
-            map = MappingsImpl.fromRawString(mappings);
+            MappingsImpl map = MappingsImpl.fromRawString(mappings);
 
             if (map.contains(mapping)) {
                 throw new RecipientRewriteTableException("Mapping " + mapping + " already exist!");
             } else {
-                map.add(mapping);
-                store.put(key, RecipientRewriteTableUtil.CollectionToMapping(map));
+                Mappings updateMappings = MappingsImpl.from(map).add(mapping).build();
+                store.put(key, RecipientRewriteTableUtil.CollectionToMapping(updateMappings));
             }
         } else {
             store.put(key, mapping);

Modified: james/project/trunk/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java?rev=1711978&r1=1711977&r2=1711978&view=diff
==============================================================================
--- james/project/trunk/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java (original)
+++ james/project/trunk/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java Mon Nov  2 13:44:40 2015
@@ -21,6 +21,7 @@ package org.apache.james.smtpserver;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -115,13 +116,12 @@ public class ValidRcptHandlerTest {
             @Override
             public Mappings getMappings(String user, String domain) throws ErrorMappingException,
                     RecipientRewriteTableException {
-                Mappings mappings = MappingsImpl.empty();
                 if (user.equals(USER1)) {
-                    mappings.add("address@localhost");
+                    return MappingsImpl.fromCollection(Arrays.asList("address@localhost"));
                 } else if (user.equals(USER2)) {
                     throw new ErrorMappingException("554 BOUNCE");
                 }
-                return mappings;
+                return MappingsImpl.empty();
             }
 
             @Override



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