Upgraded servlet-api version to 3.0.1
[sdc.git] / openecomp-be / lib / openecomp-core-lib / openecomp-zusammen-lib / openecomp-zusammen-core / src / main / java / org / openecomp / core / zusammen / impl / CassandraConnectionInitializer.java
1 /*
2  * Copyright © 2016-2017 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.openecomp.core.zusammen.impl;
18
19 import java.util.function.Supplier;
20 import org.apache.commons.lang3.StringUtils;
21 import org.openecomp.core.nosqldb.util.CassandraUtils;
22
23 public class CassandraConnectionInitializer {
24
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";
39
40     private CassandraConnectionInitializer() {
41         // static utility class, prevent instantiation
42     }
43
44     public static void setCassandraConnectionPropertiesToSystem() {
45         DeferredInitializer.init();
46     }
47
48     private static class DeferredInitializer {
49
50         static {
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);
63         }
64
65         private DeferredInitializer() { }
66
67         @SuppressWarnings("EmptyMethod")
68         static void init() {
69             // no-op, just to ensure static initialization
70         }
71
72         private static void setSystemProperty(String name, Supplier<String> valueSupplier) {
73
74             if (System.getProperty(name) == null) {
75                 System.setProperty(name, valueSupplier.get());
76             }
77         }
78
79         private static void setBooleanSystemProperty(String name, Supplier<Boolean> valueSupplier) {
80             setSystemProperty(name, () -> Boolean.toString(valueSupplier.get()));
81         }
82
83         private static void setNullableSystemProperty(String name, Supplier<String> valueSupplier) {
84
85             if ((System.getProperty(name) == null) && (valueSupplier.get() != null)) {
86                 System.setProperty(name, valueSupplier.get());
87             }
88         }
89     }
90 }