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 2018/04/24 12:50:44 UTC

[15/27] james-project git commit: JAMES-2366 WebAdmin Group API should rely on RRT group

JAMES-2366 WebAdmin Group API should rely on RRT group


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6368cb06
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6368cb06
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6368cb06

Branch: refs/heads/master
Commit: 6368cb0604200421cd39c64f6164ae129ccae777
Parents: 7208b3ce
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 6 11:34:52 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Apr 24 14:45:26 2018 +0200

----------------------------------------------------------------------
 .../james/cli/probe/impl/JmxDataProbe.java      | 31 +++++++++++++++++---
 .../org/apache/james/utils/DataProbeImpl.java   | 10 +++++++
 .../java/org/apache/james/probe/DataProbe.java  |  4 +++
 .../RecipientRewriteTableManagementMBean.java   | 24 +++++++++++++++
 .../lib/RecipientRewriteTableManagement.java    | 17 +++++++++++
 .../WebAdminServerIntegrationTest.java          |  4 +--
 .../james/webadmin/routes/GroupsRoutes.java     |  8 ++---
 .../james/webadmin/routes/GroupsRoutesTest.java | 12 ++++----
 8 files changed, 94 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java
----------------------------------------------------------------------
diff --git a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java
index 4e24f18..9cc3b60 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxDataProbe.java
@@ -26,6 +26,7 @@ import java.util.Map;
 
 import javax.management.MalformedObjectNameException;
 
+import org.apache.james.core.Domain;
 import org.apache.james.domainlist.api.DomainListManagementMBean;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.rrt.api.RecipientRewriteTableManagementMBean;
