summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib')
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java240
1 files changed, 116 insertions, 124 deletions
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java
index 519d7b160b..c6b9160bad 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraSessionFactory.java
@@ -1,21 +1,17 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * Copyright © 2016-2017 European Support Limited
+ *
* Licensed 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.
- * ============LICENSE_END=========================================================
*/
package org.openecomp.core.nosqldb.impl.cassandra;
@@ -28,147 +24,143 @@ import com.datastax.driver.core.Session;
import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy;
import com.datastax.driver.core.policies.LoadBalancingPolicy;
import com.datastax.driver.core.policies.TokenAwarePolicy;
-import com.google.common.base.Optional;
import org.openecomp.core.nosqldb.util.CassandraUtils;
+import org.openecomp.sdc.common.errors.SdcConfigurationException;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.FileInputStream;
-import java.io.IOException;
-import java.security.KeyManagementException;
import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
import java.util.Objects;
+import java.util.Optional;
public class CassandraSessionFactory {
- private static final Logger log = (Logger) LoggerFactory.getLogger
- (CassandraSessionFactory.class.getName());
-
- public static Session getSession() {
- return ReferenceHolder.CASSANDRA;
- }
-
- /**
- * New cassandra session session.
- *
- * @return the session
- */
- public static Session newCassandraSession() {
- Cluster.Builder builder = Cluster.builder();
- String[] addresses = CassandraUtils.getAddresses();
- for (String address : addresses) {
- builder.addContactPoint(address);
- }
+ private static final Logger LOGGER = LoggerFactory.getLogger(CassandraSessionFactory.class);
- //Check if ssl
- Boolean isSsl = CassandraUtils.isSsl();
- if (isSsl) {
- builder.withSSL(getSslOptions().get());
+ private CassandraSessionFactory() {
+ // static methods, cannot be instantiated
}
- int port = CassandraUtils.getCassandraPort();
- if (port > 0) {
- builder.withPort(port);
+
+ public static Session getSession() {
+ return ReferenceHolder.CASSANDRA;
}
- //Check if user/pass
- Boolean isAuthenticate = CassandraUtils.isAuthenticate();
- if (isAuthenticate) {
- builder.withCredentials(CassandraUtils.getUser(), CassandraUtils.getPassword());
+
+ /**
+ * New cassandra session session.
+ *
+ * @return the session
+ */
+ public static Session newCassandraSession() {
+ Cluster.Builder builder = Cluster.builder();
+ String[] addresses = CassandraUtils.getAddresses();
+ for (String address : addresses) {
+ builder.addContactPoint(address);
+ }
+
+ //Check if ssl
+ Boolean isSsl = CassandraUtils.isSsl();
+ if (isSsl) {
+ builder.withSSL(getSslOptions());
+ }
+ int port = CassandraUtils.getCassandraPort();
+ if (port > 0) {
+ builder.withPort(port);
+ }
+ //Check if user/pass
+ Boolean isAuthenticate = CassandraUtils.isAuthenticate();
+ if (isAuthenticate) {
+ builder.withCredentials(CassandraUtils.getUser(), CassandraUtils.getPassword());
+ }
+
+ setConsistencyLevel(builder, addresses);
+
+ setLocalDataCenter(builder);
+
+
+ Cluster cluster = builder.build();
+ String keyStore = CassandraUtils.getKeySpace();
+ return cluster.connect(keyStore);
}
- setConsistencyLevel(builder, addresses);
+ private static void setLocalDataCenter(Cluster.Builder builder) {
+ String localDataCenter = CassandraUtils.getLocalDataCenter();
+ if (Objects.nonNull(localDataCenter)) {
+ LOGGER.info("localDatacenter was provided, setting Cassndra client to use datacenter: {} as " +
+ "local.", localDataCenter);
+
+ LoadBalancingPolicy tokenAwarePolicy = new TokenAwarePolicy(
+ DCAwareRoundRobinPolicy.builder().withLocalDc(localDataCenter).build());
+ builder.withLoadBalancingPolicy(tokenAwarePolicy);
+ } else {
+ LOGGER.info(
+ "localDatacenter was provided, the driver will use the datacenter of the first contact " +
+ "point that was reached at initialization");
+ }
+ }
- setLocalDataCenter(builder);
+ private static void setConsistencyLevel(Cluster.Builder builder, String[] addresses) {
+ if (addresses != null && addresses.length > 1) {
+ String consistencyLevel = CassandraUtils.getConsistencyLevel();
+ if (Objects.nonNull(consistencyLevel)) {
+ LOGGER.info(
+ "consistencyLevel was provided, setting Cassandra client to use consistencyLevel: {}" +
+ " as "
+ , consistencyLevel);
+ builder.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.valueOf
+ (consistencyLevel)));
+ }
+ }
+ }
+ private static SSLOptions getSslOptions() {
- Cluster cluster = builder.build();
- String keyStore = CassandraUtils.getKeySpace();
- return cluster.connect(keyStore);
- }
+ Optional<String> trustStorePath = Optional.ofNullable(CassandraUtils.getTruststore());
+ if (!trustStorePath.isPresent()) {
+ throw new SdcConfigurationException("Missing configuration for Cassandra trustStorePath");
+ }
- private static void setLocalDataCenter(Cluster.Builder builder) {
- String localDataCenter = CassandraUtils.getLocalDataCenter();
- if (Objects.nonNull(localDataCenter)) {
- log.info("localDatacenter was provided, setting Cassndra client to use datacenter: {} as " +
- "local.", localDataCenter);
+ Optional<String> trustStorePassword = Optional.ofNullable(CassandraUtils.getTruststorePassword());
+ if (!trustStorePassword.isPresent()) {
+ throw new SdcConfigurationException("Missing configuration for Cassandra trustStorePassword");
+ }
- LoadBalancingPolicy tokenAwarePolicy = new TokenAwarePolicy(
- DCAwareRoundRobinPolicy.builder().withLocalDc(localDataCenter).build());
- builder.withLoadBalancingPolicy(tokenAwarePolicy);
- } else {
- log.info(
- "localDatacenter was provided, the driver will use the datacenter of the first contact point that was reached at initialization");
- }
- }
-
- private static void setConsistencyLevel(Cluster.Builder builder, String[] addresses) {
- if (addresses != null && addresses.length > 1) {
- String consistencyLevel = CassandraUtils.getConsistencyLevel();
- if (Objects.nonNull(consistencyLevel)) {
- log.info(
- "consistencyLevel was provided, setting Cassandra client to use consistencyLevel: {}" +
- " as "
- , consistencyLevel);
- builder.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.valueOf
- (consistencyLevel)));
- }
+ SSLContext context = getSslContext(trustStorePath.get(), trustStorePassword.get());
+ String[] css = new String[]{"TLS_RSA_WITH_AES_128_CBC_SHA"};
+ return new SSLOptions(context, css);
}
- }
-
- private static Optional<SSLOptions> getSslOptions() {
- Optional<String> truststorePath = Optional.of(CassandraUtils.getTruststore());
- Optional<String> truststorePassword = Optional.of(CassandraUtils.getTruststorePassword());
-
- if (truststorePath.isPresent() && truststorePassword.isPresent()) {
- SSLContext context;
- try {
- context = getSslContext(truststorePath.get(), truststorePassword.get());
- } catch (UnrecoverableKeyException | KeyManagementException
- | NoSuchAlgorithmException | KeyStoreException | CertificateException
- | IOException exception) {
- throw new RuntimeException(exception);
- }
- String[] css = new String[]{"TLS_RSA_WITH_AES_128_CBC_SHA"};
- return Optional.of(new SSLOptions(context, css));
- }
- return Optional.absent();
- }
-
- private static SSLContext getSslContext(String truststorePath, String truststorePassword)
- throws NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException,
- UnrecoverableKeyException, KeyManagementException {
- FileInputStream tsf = null;
- SSLContext ctx = null;
- try {
- tsf = new FileInputStream(truststorePath);
- ctx = SSLContext.getInstance("SSL");
-
- KeyStore ts = KeyStore.getInstance("JKS");
- ts.load(tsf, truststorePassword.toCharArray());
- TrustManagerFactory tmf =
- TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
- tmf.init(ts);
-
- ctx.init(null, tmf.getTrustManagers(), new SecureRandom());
- } catch (Exception exception) {
- log.debug("", exception);
- } finally {
- if (tsf != null) {
- tsf.close();
- }
+
+ private static SSLContext getSslContext(String truststorePath, String trustStorePassword) {
+
+ try (FileInputStream tsf = new FileInputStream(truststorePath)) {
+
+ SSLContext ctx = SSLContext.getInstance("SSL");
+
+ KeyStore ts = KeyStore.getInstance("JKS");
+ ts.load(tsf, trustStorePassword.toCharArray());
+ TrustManagerFactory tmf =
+ TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmf.init(ts);
+
+ ctx.init(null, tmf.getTrustManagers(), new SecureRandom());
+ return ctx;
+
+ } catch (Exception exception) {
+ throw new SdcConfigurationException("Failed to get SSL Contexts for Cassandra connection", exception);
+ }
}
- return ctx;
- }
- private static class ReferenceHolder {
- private static final Session CASSANDRA = newCassandraSession();
- }
+ private static class ReferenceHolder {
+
+ private ReferenceHolder() {
+ // prevent instantiation
+ }
+
+ private static final Session CASSANDRA = newCassandraSession();
+ }
}