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 bt...@apache.org on 2018/01/05 09:17:39 UTC
[13/15] james-project git commit: JAMES-2255 Attachment from JMAP
should use Number for number data
JAMES-2255 Attachment from JMAP should use Number for number data
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/57082375
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/57082375
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/57082375
Branch: refs/heads/master
Commit: 5708237599f9f5be7c6e1eb229e1671e72607b0d
Parents: 8e71c4f
Author: quynhn <qn...@linagora.com>
Authored: Tue Dec 12 13:59:16 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Jan 5 16:11:46 2018 +0700
----------------------------------------------------------------------
.../integration/GetMessageListMethodTest.java | 2 +-
.../org/apache/james/jmap/model/Attachment.java | 26 ++++++++++----------
.../james/jmap/model/FilterCondition.java | 18 +++++++-------
.../org/apache/james/jmap/model/Number.java | 4 +--
.../apache/james/jmap/model/UploadResponse.java | 10 ++++----
.../james/jmap/utils/FilterToSearchQuery.java | 4 +--
.../apache/james/jmap/model/AttachmentTest.java | 9 +++++--
.../james/jmap/model/FilterConditionTest.java | 3 ++-
.../org/apache/james/jmap/model/NumberTest.java | 7 ++++++
9 files changed, 48 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
index 119eea7..8ff2f6a 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
@@ -1924,6 +1924,6 @@ public abstract class GetMessageListMethodTest {
.statusCode(200)
.body(NAME, equalTo("error"))
.body(ARGUMENTS + ".type", equalTo("invalidArguments"))
- .body(ARGUMENTS + ".description", containsString("value should be positive and less than 2^53 or empty"));
+ .body(ARGUMENTS + ".description", containsString("value should be positive and less than 2^53"));
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
index 49081a4..37dfa7f 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
@@ -41,11 +41,11 @@ public class Attachment {
private BlobId blobId;
private String type;
private String name;
- private Long size;
+ private Number size;
private String cid;
private boolean isInline;
- private Long width;
- private Long height;
+ private Number width;
+ private Number height;
public Builder blobId(BlobId blobId) {
this.blobId = blobId;
@@ -69,7 +69,7 @@ public class Attachment {
}
public Builder size(long size) {
- this.size = size;
+ this.size = Number.fromLong(size);
return this;
}
@@ -90,12 +90,12 @@ public class Attachment {
}
public Builder width(long width) {
- this.width = width;
+ this.width = Number.fromLong(width);
return this;
}
public Builder height(long height) {
- this.height = height;
+ this.height = Number.fromLong(height);
return this;
}
@@ -110,13 +110,13 @@ public class Attachment {
private final BlobId blobId;
private final String type;
private final Optional<String> name;
- private final long size;
+ private final Number size;
private final Optional<String> cid;
private final boolean isInline;
- private final Optional<Long> width;
- private final Optional<Long> height;
+ private final Optional<Number> width;
+ private final Optional<Number> height;
- @VisibleForTesting Attachment(BlobId blobId, String type, Optional<String> name, long size, Optional<String> cid, boolean isInline, Optional<Long> width, Optional<Long> height) {
+ @VisibleForTesting Attachment(BlobId blobId, String type, Optional<String> name, Number size, Optional<String> cid, boolean isInline, Optional<Number> width, Optional<Number> height) {
this.blobId = blobId;
this.type = type;
this.name = name;
@@ -139,7 +139,7 @@ public class Attachment {
return name;
}
- public long getSize() {
+ public Number getSize() {
return size;
}
@@ -155,11 +155,11 @@ public class Attachment {
return isInline && cid.isPresent();
}
- public Optional<Long> getWidth() {
+ public Optional<Number> getWidth() {
return width;
}
- public Optional<Long> getHeight() {
+ public Optional<Number> getHeight() {
return height;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
index f1e94ce..6b6cd43 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/FilterCondition.java
@@ -46,8 +46,8 @@ public class FilterCondition implements Filter {
private Optional<List<String>> notInMailboxes;
private ZonedDateTime before;
private ZonedDateTime after;
- private Integer minSize;
- private Integer maxSize;
+ private Number minSize;
+ private Number maxSize;
private Boolean isFlagged;
private Boolean isUnread;
private Boolean isAnswered;
@@ -118,12 +118,12 @@ public class FilterCondition implements Filter {
}
public Builder minSize(int minSize) {
- this.minSize = minSize;
+ this.minSize = Number.fromInt(minSize);
return this;
}
public Builder maxSize(int maxSize) {
- this.maxSize = maxSize;
+ this.maxSize = Number.fromInt(maxSize);
return this;
}
@@ -217,8 +217,8 @@ public class FilterCondition implements Filter {
private final Optional<List<String>> notInMailboxes;
private final Optional<ZonedDateTime> before;
private final Optional<ZonedDateTime> after;
- private final Optional<Integer> minSize;
- private final Optional<Integer> maxSize;
+ private final Optional<Number> minSize;
+ private final Optional<Number> maxSize;
private final Optional<Boolean> isFlagged;
private final Optional<Boolean> isUnread;
private final Optional<Boolean> isAnswered;
@@ -237,7 +237,7 @@ public class FilterCondition implements Filter {
private final Optional<String> hasKeyword;
private final Optional<String> notKeyword;
- @VisibleForTesting FilterCondition(Optional<List<String>> inMailboxes, Optional<List<String>> notInMailboxes, Optional<ZonedDateTime> before, Optional<ZonedDateTime> after, Optional<Integer> minSize, Optional<Integer> maxSize,
+ @VisibleForTesting FilterCondition(Optional<List<String>> inMailboxes, Optional<List<String>> notInMailboxes, Optional<ZonedDateTime> before, Optional<ZonedDateTime> after, Optional<Number> minSize, Optional<Number> maxSize,
Optional<Boolean> isFlagged, Optional<Boolean> isUnread, Optional<Boolean> isAnswered, Optional<Boolean> isDraft, Optional<Boolean> isForwarded,
Optional<Boolean> hasAttachment,
Optional<String> text, Optional<String> from, Optional<String> to, Optional<String> cc, Optional<String> bcc, Optional<String> subject,
@@ -284,11 +284,11 @@ public class FilterCondition implements Filter {
return after;
}
- public Optional<Integer> getMinSize() {
+ public Optional<Number> getMinSize() {
return minSize;
}
- public Optional<Integer> getMaxSize() {
+ public Optional<Number> getMaxSize() {
return maxSize;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Number.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Number.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Number.java
index 378eee7..d4fc286 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Number.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Number.java
@@ -37,13 +37,13 @@ public class Number {
public static Number fromInt(int value) {
Preconditions.checkState(value >= ZERO_VALUE,
- "value should be positive and less than 2^31 or empty");
+ "value should be positive and less than 2^31");
return new Number(value);
}
public static Number fromLong(long value) {
Preconditions.checkState(value >= ZERO_VALUE && value <= MAX_VALUE,
- "value should be positive and less than 2^53 or empty");
+ "value should be positive and less than 2^53");
return new Number(value);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UploadResponse.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UploadResponse.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UploadResponse.java
index 1868122..269cb15 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UploadResponse.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UploadResponse.java
@@ -42,7 +42,7 @@ public class UploadResponse {
private String accountId;
private String blobId;
private String type;
- private Long size;
+ private Number size;
private ZonedDateTime expires;
public Builder accountId(String accountId) {
@@ -61,7 +61,7 @@ public class UploadResponse {
}
public Builder size(long size) {
- this.size = size;
+ this.size = Number.fromOutboundLong(size);
return this;
}
@@ -81,10 +81,10 @@ public class UploadResponse {
private final Optional<String> accountId;
private final String blobId;
private final String type;
- private final Long size;
+ private final Number size;
private final Optional<ZonedDateTime> expires;
- @VisibleForTesting UploadResponse(Optional<String> accountId, String blobId, String type, long size, Optional<ZonedDateTime> expires) {
+ @VisibleForTesting UploadResponse(Optional<String> accountId, String blobId, String type, Number size, Optional<ZonedDateTime> expires) {
this.accountId = accountId;
this.blobId = blobId;
this.type = type;
@@ -104,7 +104,7 @@ public class UploadResponse {
return type;
}
- public long getSize() {
+ public Number getSize() {
return size;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/FilterToSearchQuery.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/FilterToSearchQuery.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/FilterToSearchQuery.java
index da6fca8..af1abf0 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/FilterToSearchQuery.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/FilterToSearchQuery.java
@@ -77,8 +77,8 @@ public class FilterToSearchQuery {
filter.getIsFlagged().ifPresent(isFlagged -> searchQuery.andCriteria(SearchQuery.flag(Flag.FLAGGED, isFlagged)));
filter.getIsUnread().ifPresent(isUnread -> searchQuery.andCriteria(SearchQuery.flag(Flag.SEEN, !isUnread)));
filter.getIsForwarded().ifPresent(isForwarded -> searchQuery.andCriteria(SearchQuery.flagSet(Keyword.FORWARDED.getFlagName(), isForwarded)));
- filter.getMaxSize().ifPresent(maxSize -> searchQuery.andCriteria(SearchQuery.sizeLessThan(maxSize)));
- filter.getMinSize().ifPresent(minSize -> searchQuery.andCriteria(SearchQuery.sizeGreaterThan(minSize)));
+ filter.getMaxSize().ifPresent(maxSize -> searchQuery.andCriteria(SearchQuery.sizeLessThan(maxSize.asLong())));
+ filter.getMinSize().ifPresent(minSize -> searchQuery.andCriteria(SearchQuery.sizeGreaterThan(minSize.asLong())));
filter.getHasAttachment().ifPresent(hasAttachment -> searchQuery.andCriteria(SearchQuery.hasAttachment(hasAttachment)));
filter.getHasKeyword().ifPresent(hasKeyword -> {
keywordQuery(hasKeyword, true).ifPresent(hasKeywordCriterion
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/AttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/AttachmentTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/AttachmentTest.java
index 0632dda..b2e9d81 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/AttachmentTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/AttachmentTest.java
@@ -53,7 +53,8 @@ public class AttachmentTest {
@Test
public void buildShouldWorkWhenMandatoryFieldsArePresent() {
- Attachment expected = new Attachment(BlobId.of("blobId"), "type", Optional.empty(), 123, Optional.empty(), false, Optional.empty(), Optional.empty());
+ Number attachmentSize = Number.fromLong(123);
+ Attachment expected = new Attachment(BlobId.of("blobId"), "type", Optional.empty(), attachmentSize, Optional.empty(), false, Optional.empty(), Optional.empty());
Attachment tested = Attachment.builder()
.blobId(BlobId.of("blobId"))
.type("type")
@@ -64,7 +65,11 @@ public class AttachmentTest {
@Test
public void buildShouldWorkWithAllFieldsSet() {
- Attachment expected = new Attachment(BlobId.of("blobId"), "type", Optional.of("name"), 123, Optional.of("cid"), true, Optional.of(456L), Optional.of(789L));
+ Number attachmentSize = Number.fromLong(123);
+ Optional<Number> attachmentWidth = Optional.of(Number.fromLong(456L));
+ Optional<Number> attachmentHeight = Optional.of(Number.fromLong(789L));
+ Attachment expected = new Attachment(BlobId.of("blobId"), "type", Optional.of("name"), attachmentSize, Optional.of("cid"), true,
+ attachmentWidth, attachmentHeight);
Attachment tested = Attachment.builder()
.blobId(BlobId.of("blobId"))
.type("type")
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
index 8cac964..d482a42 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
@@ -99,7 +99,8 @@ public class FilterConditionTest {
Optional<String> hasKeyword = Optional.of("$Draft");
Optional<String> notKeyword = Optional.of("$Flagged");
- FilterCondition expectedFilterCondition = new FilterCondition(Optional.of(ImmutableList.of("1")), Optional.of(ImmutableList.of("2")), Optional.of(before), Optional.of(after), Optional.of(minSize), Optional.of(maxSize),
+ FilterCondition expectedFilterCondition = new FilterCondition(Optional.of(ImmutableList.of("1")), Optional.of(ImmutableList.of("2")), Optional.of(before), Optional.of(after),
+ Optional.of(Number.fromInt(minSize)), Optional.of(Number.fromInt(maxSize)),
Optional.of(isFlagged), Optional.of(isUnread), Optional.of(isAnswered), Optional.of(isDraft), Optional.of(isForwarded), Optional.of(hasAttachment), Optional.of(text), Optional.of(from),
Optional.of(to), Optional.of(cc), Optional.of(bcc), Optional.of(subject), Optional.of(body), Optional.of(attachments), Optional.of(header),
hasKeyword, notKeyword);
http://git-wip-us.apache.org/repos/asf/james-project/blob/57082375/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/NumberTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/NumberTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/NumberTest.java
index c76b993..06119ff 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/NumberTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/NumberTest.java
@@ -90,4 +90,11 @@ public class NumberTest {
assertThat(number.ensureLessThan(11))
.isEqualTo(number);
}
+
+ @Test
+ public void fromIntShouldThrowWhenOver2Pow31Value() throws Exception {
+ assertThatThrownBy(() ->
+ Number.fromInt(Integer.MAX_VALUE + 1))
+ .isInstanceOf(IllegalStateException.class);
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org