@@ -246,8 +247,8 @@ public class JmxDataProbe implements DataProbe, JmxProbe {
                     .addContext(MDCBuilder.ACTION, "addForwardMapping")
                     .build()) {
            virtualUserTableProxy.addForwardMapping(user, domain, address);
-       }
-   }
+        }
+    }
 
     @Override
     public void removeForwardMapping(String user, String domain, String address) throws Exception {
@@ -257,6 +258,28 @@ public class JmxDataProbe implements DataProbe, JmxProbe {
                     .addContext(MDCBuilder.ACTION, "removeForwardMapping")
                     .build()) {
            virtualUserTableProxy.removeForwardMapping(user, domain, address);
-       }
-   }
+        }
+    }
+
+    @Override
+    public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception {
+        try (Closeable closeable =
+                 MDCBuilder.create()
+                     .addContext(MDCBuilder.PROTOCOL, JMX)
+                     .addContext(MDCBuilder.ACTION, "removeForwardMapping")
+                     .build()) {
+            virtualUserTableProxy.addGroupMapping(toUser, toDomain, fromAddress);
+        }
+    }
+
+    @Override
+    public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception {
+        try (Closeable closeable =
+                 MDCBuilder.create()
+                     .addContext(MDCBuilder.PROTOCOL, JMX)
+                     .addContext(MDCBuilder.ACTION, "removeForwardMapping")
+                     .build()) {
+            virtualUserTableProxy.removeGroupMapping(toUser, toDomain, fromAddress);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java
index 1e70007..592f3a8 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/DataProbeImpl.java
@@ -143,4 +143,14 @@ public class DataProbeImpl implements GuiceProbe, DataProbe {
     public void removeForwardMapping(String user, String domain, String address) throws Exception {
         recipientRewriteTable.removeForwardMapping(user, Domain.of(domain), address);
     }
+
+    @Override
+    public void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception {
+        recipientRewriteTable.addGroupMapping(toUser, Domain.of(toDomain), fromAddress);
+    }
+
+    @Override
+    public void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception {
+        recipientRewriteTable.removeGroupMapping(toUser, Domain.of(toDomain), fromAddress);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java b/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java
index 2dc6f8c..c545d27 100644
--- a/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java
+++ b/server/data/data-api/src/main/java/org/apache/james/probe/DataProbe.java
@@ -61,4 +61,8 @@ public interface DataProbe {
     void addForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception;
 
     void removeForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception;
+
+    void addGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception;
+
+    void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java
index dec0e4d..75e4dee 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTableManagementMBean.java
@@ -211,4 +211,28 @@ public interface RecipientRewriteTableManagementMBean {
      * @throws Exception If an error occurred
      */
     void removeForwardMapping(String toUser, String toDomain, String fromAddress) throws Exception;
+
+    /***
+     * Add group mapping
+     *
+     * @param toUser
+     *            the username part of the mail address destination defined for this group.
+     * @param toDomain
+     *            the domain part of the mail address destination defined for this group.
+     * @param fromAddress The base address of the group. Mails for this address will be sent to the added group destination.
+     * @throws Exception If an error occurred
+     */
+    void addGroupMapping(String user, String domain, String address) throws Exception;
+
+    /**
+     * Remove group mapping
+     *
+     * @param toUser
+     *            the username part of the mail address destination defined for this group.
+     * @param toDomain
+     *            the domain part of the mail address destination defined for this group.
+     * @param fromAddress The base address of the forward. Mails for this address will no more sent to the removed group destination.
+     * @throws Exception If an error occurred
+     */
+    void removeGroupMapping(String toUser, String toDomain, String fromAddress) throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
index 13c5108..3da96e3 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableManagement.java
@@ -114,4 +114,21 @@ public class RecipientRewriteTableManagement extends StandardMBean implements Re
         rrt.removeForwardMapping(user, Domain.of(domain), address);
     }
 
+    @Override
+    public void addGroupMapping(String toUser, String toDomain, String fromAddress) {
+        try {
+            rrt.addGroupMapping(toUser, Domain.of(toDomain), fromAddress);
+        } catch (RecipientRewriteTableException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public void removeGroupMapping(String toUser, String toDomain, String fromAddress) {
+        try {
+            rrt.removeForwardMapping(toUser, Domain.of(toDomain), fromAddress);
+        } catch (RecipientRewriteTableException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
index d882331..18181b3 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
@@ -281,8 +281,8 @@ public class WebAdminServerIntegrationTest {
 
     @Test
     public void addressGroupsEndpointShouldHandleRequests() throws Exception {
-        dataProbe.addAddressMapping("group", "domain.com", "user1@domain.com");
-        dataProbe.addAddressMapping("group", "domain.com", "user2@domain.com");
+        dataProbe.addGroupMapping("group", "domain.com", "user1@domain.com");
+        dataProbe.addGroupMapping("group", "domain.com", "user2@domain.com");
 
         List<String> members = when()
             .get("/address/groups/group@domain.com")

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/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 29ec2f8..1f5cd39 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
@@ -127,7 +127,7 @@ public class GroupsRoutes implements Routes {
         return Optional.ofNullable(recipientRewriteTable.getAllMappings())
             .map(mappings ->
                 mappings.entrySet().stream()
-                    .filter(e -> e.getValue().contains(Mapping.Type.Address))
+                    .filter(e -> e.getValue().contains(Mapping.Type.Group))
                     .map(Map.Entry::getKey)
                     .collect(Guavate.toImmutableSortedSet()))
             .orElse(ImmutableSortedSet.of());
@@ -159,7 +159,7 @@ public class GroupsRoutes implements Routes {
         ensureRegisteredDomain(domain);
         ensureNotShadowingAnotherAddress(groupAddress);
         MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS));
-        recipientRewriteTable.addAddressMapping(groupAddress.getLocalPart(), domain, userAddress.asString());
+        recipientRewriteTable.addGroupMapping(groupAddress.getLocalPart(), domain, userAddress.asString());
         return halt(HttpStatus.CREATED_201);
     }
 
@@ -201,7 +201,7 @@ 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(
+        recipientRewriteTable.removeGroupMapping(
             groupAddress.getLocalPart(),
             groupAddress.getDomain(),
             userAddress.asString());
@@ -227,7 +227,7 @@ public class GroupsRoutes implements Routes {
 
         ensureNonEmptyMappings(mappings);
 
-        return mappings.select(Mapping.Type.Address)
+        return mappings.select(Mapping.Type.Group)
                 .asStream()
                 .map(Mapping::asMailAddress)
                 .flatMap(OptionalUtils::toStream)

http://git-wip-us.apache.org/repos/asf/james-project/blob/6368cb06/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 e412b44..1dd9c6c 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
@@ -527,7 +527,7 @@ class GroupsRoutesTest {
         void putShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
             doThrow(RecipientRewriteTableException.class)
                 .when(memoryRecipientRewriteTable)
-                .addAddressMapping(anyString(), any(), anyString());
+                .addGroupMapping(anyString(), any(), anyString());
 
             when()
                 .put(GROUP1 + SEPARATOR + GROUP2)
@@ -540,7 +540,7 @@ class GroupsRoutesTest {
         void putShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
             doThrow(RecipientRewriteTable.ErrorMappingException.class)
                 .when(memoryRecipientRewriteTable)
-                .addAddressMapping(anyString(), any(), anyString());
+                .addGroupMapping(anyString(), any(), anyString());
 
             when()
                 .put(GROUP1 + SEPARATOR + GROUP2)
@@ -553,7 +553,7 @@ class GroupsRoutesTest {
         void putShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
             doThrow(RuntimeException.class)
                 .when(memoryRecipientRewriteTable)
-                .addAddressMapping(anyString(), any(), anyString());
+                .addGroupMapping(anyString(), any(), anyString());
 
             when()
                 .put(GROUP1 + SEPARATOR + GROUP2)
@@ -605,7 +605,7 @@ class GroupsRoutesTest {
         void deleteShouldReturnErrorWhenRecipientRewriteTableExceptionIsThrown() throws Exception {
             doThrow(RecipientRewriteTableException.class)
                 .when(memoryRecipientRewriteTable)
-                .removeAddressMapping(anyString(), any(), anyString());
+                .removeGroupMapping(anyString(), any(), anyString());
 
             when()
                 .delete(GROUP1 + SEPARATOR + GROUP2)
@@ -618,7 +618,7 @@ class GroupsRoutesTest {
         void deleteShouldReturnErrorWhenErrorMappingExceptionIsThrown() throws Exception {
             doThrow(RecipientRewriteTable.ErrorMappingException.class)
                 .when(memoryRecipientRewriteTable)
-                .removeAddressMapping(anyString(), any(), anyString());
+                .removeGroupMapping(anyString(), any(), anyString());
 
             when()
                 .delete(GROUP1 + SEPARATOR + GROUP2)
@@ -631,7 +631,7 @@ class GroupsRoutesTest {
         void deleteShouldReturnErrorWhenRuntimeExceptionIsThrown() throws Exception {
             doThrow(RuntimeException.class)
                 .when(memoryRecipientRewriteTable)
-                .removeAddressMapping(anyString(), any(), anyString());
+                .removeGroupMapping(anyString(), any(), anyString());
 
             when()
                 .delete(GROUP1 + SEPARATOR + GROUP2)


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