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 ad...@apache.org on 2018/09/05 09:49:44 UTC
[1/5] james-project git commit: JAMES-2538 SetFilter should tolerate
null values
Repository: james-project
Updated Branches:
refs/heads/master 3f2f8a709 -> 42c684678
JAMES-2538 SetFilter should tolerate null values
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ff0ff102
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ff0ff102
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ff0ff102
Branch: refs/heads/master
Commit: ff0ff1022ae072a1a6abb3f266074723bdb56308
Parents: 45357f3
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Sep 4 15:35:12 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 5 11:48:33 2018 +0200
----------------------------------------------------------------------
.../jmap/methods/integration/FilterTest.java | 38 ++++++++++++++++++++
.../james/jmap/model/SetFilterRequest.java | 10 ++++--
2 files changed, 46 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff0ff102/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
index 3b6dab5..fee2696 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
@@ -379,6 +379,25 @@ public abstract class FilterTest {
}
@Test
+ public void setFilterShouldAcceptNullAccountId() {
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body("[[" +
+ " \"setFilter\", " +
+ " {" +
+ " \"accountId\": null," +
+ " \"singleton\": []" +
+ " }, " +
+ "\"#0\"" +
+ "]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .body(NAME, equalTo("filterSet"))
+ .body(ARGUMENTS + ".updated", hasSize(1));
+ }
+
+ @Test
public void setFilterShouldRejectIfInState() {
given()
.header("Authorization", accessToken.serialize())
@@ -399,6 +418,25 @@ public abstract class FilterTest {
}
@Test
+ public void setFilterShouldAcceptNullIfInState() {
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body("[[" +
+ " \"setFilter\", " +
+ " {" +
+ " \"ifInState\": null," +
+ " \"singleton\": []" +
+ " }, " +
+ "\"#0\"" +
+ "]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .body(NAME, equalTo("filterSet"))
+ .body(ARGUMENTS + ".updated", hasSize(1));
+ }
+
+ @Test
public void getFilterShouldRetrievePreviouslyStoredRules() {
MailboxId mailbox1 = randomMailboxId();
MailboxId mailbox2 = randomMailboxId();
http://git-wip-us.apache.org/repos/asf/james-project/blob/ff0ff102/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetFilterRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetFilterRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetFilterRequest.java
index 5371534..82d5e68 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetFilterRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetFilterRequest.java
@@ -42,11 +42,17 @@ public class SetFilterRequest implements JmapRequest {
}
public Builder accountId(String accountId) {
- throw new JmapFieldNotSupportedException(ISSUER, "accountId");
+ if (accountId != null) {
+ throw new JmapFieldNotSupportedException(ISSUER, "accountId");
+ }
+ return this;
}
public Builder ifInState(String ifInState) {
- throw new JmapFieldNotSupportedException(ISSUER, "ifInState");
+ if (ifInState != null) {
+ throw new JmapFieldNotSupportedException(ISSUER, "ifInState");
+ }
+ return this;
}
public Builder singleton(List<JmapRuleDTO> rules) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/5] james-project git commit: JAMES-2536 Fetch a DLP configuration
item by sender domain and rule id
Posted by ad...@apache.org.
JAMES-2536 Fetch a DLP configuration item by sender domain and rule id
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/96e21556
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/96e21556
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/96e21556
Branch: refs/heads/master
Commit: 96e215560e4767efa1f49d20dd92963f0da942d0
Parents: 3f2f8a7
Author: Gautier DI FOLCO <gd...@linagora.com>
Authored: Mon Sep 3 15:08:51 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 5 11:49:07 2018 +0200
----------------------------------------------------------------------
.../james/dlp/api/DLPConfigurationStore.java | 5 +-
.../EventSourcingDLPConfigurationStore.java | 9 ++
.../webadmin/dto/DLPConfigurationItemDTO.java | 4 +-
.../webadmin/routes/DLPConfigurationRoutes.java | 41 +++++++-
.../routes/DLPConfigurationRoutesTest.java | 101 +++++++++++++++++++
src/site/markdown/server/manage-webadmin.md | 29 ++++++
6 files changed, 184 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java
index 4272f49..291b932 100644
--- a/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java
+++ b/server/data/data-api/src/main/java/org/apache/james/dlp/api/DLPConfigurationStore.java
@@ -20,6 +20,7 @@
package org.apache.james.dlp.api;
import java.util.List;
+import java.util.Optional;
import org.apache.james.core.Domain;
@@ -34,5 +35,7 @@ public interface DLPConfigurationStore extends DLPConfigurationLoader {
}
void clear(Domain domain);
-
+
+ Optional<DLPConfigurationItem> fetch(Domain domain, DLPConfigurationItem.Id ruleId);
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/server/data/data-library/src/main/java/org/apache/james/dlp/eventsourcing/EventSourcingDLPConfigurationStore.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/dlp/eventsourcing/EventSourcingDLPConfigurationStore.java b/server/data/data-library/src/main/java/org/apache/james/dlp/eventsourcing/EventSourcingDLPConfigurationStore.java
index f367135..0053ba0 100644
--- a/server/data/data-library/src/main/java/org/apache/james/dlp/eventsourcing/EventSourcingDLPConfigurationStore.java
+++ b/server/data/data-library/src/main/java/org/apache/james/dlp/eventsourcing/EventSourcingDLPConfigurationStore.java
@@ -20,12 +20,14 @@
package org.apache.james.dlp.eventsourcing;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Stream;
import javax.inject.Inject;
import org.apache.james.core.Domain;
import org.apache.james.dlp.api.DLPConfigurationItem;
+import org.apache.james.dlp.api.DLPConfigurationItem.Id;
import org.apache.james.dlp.api.DLPConfigurationStore;
import org.apache.james.dlp.eventsourcing.aggregates.DLPAggregateId;
import org.apache.james.dlp.eventsourcing.aggregates.DLPDomainConfiguration;
@@ -78,4 +80,11 @@ public class EventSourcingDLPConfigurationStore implements DLPConfigurationStore
eventSourcingSystem.dispatch(new ClearCommand(domain));
}
+ @Override
+ public Optional<DLPConfigurationItem> fetch(Domain domain, Id ruleId) {
+ return list(domain)
+ .filter((DLPConfigurationItem item) -> item.getId().equals(ruleId))
+ .findFirst();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/dto/DLPConfigurationItemDTO.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/dto/DLPConfigurationItemDTO.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/dto/DLPConfigurationItemDTO.java
index 4ba6416..0b54f42 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/dto/DLPConfigurationItemDTO.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/dto/DLPConfigurationItemDTO.java
@@ -27,13 +27,11 @@ import org.apache.james.dlp.api.DLPConfigurationItem;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
public class DLPConfigurationItemDTO {
- @VisibleForTesting
- static DLPConfigurationItemDTO toDTO(DLPConfigurationItem dlpConfiguration) {
+ public static DLPConfigurationItemDTO toDTO(DLPConfigurationItem dlpConfiguration) {
DLPConfigurationItem.Targets targets = dlpConfiguration.getTargets();
return new DLPConfigurationItemDTO(
dlpConfiguration.getId().asString(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DLPConfigurationRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DLPConfigurationRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DLPConfigurationRoutes.java
index 6bd321b..9da61f0 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DLPConfigurationRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DLPConfigurationRoutes.java
@@ -35,11 +35,13 @@ import javax.ws.rs.Produces;
import org.apache.james.core.Domain;
import org.apache.james.dlp.api.DLPConfigurationItem;
+import org.apache.james.dlp.api.DLPConfigurationItem.Id;
import org.apache.james.dlp.api.DLPConfigurationStore;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.webadmin.Routes;
import org.apache.james.webadmin.dto.DLPConfigurationDTO;
+import org.apache.james.webadmin.dto.DLPConfigurationItemDTO;
import org.apache.james.webadmin.utils.ErrorResponder;
import org.apache.james.webadmin.utils.ErrorResponder.ErrorType;
import org.apache.james.webadmin.utils.JsonExtractor;
@@ -72,6 +74,9 @@ public class DLPConfigurationRoutes implements Routes {
private static final String DOMAIN_NAME = ":senderDomain";
private static final String SPECIFIC_DLP_RULE_DOMAIN = BASE_PATH + SEPARATOR + DOMAIN_NAME;
+ private static final String RULE_ID_NAME = ":ruleId";
+ private static final String RULE_SPECIFIC_PATH = SPECIFIC_DLP_RULE_DOMAIN + SEPARATOR + "rules" + SEPARATOR + RULE_ID_NAME;
+
private final JsonTransformer jsonTransformer;
private final DLPConfigurationStore dlpConfigurationStore;
private final JsonExtractor<DLPConfigurationDTO> jsonExtractor;
@@ -98,6 +103,8 @@ public class DLPConfigurationRoutes implements Routes {
defineList(service);
defineClear(service);
+
+ defineFetch(service);
}
@PUT
@@ -131,7 +138,7 @@ public class DLPConfigurationRoutes implements Routes {
@GET
@Path("/{senderDomain}")
- @ApiOperation(value = "Return a DLP configuration for given senderDomain")
+ @ApiOperation(value = "Return a DLP configuration for a given senderDomain")
@ApiImplicitParams({
@ApiImplicitParam(required = true, dataType = "string", name = "senderDomain", paramType = "path")
})
@@ -185,6 +192,38 @@ public class DLPConfigurationRoutes implements Routes {
}, jsonTransformer);
}
+ @GET
+ @Path("/{senderDomain}/rules/{ruleId}")
+ @ApiOperation(value = "Return a DLP rule for a given senderDomain and a ruleId")
+ @ApiImplicitParams({
+ @ApiImplicitParam(required = true, dataType = "string", name = "senderDomain", paramType = "path"),
+ @ApiImplicitParam(required = true, dataType = "string", name = "ruleId", paramType = "path")
+ })
+ @ApiResponses(value = {
+ @ApiResponse(code = HttpStatus.OK_200, message = "OK. DLP rule is returned", response = DLPConfigurationItemDTO.class),
+ @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Invalid senderDomain in request",
+ response = ErrorResponder.ErrorDetail.class),
+ @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "The domain and/or the rule does not exist.",
+ response = ErrorResponder.ErrorDetail.class),
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500,
+ message = "Internal server error - Something went bad on the server side.",
+ response = ErrorResponder.ErrorDetail.class)
+ })
+ public void defineFetch(Service service) {
+ service.get(RULE_SPECIFIC_PATH, (request, response) -> {
+ Domain senderDomain = parseDomain(request);
+ Id ruleId = DLPConfigurationItem.Id.of(request.params(RULE_ID_NAME));
+ DLPConfigurationItem dlpConfigurationItem = dlpConfigurationStore
+ .fetch(senderDomain, ruleId)
+ .orElseThrow(() -> notFound("There is no rule '" + ruleId.asString() + "' for '" + senderDomain.asString() + "' managed by this James server"));
+
+ DLPConfigurationItemDTO dto = DLPConfigurationItemDTO.toDTO(dlpConfigurationItem);
+ response.status(HttpStatus.OK_200);
+ response.header(CONTENT_TYPE, JSON_CONTENT_TYPE);
+ return dto;
+ }, jsonTransformer);
+ }
+
private Domain parseDomain(Request request) {
String domainName = request.params(DOMAIN_NAME);
try {
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
index 9bc2aa0..72d5a8a 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
@@ -24,6 +24,8 @@ import static io.restassured.RestAssured.requestSpecification;
import static io.restassured.RestAssured.when;
import static io.restassured.RestAssured.with;
import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
+import static net.javacrumbs.jsonunit.core.Option.IGNORING_EXTRA_FIELDS;
import static org.apache.james.webadmin.Constants.JSON_CONTENT_TYPE;
import static org.apache.james.webadmin.WebAdminServer.NO_CONFIGURATION;
import static org.hamcrest.Matchers.containsString;
@@ -698,4 +700,103 @@ class DLPConfigurationRoutesTest {
.body("details", is("Domain can not be empty nor contain `@`"));
}
}
+
+ @Nested
+ class DefineFetch {
+ @Test
+ public void fetchShouldBeOK() throws Exception {
+ storeRules();
+
+ String jsonAsString =
+ when()
+ .get(DEFAULT_DOMAIN + "/rules/1")
+ .then()
+ .statusCode(HttpStatus.OK_200)
+ .contentType(ContentType.JSON)
+ .extract()
+ .body()
+ .asString();
+
+ assertThatJson(jsonAsString)
+ .when(IGNORING_ARRAY_ORDER)
+ .when(IGNORING_EXTRA_FIELDS)
+ .isEqualTo("{" +
+ " \"id\": \"1\"," +
+ " \"expression\": \"expression 1\"," +
+ " \"explanation\": \"explanation 1\"," +
+ " \"targetsSender\": true," +
+ " \"targetsRecipients\": true," +
+ " \"targetsContent\": true" +
+ "}");
+ }
+
+ @Test
+ public void fetchOnUnknownDomainShouldBe404() throws Exception {
+ storeRules();
+
+ when()
+ .get("strange.com/rules/1")
+ .then()
+ .statusCode(HttpStatus.NOT_FOUND_404)
+ .contentType(JSON_CONTENT_TYPE)
+ .body("statusCode", is(HttpStatus.NOT_FOUND_404))
+ .body("type", is("InvalidArgument"))
+ .body("message", is("'strange.com' is not managed by this James server"));
+ }
+
+ @Test
+ public void fetchOnUnknownDomainAndRuleShouldBe404() throws Exception {
+ when()
+ .get("strange.com/rules/666")
+ .then()
+ .statusCode(HttpStatus.NOT_FOUND_404)
+ .contentType(JSON_CONTENT_TYPE)
+ .body("statusCode", is(HttpStatus.NOT_FOUND_404))
+ .body("type", is("InvalidArgument"))
+ .body("message", is("'strange.com' is not managed by this James server"));
+ }
+
+ @Test
+ public void fetchOnUnknownRuleIdShouldBe404() throws Exception {
+ storeRules();
+
+ when()
+ .get(DEFAULT_DOMAIN + "/rules/666")
+ .then()
+ .statusCode(HttpStatus.NOT_FOUND_404)
+ .contentType(JSON_CONTENT_TYPE)
+ .body("statusCode", is(HttpStatus.NOT_FOUND_404))
+ .body("type", is("InvalidArgument"))
+ .body("message", is("There is no rule '666' for '" + DEFAULT_DOMAIN + "' managed by this James server"));
+ }
+
+ private void storeRules() {
+ String storeBody =
+ "{\"rules\": [" +
+ " {" +
+ " \"id\": \"1\"," +
+ " \"expression\": \"expression 1\"," +
+ " \"explanation\": \"explanation 1\"," +
+ " \"targetsSender\": true," +
+ " \"targetsRecipients\": true," +
+ " \"targetsContent\": true" +
+ " }," +
+ " {" +
+ " \"id\": \"2\"," +
+ " \"expression\": \"expression 2\"," +
+ " \"explanation\": \"explanation 2\"," +
+ " \"targetsSender\": true," +
+ " \"targetsRecipients\": false," +
+ " \"targetsContent\": false" +
+ " }]}";
+
+ given()
+ .body(storeBody)
+ .when()
+ .put(DEFAULT_DOMAIN)
+ .then()
+ .statusCode(HttpStatus.NO_CONTENT_204);
+
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/96e21556/src/site/markdown/server/manage-webadmin.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md
index 2e869c2..f935551 100644
--- a/src/site/markdown/server/manage-webadmin.md
+++ b/src/site/markdown/server/manage-webadmin.md
@@ -1809,6 +1809,7 @@ Each `senderDomain` correspond to a distinct DLP configuration.
- [List DLP configuration by sender domain](List_dlp_configuration_by_sender_domain)
- [Store DLP configuration by sender domain](Store_dlp_configuration_by_sender_domain)
- [Remove DLP configuration by sender domain](Remove_dlp_configuration_by_sender_domain)
+- [Fetch a DLP configuration item by sender domain and rule id](Fetch_a_dlp_configuration_item_by_sender_domain_and_rule_id)
### List DLP configuration by sender domain
@@ -1907,6 +1908,34 @@ Response codes:
- 400: Invalid senderDomain or payload in request
- 404: The domain does not exist.
+
+### Fetch a DLP configuration item by sender domain and rule id
+
+Retrieve a DLP configuration rule for corresponding `senderDomain` and a `ruleId`
+
+```
+curl -XGET http://ip:port/dlp/rules/senderDomain/rules/ruleId
+```
+
+Response codes:
+
+ - 200: A dlp configuration item is returned
+ - 400: Invalid senderDomain or payload in request
+ - 404: The domain and/or the rule does not exist.
+
+This is an example of returned body.
+
+```
+{
+ "id": "1",
+ "expression": "james.org",
+ "explanation": "Find senders or recipients containing james[any char]org",
+ "targetsSender": true,
+ "targetsRecipients": true,
+ "targetsContent": false
+}
+```
+
## Administrating Sieve quotas
Some limitations on space Users Sieve script can occupy can be configured by default, and overridden by user.
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[5/5] james-project git commit: Merge branch 'JAMES-2536'
Posted by ad...@apache.org.
Merge branch 'JAMES-2536'
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/42c68467
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/42c68467
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/42c68467
Branch: refs/heads/master
Commit: 42c68467893a9a2639f0635baf6ee499a501751e
Parents: 1dd5eff 96e2155
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Sep 5 11:49:14 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 5 11:49:14 2018 +0200
----------------------------------------------------------------------
.../james/dlp/api/DLPConfigurationStore.java | 5 +-
.../EventSourcingDLPConfigurationStore.java | 9 ++
.../webadmin/dto/DLPConfigurationItemDTO.java | 4 +-
.../webadmin/routes/DLPConfigurationRoutes.java | 41 +++++++-
.../routes/DLPConfigurationRoutesTest.java | 101 +++++++++++++++++++
src/site/markdown/server/manage-webadmin.md | 29 ++++++
6 files changed, 184 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/5] james-project git commit: Fix checkstyle/Eclipse warnings
Posted by ad...@apache.org.
Fix checkstyle/Eclipse warnings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1dd5eff9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1dd5eff9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1dd5eff9
Branch: refs/heads/master
Commit: 1dd5eff94f6260d5fd7e7b1abe2611e30c674742
Parents: ff0ff10
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Sep 4 15:37:04 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 5 11:48:34 2018 +0200
----------------------------------------------------------------------
.../org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java | 2 +-
.../james/blob/objectstorage/DockerSwiftTempAuthExtension.java | 4 ++--
.../util/src/main/java/org/apache/james/util/StreamUtils.java | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/1dd5eff9/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
index b50794c..898d825 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
@@ -29,9 +29,9 @@ import org.apache.james.backends.cassandra.DockerCassandraExtension;
import org.apache.james.backends.cassandra.DockerCassandraExtension.DockerCassandra;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.blob.api.BlobId;
-import org.apache.james.blob.api.HashBlobId;
import org.apache.james.blob.api.BlobStore;
import org.apache.james.blob.api.BlobStoreContract;
+import org.apache.james.blob.api.HashBlobId;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
http://git-wip-us.apache.org/repos/asf/james-project/blob/1dd5eff9/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftTempAuthExtension.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftTempAuthExtension.java b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftTempAuthExtension.java
index 9bc31ee..4d2c716 100644
--- a/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftTempAuthExtension.java
+++ b/server/blob/blob-objectstorage/src/test/java/org/apache/james/blob/objectstorage/DockerSwiftTempAuthExtension.java
@@ -31,8 +31,8 @@ import org.testcontainers.containers.GenericContainer;
class DockerSwiftTempAuthExtension implements ParameterResolver, BeforeAllCallback, AfterAllCallback {
public static final int SWIFT_PORT = 8080;
- private static GenericContainer swiftContainer =
- new GenericContainer("bouncestorage/swift-aio:ea10837d")
+ private static GenericContainer<?> swiftContainer =
+ new GenericContainer<>("bouncestorage/swift-aio:ea10837d")
.withExposedPorts(SWIFT_PORT);
private DockerSwift dockerSwift;
http://git-wip-us.apache.org/repos/asf/james-project/blob/1dd5eff9/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java b/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
index 4f3df3f..ccdffd2 100644
--- a/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
+++ b/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
@@ -27,6 +27,7 @@ import java.util.stream.Stream;
public class StreamUtils {
+ @SafeVarargs
public static <T> Stream<T> ofNullables(T... array) {
return ofNullable(array);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/5] james-project git commit: JAMES-2538 GetFilter should tolerate
null values
Posted by ad...@apache.org.
JAMES-2538 GetFilter should tolerate null values
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/45357f35
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/45357f35
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/45357f35
Branch: refs/heads/master
Commit: 45357f356e62776350efa7abd32d3c58b077feb6
Parents: 3f2f8a7
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Sep 4 15:31:04 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 5 11:48:33 2018 +0200
----------------------------------------------------------------------
.../jmap/methods/integration/FilterTest.java | 39 ++++++++++++++++++++
.../james/jmap/model/GetFilterRequest.java | 5 ++-
2 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/45357f35/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
index e87c417..3b6dab5 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/FilterTest.java
@@ -117,6 +117,45 @@ public abstract class FilterTest {
}
@Test
+ public void getFilterShouldReturnEmptyWhenExplicitNullAccountId() {
+ String body = "[[" +
+ " \"getFilter\", " +
+ " {\"accountId\": null}, " +
+ "\"#0\"" +
+ "]]";
+
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body(body)
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .body(NAME, equalTo("filter"))
+ .body(ARGUMENTS + ".singleton", hasSize(0));
+ }
+
+ @Test
+ public void getFilterShouldReturnErrorWhenUnsupportedAccountId() {
+ String body = "[[" +
+ " \"getFilter\", " +
+ " {\"accountId\": \"any\"}, " +
+ "\"#0\"" +
+ "]]";
+
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body(body)
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .body(NAME, equalTo("error"))
+ .body(ARGUMENTS + ".type", equalTo("invalidArguments"))
+ .body(ARGUMENTS + ".description", equalTo("The field 'accountId' of 'GetFilterRequest' is not supported"));
+ }
+
+ @Test
public void setFilterShouldOverwritePreviouslyStoredRules() {
MailboxId mailbox1 = randomMailboxId();
MailboxId mailbox2 = randomMailboxId();
http://git-wip-us.apache.org/repos/asf/james-project/blob/45357f35/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetFilterRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetFilterRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetFilterRequest.java
index 52195f0..b587d0f 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetFilterRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetFilterRequest.java
@@ -37,7 +37,10 @@ public class GetFilterRequest implements JmapRequest {
}
public Builder accountId(String accountId) {
- throw new JmapFieldNotSupportedException(ISSUER, "accountId");
+ if (accountId != null) {
+ throw new JmapFieldNotSupportedException(ISSUER, "accountId");
+ }
+ return this;
}
public GetFilterRequest build() {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org