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 2015/07/03 16:35:18 UTC

svn commit: r1689018 - /james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java

Author: btellier
Date: Fri Jul  3 14:35:18 2015
New Revision: 1689018

URL: http://svn.apache.org/r1689018
Log:
MAILBOX-208 Use java 8 in Cassandra Message Mapper

Modified:
    james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java

Modified: james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java?rev=1689018&r1=1689017&r2=1689018&view=diff
==============================================================================
--- james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java (original)
+++ james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java Fri Jul  3 14:35:18 2015
@@ -56,10 +56,13 @@ import static org.apache.james.mailbox.c
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
@@ -101,14 +104,9 @@ import com.datastax.driver.core.querybui
 import com.datastax.driver.core.querybuilder.Select.Where;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.ImmutableSortedSet.Builder;
 import com.google.common.io.ByteStreams;
 import com.google.common.primitives.Bytes;
 
-/**
- * Cassandra implementation of a {@link MessageMapper}.
- */
 public class CassandraMessageMapper implements MessageMapper<CassandraId> {
 
     private final Session session;
@@ -200,12 +198,9 @@ public class CassandraMessageMapper impl
 
     @Override
     public Iterator<Message<CassandraId>> findInMailbox(Mailbox<CassandraId> mailbox, MessageRange set, FetchType ftype, int max) throws MailboxException {
-        Builder<Message<CassandraId>> result = ImmutableSortedSet.<Message<CassandraId>> naturalOrder();
-        ResultSet rows = session.execute(buildQuery(mailbox, set));
-        for (Row row : rows) {
-            result.add(message(row));
-        }
-        return result.build().iterator();
+        return convertToStream(session.execute(buildQuery(mailbox, set)))
+            .map(this::message)
+            .iterator();
     }
 
     private byte[] getFullContent(Row row) {
@@ -217,13 +212,18 @@ public class CassandraMessageMapper impl
     }
 
     private Flags getFlags(Row row) {
-        Flags flags = new Flags();
-        for (String flag : CassandraMessageTable.Flag.ALL) {
-            if (row.getBool(flag)) {
-                flags.add(JAVAX_MAIL_FLAG.get(flag));
-            }
-        }
-        return flags;
+        return Arrays.stream(CassandraMessageTable.Flag.ALL)
+            .filter(row::getBool)
+            .map(JAVAX_MAIL_FLAG::get)
+            .reduce(
+                new Flags(),
+                (flags, flag) -> {
+                    flags.add(flag);
+                    return flags;
+                }, (flags1, flags2) -> {
+                    flags1.add(flags2);
+                    return flags1;
+                });
     }
 
     private PropertyBuilder getPropertyBuilder(Row row) {
@@ -515,4 +515,9 @@ public class CassandraMessageMapper impl
         return uidProvider.lastUid(mailboxSession, mailbox);
     }
 
+    private Stream<Row> convertToStream(ResultSet resultSet) {
+        return StreamSupport.stream(resultSet.spliterator(), true);
+    }
+
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org