Author: btellier
Date: Fri Jul 3 14:33:40 2015
New Revision: 1689015
URL: http://svn.apache.org/r1689015
Log:
MAILBOX-208 Improve Cassandra Subscription Mapper
Modified:
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
Modified:
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java?rev=1689015&r1=1689014&r2=1689015&view=diff
==============================================================================
---
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java
(original)
+++
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraTableManager.java
Fri Jul 3 14:33:40 2015
@@ -131,6 +131,10 @@ public class CassandraTableManager {
.onTable(CassandraMailboxTable.TABLE_NAME)
.andColumn(CassandraMailboxTable.MAILBOX_BASE)
),
+ UserSubscription(SchemaBuilder.createIndex(INDEX_PREFIX +
CassandraSubscriptionTable.USER)
+ .ifNotExists()
+ .onTable(CassandraSubscriptionTable.TABLE_NAME)
+ .andColumn(CassandraSubscriptionTable.USER))
;
private SchemaStatement createIndexStatement;
Modified:
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java?rev=1689015&r1=1689014&r2=1689015&view=diff
==============================================================================
---
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
(original)
+++
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
Fri Jul 3 14:33:40 2015
@@ -28,6 +28,9 @@ import static org.apache.james.mailbox.c
import static
org.apache.james.mailbox.cassandra.table.CassandraSubscriptionTable.USER;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
@@ -52,44 +55,53 @@ public class CassandraSubscriptionMapper
@Override
public synchronized void delete(Subscription subscription) {
- session.execute(QueryBuilder.delete().from(TABLE_NAME).where(eq(USER,
subscription.getUser())).and(eq(MAILBOX, subscription.getMailbox())));
+ session.execute(QueryBuilder.delete()
+ .from(TABLE_NAME)
+ .where(eq(USER, subscription.getUser()))
+ .and(eq(MAILBOX, subscription.getMailbox())));
}
@Override
public Subscription findMailboxSubscriptionForUser(String user, String
mailbox) {
- ResultSet results =
session.execute(select(MAILBOX).from(TABLE_NAME).where(eq(USER,
user)).and(eq(MAILBOX, mailbox)));
+ ResultSet results = session.execute(select(MAILBOX)
+ .from(TABLE_NAME)
+ .where(eq(USER, user))
+ .and(eq(MAILBOX, mailbox)));
return !results.isExhausted() ? new SimpleSubscription(user, mailbox)
: null;
}
@Override
public List<Subscription> findSubscriptionsForUser(String user) {
- Builder<Subscription> result = ImmutableList.<Subscription> builder();
- Select query = select(MAILBOX).from(TABLE_NAME);
- query.where(eq(USER, user));
- query.allowFiltering();
- for (Row row : session.execute(query)) {
- result.add(new SimpleSubscription(user, row.getString(MAILBOX)));
- }
- return result.build();
+ return convertToStream(
+ session.execute(select(MAILBOX)
+ .from(TABLE_NAME)
+ .where(eq(USER, user))))
+ .map((row) -> new SimpleSubscription(user, row.getString(MAILBOX)))
+ .collect(Collectors.toList());
}
@Override
public synchronized void save(Subscription subscription) {
- Insert query = insertInto(TABLE_NAME).value(USER,
subscription.getUser()).value(MAILBOX, subscription.getMailbox());
- session.execute(query);
+ session.execute(insertInto(TABLE_NAME)
+ .value(USER, subscription.getUser())
+ .value(MAILBOX, subscription.getMailbox()));
}
public List<SimpleSubscription> list() {
- Builder<SimpleSubscription> result =
ImmutableList.<SimpleSubscription> builder();
- for (Row row : session.execute(select(FIELDS).from(TABLE_NAME))) {
- result.add(new SimpleSubscription(row.getString(USER),
row.getString(MAILBOX)));
- }
- return result.build();
+ return convertToStream(
+ session.execute(select(FIELDS)
+ .from(TABLE_NAME)))
+ .map((row) -> new SimpleSubscription(row.getString(USER),
row.getString(MAILBOX)))
+ .collect(Collectors.toList());
}
@Override
public void endRequest() {
- // nothing todo
+ // nothing to do
+ }
+
+ private Stream<Row> convertToStream(ResultSet resultSet) {
+ return StreamSupport.stream(resultSet.spliterator(), true);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]