summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl')
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbFactoryImpl.java27
-rw-r--r--openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbImpl.java42
-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.java77
3 files changed, 48 insertions, 98 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/CassandraNoSqlDbFactoryImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbFactoryImpl.java
index 134d341d05..b62689d955 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbFactoryImpl.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbFactoryImpl.java
@@ -7,9 +7,9 @@
* 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.
@@ -17,28 +17,25 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.core.nosqldb.impl.cassandra;
-
import com.datastax.driver.core.Session;
import org.openecomp.core.nosqldb.api.NoSqlDb;
import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
public class CassandraNoSqlDbFactoryImpl extends NoSqlDbFactory {
- @Override
- public NoSqlDb createInterface() {
-
+ @Override
+ public NoSqlDb createInterface() {
+ return new CassandraNoSqlDbImpl(ReferenceHolder.CASSANDRA);
+ }
- return new CassandraNoSqlDbImpl(ReferenceHolder.CASSANDRA);
- }
+ protected void stop() {
+ ReferenceHolder.CASSANDRA.close();
+ }
- protected void stop() {
- ReferenceHolder.CASSANDRA.close();
- }
+ private static class ReferenceHolder {
- private static class ReferenceHolder {
- private static final Session CASSANDRA = CassandraSessionFactory.getSession();
- }
+ private static final Session CASSANDRA = CassandraSessionFactory.getSession();
+ }
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbImpl.java
index 539fbcd92f..237c48d013 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbImpl.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-nosqldb-lib/openecomp-nosqldb-core/src/main/java/org/openecomp/core/nosqldb/impl/cassandra/CassandraNoSqlDbImpl.java
@@ -12,18 +12,17 @@
* 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.openecomp.core.nosqldb.impl.cassandra;
-import com.datastax.driver.mapping.MappingManager;
import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
-
-
+import com.datastax.driver.mapping.MappingManager;
+import java.util.Set;
+import java.util.stream.Collectors;
import org.openecomp.core.nosqldb.api.NoSqlDb;
import org.openecomp.core.nosqldb.util.CassandraUtils;
import org.openecomp.core.utilities.CommonMethods;
@@ -33,49 +32,34 @@ import org.openecomp.sdc.common.errors.ErrorCode;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
-import java.util.Set;
-import java.util.stream.Collectors;
-
class CassandraNoSqlDbImpl implements NoSqlDb {
private final Session session;
private final String keySpace;
private final MappingManager mappingManager;
-
private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
-
public CassandraNoSqlDbImpl(Session session) {
this.session = session;
this.keySpace = this.session.getLoggedKeyspace();
this.mappingManager = new MappingManager(this.session);
-
}
@Override
public void insert(String tableName, String[] colNames, Object[] values) {
if (colNames.length != values.length) {
- throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
- "number of colmuns[" + colNames.length + "] is not equal to the number of values["
- + values.length + "].").withId("E0005").withCategory(ErrorCategory.APPLICATION)
- .build());
+ throw new CoreException((new ErrorCode.ErrorCodeBuilder())
+ .withMessage("number of colmuns[" + colNames.length + "] is not equal to the number of values[" + values.length + "].")
+ .withId("E0005").withCategory(ErrorCategory.APPLICATION).build());
}
-
StringBuilder sb = new StringBuilder();
- sb.append("insert into ")
- .append(tableName)
- .append(" (")
- .append(CommonMethods.arrayToCommaSeparatedString(colNames))
- .append(") values (")
- .append(CommonMethods.duplicateStringWithDelimiter("?", ',', values.length))
- .append(")");
+ sb.append("insert into ").append(tableName).append(" (").append(CommonMethods.arrayToCommaSeparatedString(colNames)).append(") values (")
+ .append(CommonMethods.duplicateStringWithDelimiter("?", ',', values.length)).append(")");
log.info(sb.toString());
PreparedStatement prepared = session.prepare(sb.toString());
-
BoundStatement bound;
bound = prepared.bind(values);
session.execute(bound);
-
}
@Override
@@ -85,21 +69,18 @@ class CassandraNoSqlDbImpl implements NoSqlDb {
@Override
public ResultSet execute(String statementName, Object... values) {
-
String statement = CassandraUtils.getStatement(statementName);
if (statement == null) {
statement = statementName;
}
if (values != null) {
PreparedStatement prepared = session.prepare(statement);
-
BoundStatement bound;
bound = prepared.bind(values);
return session.execute(bound);
} else {
return session.execute(statement);
}
-
}
@Override
@@ -111,10 +92,9 @@ class CassandraNoSqlDbImpl implements NoSqlDb {
public String getVersion() {
try {
Set<Host> allHosts = this.session.getCluster().getMetadata().getAllHosts();
- Set<String> versions = allHosts.stream().map(host -> host.getCassandraVersion().toString())
- .collect(Collectors.toSet());
+ Set<String> versions = allHosts.stream().map(host -> host.getCassandraVersion().toString()).collect(Collectors.toSet());
return versions.stream().collect(Collectors.joining(","));
- } catch (Exception e){
+ } catch (Exception e) {
log.error("Failed to retrieve version", e);
return "Failed to retrieve version";
}
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 a507017888..8f3d51d618 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
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.openecomp.core.nosqldb.impl.cassandra;
import com.datastax.driver.core.Cluster;
@@ -22,22 +21,23 @@ import com.datastax.driver.core.QueryOptions;
import com.datastax.driver.core.RemoteEndpointAwareJdkSSLOptions;
import com.datastax.driver.core.SSLOptions;
import com.datastax.driver.core.Session;
-
-
-import com.datastax.driver.core.policies.*;
-import org.openecomp.core.nosqldb.util.CassandraUtils;
-import org.openecomp.sdc.common.errors.SdcConfigurationException;
-import org.openecomp.sdc.common.session.SessionContextProviderFactory;
-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 com.datastax.driver.core.policies.ConstantReconnectionPolicy;
+import com.datastax.driver.core.policies.DCAwareRoundRobinPolicy;
+import com.datastax.driver.core.policies.DefaultRetryPolicy;
+import com.datastax.driver.core.policies.LoadBalancingPolicy;
+import com.datastax.driver.core.policies.TokenAwarePolicy;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.util.Objects;
import java.util.Optional;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
+import org.openecomp.core.nosqldb.util.CassandraUtils;
+import org.openecomp.sdc.common.errors.SdcConfigurationException;
+import org.openecomp.sdc.common.session.SessionContextProviderFactory;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
public class CassandraSessionFactory {
@@ -60,57 +60,42 @@ public class CassandraSessionFactory {
String[] addresses = CassandraUtils.getAddresses();
int cassandraPort = CassandraUtils.getCassandraPort();
Long reconnectTimeout = CassandraUtils.getReconnectTimeout();
-
Cluster.Builder builder = Cluster.builder();
-
- if(null != reconnectTimeout) {
- builder.withReconnectionPolicy(new ConstantReconnectionPolicy(reconnectTimeout))
- .withRetryPolicy(DefaultRetryPolicy.INSTANCE);
+ if (null != reconnectTimeout) {
+ builder.withReconnectionPolicy(new ConstantReconnectionPolicy(reconnectTimeout)).withRetryPolicy(DefaultRetryPolicy.INSTANCE);
}
-
builder.withPort(cassandraPort);
-
for (String address : addresses) {
builder.addContactPoint(address);
}
-
//Check if ssl
Boolean isSsl = CassandraUtils.isSsl();
if (isSsl) {
builder.withSSL(getSslOptions());
}
-
//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 = SessionContextProviderFactory.getInstance().createInterface().get()
- .getTenant();
- LOGGER.info("Cassandra client created hosts: {} port: {} SSL enabled: {} reconnectTimeout",
- addresses, cassandraPort, isSsl, reconnectTimeout);
+ String keyStore = SessionContextProviderFactory.getInstance().createInterface().get().getTenant();
+ LOGGER
+ .info("Cassandra client created hosts: {} port: {} SSL enabled: {} reconnectTimeout", addresses, cassandraPort, isSsl, reconnectTimeout);
return cluster.connect(keyStore);
}
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());
+ 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");
+ LOGGER.info("localDatacenter was provided, the driver will use the datacenter of the first contact "
+ + "point that was reached at initialization");
}
}
@@ -118,54 +103,42 @@ public class CassandraSessionFactory {
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)));
+ 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() {
-
Optional<String> trustStorePath = Optional.ofNullable(CassandraUtils.getTruststore());
if (!trustStorePath.isPresent()) {
throw new SdcConfigurationException("Missing configuration for Cassandra trustStorePath");
}
-
Optional<String> trustStorePassword = Optional.ofNullable(CassandraUtils.getTruststorePassword());
if (!trustStorePassword.isPresent()) {
throw new SdcConfigurationException("Missing configuration for Cassandra trustStorePassword");
}
-
SSLContext context = getSslContext(trustStorePath.get(), trustStorePassword.get());
String[] css = new String[]{"TLS_RSA_WITH_AES_128_CBC_SHA"};
return RemoteEndpointAwareJdkSSLOptions.builder().withSSLContext(context).withCipherSuites(css).build();
}
private static SSLContext getSslContext(String truststorePath, String trustStorePassword) {
-
try (FileInputStream tsf = new FileInputStream(truststorePath)) {
-
SSLContext ctx = SSLContext.getInstance("TLS");
-
KeyStore ts = KeyStore.getInstance("JKS");
ts.load(tsf, trustStorePassword.toCharArray());
- TrustManagerFactory tmf =
- TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ 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);
}
}
private static class ReferenceHolder {
+
private static final Session CASSANDRA = newCassandraSession();
private ReferenceHolder() {