2 * Copyright © 2016-2017 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.core.zusammen.impl;
19 import java.util.function.Supplier;
20 import org.apache.commons.lang3.StringUtils;
21 import org.openecomp.core.nosqldb.util.CassandraUtils;
23 public class CassandraConnectionInitializer {
25 private static final String CASSANDRA_PREFIX = "cassandra.";
26 private static final String DATA_CENTER_PROPERTY_NAME = CASSANDRA_PREFIX + "datacenter";
27 private static final String CONSISTENCY_LEVEL_PROPERTY_NAME =
28 CASSANDRA_PREFIX + "consistency.level";
29 private static final String NODES_PROPERTY_NAME = CASSANDRA_PREFIX + "nodes";
30 private static final String AUTHENTICATE_PROPERTY_NAME = CASSANDRA_PREFIX + "authenticate";
31 private static final String SSL_PROPERTY_NAME = CASSANDRA_PREFIX + "ssl";
32 private static final String TRUSTSTORE_PROPERTY_NAME = CASSANDRA_PREFIX + "truststore";
33 private static final String TRUSTSTORE_PASSWORD_PROPERTY_NAME =
34 CASSANDRA_PREFIX + "truststore.password";
35 private static final String USER_PROPERTY_NAME = CASSANDRA_PREFIX + "user";
36 private static final String PASSWORD_PROPERTY_NAME = CASSANDRA_PREFIX + "password";
37 private static final String KEYSPACE_PROPERTY_NAME = CASSANDRA_PREFIX + "keyspace";
38 private static final String ZUSAMMEN = "zusammen";
40 private CassandraConnectionInitializer() {
41 // static utility class, prevent instantiation
44 public static void setCassandraConnectionPropertiesToSystem() {
45 DeferredInitializer.init();
48 private static class DeferredInitializer {
51 setSystemProperty(NODES_PROPERTY_NAME, () ->
52 StringUtils.join(CassandraUtils.getAddresses(), ','));
53 setBooleanSystemProperty(AUTHENTICATE_PROPERTY_NAME, CassandraUtils::isAuthenticate);
54 setBooleanSystemProperty(SSL_PROPERTY_NAME, CassandraUtils::isSsl);
55 setSystemProperty(TRUSTSTORE_PROPERTY_NAME, CassandraUtils::getTruststore);
56 setSystemProperty(TRUSTSTORE_PASSWORD_PROPERTY_NAME, CassandraUtils::getTruststorePassword);
57 setSystemProperty(USER_PROPERTY_NAME, CassandraUtils::getUser);
58 setSystemProperty(PASSWORD_PROPERTY_NAME, CassandraUtils::getPassword);
59 setSystemProperty(KEYSPACE_PROPERTY_NAME, () -> ZUSAMMEN);
60 setNullableSystemProperty(DATA_CENTER_PROPERTY_NAME, CassandraUtils::getLocalDataCenter);
61 setNullableSystemProperty(CONSISTENCY_LEVEL_PROPERTY_NAME,
62 CassandraUtils::getConsistencyLevel);
65 private DeferredInitializer() { }
67 @SuppressWarnings("EmptyMethod")
69 // no-op, just to ensure static initialization
72 private static void setSystemProperty(String name, Supplier<String> valueSupplier) {
74 if (System.getProperty(name) == null) {
75 System.setProperty(name, valueSupplier.get());
79 private static void setBooleanSystemProperty(String name, Supplier<Boolean> valueSupplier) {
80 setSystemProperty(name, () -> Boolean.toString(valueSupplier.get()));
83 private static void setNullableSystemProperty(String name, Supplier<String> valueSupplier) {
85 if ((System.getProperty(name) == null) && (valueSupplier.get() != null)) {
86 System.setProperty(name, valueSupplier.get());