Author: matthieu
Date: Mon Nov  2 13:49:15 2015
New Revision: 1711996

URL: http://svn.apache.org/viewvc?rev=1711996&view=rev
Log:
JAMES-1595 Finally fix error message 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-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/test/resources/cucumber/rewrite_tables.feature

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=1711996&r1=1711995&r2=1711996&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:49:15 2015
@@ -41,5 +41,7 @@ public interface Mappings extends Iterab
     Mappings select(Type type);
 
     Mappings exclude(Type type);
+
+    Mapping getError();
     
 }
\ No newline at end of file

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=1711996&r1=1711995&r2=1711996&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:49:15 2015
@@ -35,6 +35,7 @@ import org.apache.james.lifecycle.api.Co
 import org.apache.james.lifecycle.api.LogEnabled;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.lib.Mapping.Type;
 import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 
@@ -123,14 +124,12 @@ public abstract class AbstractRecipientR
 
         // Only non-null mappings are translated
         if (targetMappings != null) {
-            String targetString = targetMappings.serialize();
-            MappingsImpl.Builder mappings = MappingsImpl.builder();
-            if (targetString.startsWith(RecipientRewriteTable.ERROR_PREFIX)) {
-                throw new 
ErrorMappingException(targetString.substring(RecipientRewriteTable.ERROR_PREFIX.length()));
-
+            if (targetMappings.contains(Type.Error)) {
+                throw new 
ErrorMappingException(targetMappings.getError().getErrorMessage());
             } else {
+                MappingsImpl.Builder mappings = MappingsImpl.builder();
 
-                for (String target : 
MappingsImpl.fromRawString(targetString).asStrings()) {
+                for (String target : targetMappings.asStrings()) {
                     if (target.startsWith(RecipientRewriteTable.REGEX_PREFIX)) 
{
                         try {
                             target = RecipientRewriteTableUtil.regexMap(new 
MailAddress(user, domain), target);
@@ -185,10 +184,8 @@ public abstract class AbstractRecipientR
                         mappings.add(target);
                     }
                 }
+                return mappings.build();
             }
-
-            return mappings.build();
-
         }
 
         return null;

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=1711996&r1=1711995&r2=1711996&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:49:15 2015
@@ -35,6 +35,7 @@ import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
 public class MappingsImpl implements Mappings {
@@ -191,6 +192,13 @@ public class MappingsImpl implements Map
         Preconditions.checkNotNull(type);
         return 
fromMappings(FluentIterable.from(mappings).filter(Predicates.not(hasType(type))));
     }
+ 
+    @Override
+    public Mapping getError() {
+        Mappings errors = select(Type.Error);
+        Preconditions.checkState(!errors.isEmpty());
+        return Iterables.getFirst(errors, null);
+    }
     
     @Override
     public int hashCode() {

Modified: 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature?rev=1711996&r1=1711995&r2=1711996&view=diff
==============================================================================
--- 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
 (original)
+++ 
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
 Mon Nov  2 13:49:15 2015
@@ -58,7 +58,6 @@ Feature: Rewrite Tables tests
     Then retrieving mappings for user "test" at domain "localhost" should 
raise a "ErrorMappingException" exception with message "bounce!"
 
 # Bad messsage: "bounce!;test@localhost2" instead of "bounce!"
-  @ignore
   Scenario: stored error mapping should be retrieved when two mappings matching
     Given store "bounce!" error mapping for user "test" at domain "localhost"
     And store "error" error mapping for user "test" at domain "localhost"



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to