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 <btell...@linagora.com> Authored: Fri Apr 6 11:34:52 2018 +0700 Committer: Matthieu Baechler <matth...@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", "us...@domain.com"); - dataProbe.addAddressMapping("group", "domain.com", "us...@domain.com"); + dataProbe.addGroupMapping("group", "domain.com", "us...@domain.com"); + dataProbe.addGroupMapping("group", "domain.com", "us...@domain.com"); List<String> members = when() .get("/address/groups/gr...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org