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 ma...@apache.org on 2015/10/29 15:15:52 UTC
svn commit: r1711271 - in /james/project/trunk/backends-common/cassandra/src:
main/java/org/apache/james/backends/cassandra/init/
main/java/org/apache/james/backends/cassandra/utils/
main/resources/META-INF/ test/java/org/apache/james/backends/cassandr...
Author: matthieu
Date: Thu Oct 29 14:15:52 2015
New Revision: 1711271
URL: http://svn.apache.org/viewvc?rev=1711271&view=rev
Log:
JAMES-1588 Introduce a Cassandra module aggregator
Added:
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java
- copied, changed from r1711269, james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/Collectors.java
- copied, changed from r1711269, james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/CollectorsTest.java
Modified:
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesProvider.java
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java
james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterSingleton.java
james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
Copied: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java (from r1711269, james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java)
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java?p2=james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java&p1=james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java&r1=1711269&r2=1711271&rev=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraModuleComposite.java Thu Oct 29 14:15:52 2015
@@ -19,30 +19,46 @@
package org.apache.james.backends.cassandra.init;
+import java.util.Arrays;
import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.UserType;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
+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.backends.cassandra.utils.Collectors;
-public class CassandraTypesCreator {
+public class CassandraModuleComposite implements CassandraModule {
+
+ private final ImmutableList<CassandraTable> tables;
+ private final ImmutableList<CassandraIndex> index;
private final ImmutableList<CassandraType> types;
- private final Session session;
- public CassandraTypesCreator(List<CassandraModule> modules, Session session) {
- this.types = ImmutableList.copyOf(modules.stream()
+ public CassandraModuleComposite(CassandraModule... modules) {
+ tables = Arrays.stream(modules)
+ .flatMap(module -> module.moduleTables().stream())
+ .collect(Collectors.toImmutableList());
+ index = Arrays.stream(modules)
+ .flatMap(module -> module.moduleIndex().stream())
+ .collect(Collectors.toImmutableList());
+ types = Arrays.stream(modules)
.flatMap(module -> module.moduleTypes().stream())
- .collect(Collectors.toList()));
- this.session = session;
+ .collect(Collectors.toImmutableList());
+ }
+
+ @Override
+ public List<CassandraTable> moduleTables() {
+ return tables;
}
- public void initializeTypes() {
- types.forEach((type) -> session.execute(type.getCreateStatement()));
+ @Override
+ public List<CassandraIndex> moduleIndex() {
+ return index;
}
+ @Override
+ public List<CassandraType> moduleTypes() {
+ return types;
+ }
}
Modified: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java Thu Oct 29 14:15:52 2015
@@ -19,35 +19,30 @@
package org.apache.james.backends.cassandra.init;
-import java.util.List;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.querybuilder.QueryBuilder;
-import com.google.common.collect.ImmutableList;
import org.apache.james.backends.cassandra.components.CassandraModule;
public class CassandraTableManager {
private final Session session;
- private final ImmutableList<CassandraModule> modules;
+ private final CassandraModule module;
- public CassandraTableManager(List<CassandraModule> modules, Session session) {
+ public CassandraTableManager(CassandraModule module, Session session) {
this.session = session;
- this.modules = ImmutableList.copyOf(modules);
+ this.module = module;
}
public CassandraTableManager ensureAllTables() {
- modules.stream()
- .flatMap(module -> module.moduleTables().stream())
+ module.moduleTables().stream()
.forEach(table -> session.execute(table.getCreateStatement()));
- modules.stream()
- .flatMap(module -> module.moduleIndex().stream())
+ module.moduleIndex().stream()
.forEach(index -> session.execute(index.getCreateIndexStatement()));
return this;
}
public void clearAllTables() {
- modules.stream()
- .flatMap(module -> module.moduleTables().stream())
+ module.moduleTables().stream()
.forEach(table -> clearTable(table.getName()));
}
Modified: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java Thu Oct 29 14:15:52 2015
@@ -19,14 +19,8 @@
package org.apache.james.backends.cassandra.init;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
import com.datastax.driver.core.Session;
-import com.datastax.driver.core.UserType;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.components.CassandraType;
@@ -34,10 +28,8 @@ public class CassandraTypesCreator {
private final ImmutableList<CassandraType> types;
private final Session session;
- public CassandraTypesCreator(List<CassandraModule> modules, Session session) {
- this.types = ImmutableList.copyOf(modules.stream()
- .flatMap(module -> module.moduleTypes().stream())
- .collect(Collectors.toList()));
+ public CassandraTypesCreator(CassandraModule module, Session session) {
+ this.types = ImmutableList.copyOf(module.moduleTypes());
this.session = session;
}
Modified: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesProvider.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesProvider.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesProvider.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesProvider.java Thu Oct 29 14:15:52 2015
@@ -19,30 +19,31 @@
package org.apache.james.backends.cassandra.init;
-import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.UserType;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.components.CassandraType;
+import org.apache.james.backends.cassandra.utils.Collectors;
public class CassandraTypesProvider {
private final ImmutableMap<String, UserType> userTypes;
- public CassandraTypesProvider(List<CassandraModule> modules, Session session) {
- userTypes = ImmutableMap.copyOf(modules.stream()
- .flatMap(module -> module.moduleTypes().stream())
- .collect(
- Collectors.toMap(
+ public CassandraTypesProvider(CassandraModule module, Session session) {
+ userTypes = module.moduleTypes()
+ .stream()
+ .collect(Collectors.toImmutableMap(
CassandraType::getName,
- type -> session.getCluster()
- .getMetadata()
- .getKeyspace(session.getLoggedKeyspace())
- .getUserType(type.getName()))));
+ type -> getSessionType(session, type)));
+ }
+
+ private UserType getSessionType(Session session, CassandraType type) {
+ return session.getCluster()
+ .getMetadata()
+ .getKeyspace(session.getLoggedKeyspace())
+ .getUserType(type.getName());
}
public UserType getDefinedUserType(String typeName) {
Modified: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java Thu Oct 29 14:15:52 2015
@@ -19,8 +19,6 @@
package org.apache.james.backends.cassandra.init;
-import java.util.List;
-
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import org.apache.james.backends.cassandra.components.CassandraModule;
@@ -28,17 +26,17 @@ import org.apache.james.backends.cassand
public class SessionWithInitializedTablesFactory {
private final static String DEFAULT_KEYSPACE_NAME = "apache_james";
- private List<CassandraModule> modules;
+ private CassandraModule module;
- public SessionWithInitializedTablesFactory(List<CassandraModule> modules) {
- this.modules = modules;
+ public SessionWithInitializedTablesFactory(CassandraModule module) {
+ this.module = module;
}
public Session createSession(Cluster cluster, String keyspace) {
Session session = cluster.connect(keyspace);
- new CassandraTypesCreator(modules, session)
+ new CassandraTypesCreator(module, session)
.initializeTypes();
- new CassandraTableManager(modules, session)
+ new CassandraTableManager(module, session)
.ensureAllTables();
return session;
}
Modified: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SpringStaticSessionFactory.java Thu Oct 29 14:15:52 2015
@@ -19,20 +19,18 @@
package org.apache.james.backends.cassandra.init;
-import java.util.List;
-
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import org.apache.james.backends.cassandra.components.CassandraModule;
public class SpringStaticSessionFactory {
- public static Session createSession(Cluster cluster, String keyspace, List<CassandraModule> modules) {
- return new SessionWithInitializedTablesFactory(modules).createSession(cluster, keyspace);
+ public static Session createSession(Cluster cluster, String keyspace, CassandraModule module) {
+ return new SessionWithInitializedTablesFactory(module).createSession(cluster, keyspace);
}
- public static Session createSession(Cluster cluster, List<CassandraModule> modules) {
- return new SessionWithInitializedTablesFactory(modules).createSession(cluster);
+ public static Session createSession(Cluster cluster, CassandraModule module) {
+ return new SessionWithInitializedTablesFactory(module).createSession(cluster);
}
}
\ No newline at end of file
Copied: james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/Collectors.java (from r1711269, james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java)
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/Collectors.java?p2=james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/Collectors.java&p1=james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java&r1=1711269&r2=1711271&rev=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java (original)
+++ james/project/trunk/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/Collectors.java Thu Oct 29 14:15:52 2015
@@ -17,32 +17,31 @@
* under the License. *
****************************************************************/
-package org.apache.james.backends.cassandra.init;
+package org.apache.james.backends.cassandra.utils;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
+import java.util.function.Function;
+import java.util.stream.Collector;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.UserType;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.components.CassandraType;
-public class CassandraTypesCreator {
- private final ImmutableList<CassandraType> types;
- private final Session session;
+public class Collectors {
- public CassandraTypesCreator(List<CassandraModule> modules, Session session) {
- this.types = ImmutableList.copyOf(modules.stream()
- .flatMap(module -> module.moduleTypes().stream())
- .collect(Collectors.toList()));
- this.session = session;
+ public static <T> Collector<T, List<T>, ImmutableList<T>> toImmutableList() {
+ return Collector.of(ArrayList::new, List::add, (left, right) -> {
+ left.addAll(right);
+ return left;
+ }, ImmutableList::copyOf);
}
-
- public void initializeTypes() {
- types.forEach((type) -> session.execute(type.getCreateStatement()));
+
+ public static <T, K, V> Collector<T, ImmutableMap.Builder<K, V>, ImmutableMap<K, V>> toImmutableMap(
+ Function<? super T, ? extends K> keyMapper,
+ Function<? super T, ? extends V> valueMapper) {
+ return Collector.of(ImmutableMap::<K,V>builder,
+ (acc, v) -> acc.put(keyMapper.apply(v), valueMapper.apply(v)),
+ (map1, map2) -> map1.putAll(map2.build()),
+ ImmutableMap.Builder::build);
}
-
}
Modified: james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml (original)
+++ james/project/trunk/backends-common/cassandra/src/main/resources/META-INF/cassandra-session.xml Thu Oct 29 14:15:52 2015
@@ -43,6 +43,12 @@
class="org.apache.james.mailbox.cassandra.CassandraMailboxModule"
lazy-init="true"/>
+ <bean id="cassandra-module-composite"
+ class="org.apache.james.backends.cassandra.init.CassandraModuleComposite"
+ lazy-init="true">
+ <constructor-arg index="0" ref="cassandra-mailbox-module"/>
+ </bean>
+
<bean id="cassandra-cluster"
class="org.apache.james.backends.cassandra.init.ClusterFactory"
factory-method="createClusterForSingleServerWithoutPassWord"
@@ -66,21 +72,13 @@
lazy-init="true">
<constructor-arg index="0" ref="cassandra-cluster-initialized"/>
<constructor-arg index="1" value="${cassandra.keyspace}"/>
- <constructor-arg index="2">
- <list>
- <ref bean="cassandra-mailbox-module"/>
- </list>
- </constructor-arg>
+ <constructor-arg index="2" ref="cassandra-module-composite"/>
</bean>
<bean id="cassandra-type-provider"
class="org.apache.james.backends.cassandra.init.CassandraTypesProvider"
lazy-init="true">
- <constructor-arg index="0">
- <list>
- <ref bean="cassandra-mailbox-module"/>
- </list>
- </constructor-arg>
+ <constructor-arg index="0" ref="cassandra-module-composite"/>
<constructor-arg index="1" ref="cassandra-session"/>
</bean>
Modified: james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterSingleton.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterSingleton.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterSingleton.java (original)
+++ james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraClusterSingleton.java Thu Oct 29 14:15:52 2015
@@ -33,8 +33,6 @@ import org.cassandraunit.utils.EmbeddedC
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Arrays;
-import java.util.List;
import java.util.Optional;
public final class CassandraClusterSingleton {
@@ -48,25 +46,25 @@ public final class CassandraClusterSingl
private static final Logger LOG = LoggerFactory.getLogger(CassandraClusterSingleton.class);
private static CassandraClusterSingleton cluster = null;
- private final List<CassandraModule> modules;
+ private final CassandraModule module;
private Session session;
private CassandraTypesProvider typesProvider;
public static synchronized CassandraClusterSingleton create(CassandraModule module) throws RuntimeException {
LOG.info("Retrieving cluster instance.");
if (cluster == null) {
- cluster = new CassandraClusterSingleton(Arrays.asList(module));
+ cluster = new CassandraClusterSingleton(module);
}
return cluster;
}
- private CassandraClusterSingleton(List<CassandraModule> modules) throws RuntimeException {
- this.modules = modules;
+ private CassandraClusterSingleton(CassandraModule module) throws RuntimeException {
+ this.module = module;
try {
EmbeddedCassandraServerHelper.startEmbeddedCassandra();
session = new FunctionRunnerWithRetry(MAX_RETRY)
.executeAndRetrieveObject(CassandraClusterSingleton.this::tryInitializeSession);
- typesProvider = new CassandraTypesProvider(modules, session);
+ typesProvider = new CassandraTypesProvider(module, session);
} catch(Exception exception) {
Throwables.propagate(exception);
}
@@ -77,11 +75,11 @@ public final class CassandraClusterSingl
}
public void ensureAllTables() {
- new CassandraTableManager(modules, session).ensureAllTables();
+ new CassandraTableManager(module, session).ensureAllTables();
}
public void clearAllTables() {
- new CassandraTableManager(modules, session).clearAllTables();
+ new CassandraTableManager(module, session).clearAllTables();
}
private Optional<Session> tryInitializeSession() {
@@ -89,7 +87,7 @@ public final class CassandraClusterSingl
Cluster cluster = ClusterFactory.createClusterForSingleServerWithoutPassWord(CLUSTER_IP, CLUSTER_PORT_TEST);
Cluster clusterWithInitializedKeyspace = ClusterWithKeyspaceCreatedFactory
.clusterWithInitializedKeyspace(cluster, KEYSPACE_NAME, REPLICATION_FACTOR);
- return Optional.of(new SessionWithInitializedTablesFactory(modules).createSession(clusterWithInitializedKeyspace, KEYSPACE_NAME));
+ return Optional.of(new SessionWithInitializedTablesFactory(module).createSession(clusterWithInitializedKeyspace, KEYSPACE_NAME));
} catch (NoHostAvailableException exception) {
sleep(SLEEP_BEFORE_RETRY);
return Optional.empty();
Modified: james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java?rev=1711271&r1=1711270&r2=1711271&view=diff
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java (original)
+++ james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java Thu Oct 29 14:15:52 2015
@@ -33,7 +33,6 @@ import org.apache.james.backends.cassand
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.backends.cassandra.init.CassandraTypesProvider;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -82,15 +81,15 @@ public class CassandraTypeProviderTest {
@Test
public void initializeTypesShouldCreateTheTypes() {
deleteMailboxBaseType();
- new CassandraTypesCreator(Arrays.asList(module), cassandra.getConf()).initializeTypes();
- CassandraTypesProvider cassandraTypesProviderTest = new CassandraTypesProvider(Arrays.asList(module), cassandra.getConf());
+ new CassandraTypesCreator(module, cassandra.getConf()).initializeTypes();
+ CassandraTypesProvider cassandraTypesProviderTest = new CassandraTypesProvider(module, cassandra.getConf());
assertThat(cassandraTypesProviderTest.getDefinedUserType(TYPE_NAME))
.isNotNull();
}
@Test
public void initializeTypesShouldNotFailIfCalledTwice() {
- new CassandraTypesProvider(Arrays.asList(module), cassandra.getConf());
+ new CassandraTypesProvider(module, cassandra.getConf());
assertThat(cassandra.getTypesProvider().getDefinedUserType(TYPE_NAME))
.isNotNull();
}
Added: james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/CollectorsTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/CollectorsTest.java?rev=1711271&view=auto
==============================================================================
--- james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/CollectorsTest.java (added)
+++ james/project/trunk/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/CollectorsTest.java Thu Oct 29 14:15:52 2015
@@ -0,0 +1,89 @@
+/****************************************************************
+ * 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.backends.cassandra.utils;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.data.MapEntry.entry;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+public class CollectorsTest {
+ @Test
+ public void immutableListCollectorShouldReturnEmptyImmutableListWhenEmptyStream() {
+ String[] data = {};
+ List<String> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableList());
+ assertThat(actual).isInstanceOf(ImmutableList.class);
+ assertThat(actual).isEmpty();
+ }
+
+ @Test
+ public void immutableListCollectorShouldReturnImmutableListWhenOneElementStream() {
+ String[] data = {"a"};
+ List<String> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableList());
+ assertThat(actual).isInstanceOf(ImmutableList.class);
+ assertThat(actual).containsExactly("a");
+ }
+
+ @Test
+ public void immutableListCollectorShouldReturnImmutableListWhen3ElementsStream() {
+ String[] data = {"a", "b", "c"};
+ List<String> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableList());
+ assertThat(actual).isInstanceOf(ImmutableList.class);
+ assertThat(actual).containsExactly("a", "b", "c");
+ }
+
+ @Test
+ public void immutableMapCollectorShouldReturnEmptyImmutableMapWhenEmptyStream() {
+ String[] data = {};
+ Map<String, Integer> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableMap(x -> x.toUpperCase(), x -> x.length()));
+ assertThat(actual).isInstanceOf(ImmutableMap.class);
+ assertThat(actual).isEmpty();
+ }
+
+ @Test
+ public void immutableMapCollectorShouldReturnAppliedImmutableMapWhenOneElementStream() {
+ String[] data = {"a"};
+ Map<String, Integer> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableMap(x -> x.toUpperCase(), x -> x.length()));
+ assertThat(actual).isInstanceOf(ImmutableMap.class);
+ assertThat(actual).containsExactly(entry("A", 1));
+ }
+
+ @Test
+ public void immutableMapCollectorShouldReturnAppliedImmutableMapWhen3ElementsStream() {
+ String[] data = {"a", "bb", "ccc"};
+ Map<String, Integer> actual = Arrays.stream(data)
+ .collect(Collectors.toImmutableMap(x -> x.toUpperCase(), x -> x.length()));
+ assertThat(actual).isInstanceOf(ImmutableMap.class);
+ assertThat(actual).containsExactly(entry("A", 1), entry("BB", 2), entry("CCC", 3));;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org