Any pointers or working example would be appreciated.
@Configuration
public class CassandraManager {
private static final String KEYSPACE = "cassandra.keyspace";
private static final String CONTACTPOINTS = "cassandra.contactpoints";
private static final String PORT = "cassandra.port";
private static final String SSLENABLED = "cassandra.sslEnabled";
@Autowired
private Environment environment;
private String getKeyspaceName() {
return environment.getProperty(KEYSPACE);
}
private String getContactPoints() {
return environment
.getProperty(CONTACTPOINTS);
}
private int getPortNumber() {
return Integer.parseInt(environment
.getProperty(PORT));
}
private boolean getSSLEnabled() {
return Boolean.getBoolean(environment
.getProperty(SSLENABLED));
}
public Cluster cluster() {
System.setProperty("javax.net.ssl.trustStore", "XXX");
System.setProperty("javax.net.ssl.trustStorePassword", "XXX");
System.setProperty("javax.net.ssl.keyStore", "XXX");
System.setProperty("javax.net.ssl.keyStorePassword", "XXX");
Cluster cluster = Cluster
.builder()
.addContactPoints(getContactPoints())
.withSSL()
.build();
return cluster;
}
@Bean
public CassandraMappingContext mappingContext() {
return new BasicCassandraMappingContext();
}
@Bean
public CassandraConverter converter() {
return new MappingCassandraConverter(mappingContext());
}
@Bean
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean cassandraSessionFactoryBean = new CassandraSessionFactoryBean();
cassandraSessionFactoryBean.setCluster(cluster());
cassandraSessionFactoryBean.setKeyspaceName(getKeyspaceName());
cassandraSessionFactoryBean.setConverter(converter());
cassandraSessionFactoryBean.setSchemaAction(SchemaAction.NONE);
return cassandraSessionFactoryBean;
}
@Bean
public CassandraOperations cassandraTemplate() throws Exception {
return new CassandraTemplate(session().getObject());
}
}