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