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 2017/08/23 02:33:51 UTC
[3/3] james-project git commit: JAMES-2126 Migrate MessageParser to
Java-8
JAMES-2126 Migrate MessageParser to Java-8
Optionals and functions
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4be31c32
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4be31c32
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4be31c32
Branch: refs/heads/master
Commit: 4be31c3264b589dea57de2c4bf395c31d6d7f167
Parents: 656de84
Author: benwa <bt...@linagora.com>
Authored: Tue Aug 22 09:48:01 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Aug 23 09:32:45 2017 +0700
----------------------------------------------------------------------
mailbox/store/pom.xml | 4 ++
.../store/mail/model/impl/MessageParser.java | 47 ++++++++++----------
2 files changed, 27 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/4be31c32/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index a12e0ff..196285e 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -42,6 +42,10 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-util-java8</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-mime4j-core</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/4be31c32/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
index 63f80af..378da5a 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
@@ -24,6 +24,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Locale;
+import java.util.Optional;
+import java.util.function.Function;
import org.apache.james.mailbox.model.Attachment;
import org.apache.james.mailbox.model.Cid;
@@ -44,11 +46,10 @@ import org.apache.james.mime4j.message.DefaultMessageBuilder;
import org.apache.james.mime4j.message.DefaultMessageWriter;
import org.apache.james.mime4j.stream.Field;
import org.apache.james.mime4j.stream.MimeConfig;
+import org.apache.james.util.OptionalConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
public class MessageParser {
@@ -136,10 +137,10 @@ public class MessageParser {
return MessageAttachment.builder()
.attachment(Attachment.builder()
.bytes(getBytes(messageWriter, entity.getBody()))
- .type(contentType.or(DEFAULT_CONTENT_TYPE))
+ .type(contentType.orElse(DEFAULT_CONTENT_TYPE))
.build())
- .name(name.orNull())
- .cid(cid.orNull())
+ .name(name.orElse(null))
+ .cid(cid.orElse(null))
.isInline(isInline)
.build();
}
@@ -155,37 +156,35 @@ public class MessageParser {
@SuppressWarnings("unchecked")
private <U extends ParsedField> Optional<U> castField(Field field, Class<U> clazz) {
if (field == null || !clazz.isInstance(field)) {
- return Optional.absent();
+ return Optional.empty();
}
return Optional.of((U) field);
}
private Optional<String> contentType(Optional<ContentTypeField> contentTypeField) {
- return contentTypeField.transform(field -> Optional.fromNullable(field.getMimeType()))
- .or(Optional.<String> absent());
+ return contentTypeField.map(ContentTypeField::getMimeType);
}
private Optional<String> name(Optional<ContentTypeField> contentTypeField) {
return contentTypeField
- .transform(field -> Optional.fromNullable(field.getParameter("name"))
- .transform(
- fieldValue -> {
- DecodeMonitor monitor = null;
- return DecoderUtil.decodeEncodedWords(fieldValue, monitor);
- }))
- .or(Optional.<String> absent());
+ .flatMap(field -> Optional.ofNullable(field.getParameter("name"))
+ .map(
+ fieldValue -> {
+ DecodeMonitor monitor = null;
+ return DecoderUtil.decodeEncodedWords(fieldValue, monitor);
+ }));
}
private Optional<Cid> cid(Optional<ContentIdField> contentIdField) {
if (!contentIdField.isPresent()) {
- return Optional.absent();
+ return Optional.empty();
}
- return contentIdField.transform(toCid())
+ return contentIdField.map(toCid())
.get();
}
private Function<ContentIdField, Optional<Cid>> toCid() {
- return contentIdField -> cidParser.parse(contentIdField.getId());
+ return contentIdField -> OptionalConverter.fromGuava(cidParser.parse(contentIdField.getId()));
}
private boolean isMultipart(Entity entity) {
@@ -193,18 +192,18 @@ public class MessageParser {
}
private boolean isInline(Optional<ContentDispositionField> contentDispositionField) {
- return contentDispositionField.transform(ContentDispositionField::isInline)
- .or(false);
+ return contentDispositionField.map(ContentDispositionField::isInline)
+ .orElse(false);
}
private boolean isAttachment(Entity part, Context context) {
if (context == Context.BODY && isTextPart(part)) {
return false;
}
- return Optional.fromNullable(part.getDispositionType())
- .transform(dispositionType -> ATTACHMENT_CONTENT_DISPOSITIONS.contains(
+ return Optional.ofNullable(part.getDispositionType())
+ .map(dispositionType -> ATTACHMENT_CONTENT_DISPOSITIONS.contains(
dispositionType.toLowerCase(Locale.US)))
- .or(false);
+ .orElse(false);
}
private boolean isTextPart(Entity part) {
@@ -224,7 +223,7 @@ public class MessageParser {
return out.toByteArray();
}
- private static enum Context {
+ private enum Context {
BODY,
OTHER;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org