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 2017/02/15 13:36:13 UTC

[10/20] james-project git commit: JAMES-1925 Adding cassandra table for MailboxPath mailbox indexing

JAMES-1925 Adding cassandra table for MailboxPath mailbox indexing


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3c2dc467
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3c2dc467
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3c2dc467

Branch: refs/heads/master
Commit: 3c2dc467bde2c77cf28954b95f4f19cfd1ae4113
Parents: 7b85c97
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Feb 14 09:21:18 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Feb 15 13:12:38 2017 +0100

----------------------------------------------------------------------
 .../modules/CassandraMailboxModule.java         | 13 ++++++--
 .../table/CassandraMailboxPathTable.java        | 32 ++++++++++++++++++++
 2 files changed, 43 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2dc467/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
index b664098..8858504 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/modules/CassandraMailboxModule.java
@@ -20,10 +20,13 @@
 package org.apache.james.mailbox.cassandra.modules;
 
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.google.common.collect.ImmutableList;
+
 import org.apache.james.backends.cassandra.components.CassandraIndex;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathTable;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
 
 import java.util.Arrays;
@@ -41,7 +44,7 @@ public class CassandraMailboxModule implements CassandraModule {
     private final List<CassandraType> types;
 
     public CassandraMailboxModule() {
-        tables = Collections.singletonList(
+        tables = ImmutableList.of(
             new CassandraTable(CassandraMailboxTable.TABLE_NAME,
                 SchemaBuilder.createTable(CassandraMailboxTable.TABLE_NAME)
                     .ifNotExists()
@@ -49,7 +52,13 @@ public class CassandraMailboxModule implements CassandraModule {
                     .addUDTColumn(CassandraMailboxTable.MAILBOX_BASE, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
                     .addColumn(CassandraMailboxTable.NAME, text())
                     .addColumn(CassandraMailboxTable.PATH, text())
-                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())));
+                    .addColumn(CassandraMailboxTable.UIDVALIDITY, bigint())),
+            new CassandraTable(CassandraMailboxPathTable.TABLE_NAME,
+                SchemaBuilder.createTable(CassandraMailboxPathTable.TABLE_NAME)
+                    .ifNotExists()
+                    .addUDTPartitionKey(CassandraMailboxPathTable.NAMESPACE_AND_USER, SchemaBuilder.frozen(CassandraMailboxTable.MAILBOX_BASE))
+                    .addClusteringColumn(CassandraMailboxPathTable.MAILBOX_NAME, text())
+                    .addColumn(CassandraMailboxPathTable.MAILBOX_ID, timeuuid())));
         index = Arrays.asList(
             new CassandraIndex(
                 SchemaBuilder.createIndex(CassandraIndex.INDEX_PREFIX + CassandraMailboxTable.TABLE_NAME)

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c2dc467/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java
new file mode 100644
index 0000000..be9eb54
--- /dev/null
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/table/CassandraMailboxPathTable.java
@@ -0,0 +1,32 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailbox.cassandra.table;
+
+public interface CassandraMailboxPathTable {
+
+    String TABLE_NAME = "mailboxPath";
+
+    String NAMESPACE_AND_USER = "namespaceAndUser";
+
+    String MAILBOX_NAME = "mailboxName";
+
+    String MAILBOX_ID = "mailboxId";
+
+}


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