aboutsummaryrefslogtreecommitdiffstats
path: root/trustStoreMerger/src/main
diff options
context:
space:
mode:
authorkjaniak <kornel.janiak@nokia.com>2020-09-07 14:13:33 +0200
committerkjaniak <kornel.janiak@nokia.com>2020-09-08 15:04:04 +0200
commit0d7863b1fdbdb7d25610ec33460c2442a60fef45 (patch)
tree4913205aed685bf25f98de7528c9ae0919a23918 /trustStoreMerger/src/main
parent9518352d2bdc2db7b33c5ad305faeca77eba9656 (diff)
Add of config for copier
Add Source and Destination paths to merger. Issue-ID: DCAEGEN2-2253 Signed-off-by: kjaniak <kornel.janiak@nokia.com> Change-Id: Id0ec28d8d7f90c5ce61d5393b6e1d8363dbfd24d
Diffstat (limited to 'trustStoreMerger/src/main')
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java32
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitStatus.java3
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/certification/file/provider/JavaCertificateStoreController.java12
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/ConfigurationEnvs.java (renamed from trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ConfigurationEnvs.java)11
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/MergerConfigurationProvider.java45
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/model/MergerConfiguration.java16
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReader.java (renamed from trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProvider.java)40
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReaderFactory.java46
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/PathValidator.java38
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProviderFactory.java30
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/env/EnvProvider.java (renamed from trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/EnvProvider.java)6
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/validation/ValidationFunctions.java57
12 files changed, 201 insertions, 135 deletions
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java
index e2e0c62a..babd32e2 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java
@@ -19,20 +19,20 @@
package org.onap.oom.truststoremerger;
+import java.util.List;
import org.onap.oom.truststoremerger.api.ExitStatus;
import org.onap.oom.truststoremerger.api.ExitableException;
-import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAlias;
+import org.onap.oom.truststoremerger.certification.file.TruststoreFileFactory;
+import org.onap.oom.truststoremerger.certification.file.TruststoreFilesListProvider;
import org.onap.oom.truststoremerger.certification.file.model.Truststore;
import org.onap.oom.truststoremerger.certification.file.provider.FileManager;
import org.onap.oom.truststoremerger.certification.file.provider.PasswordReader;
-import org.onap.oom.truststoremerger.certification.file.TruststoreFileFactory;
-import org.onap.oom.truststoremerger.certification.file.TruststoreFilesListProvider;
-import org.onap.oom.truststoremerger.configuration.path.TruststoresPathsProviderFactory;
-import org.onap.oom.truststoremerger.configuration.path.TruststoresPathsProvider;
-import org.onap.oom.truststoremerger.configuration.model.MergerConfiguration;
+import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAlias;
import org.onap.oom.truststoremerger.configuration.MergerConfigurationProvider;
-
-import java.util.List;
+import org.onap.oom.truststoremerger.configuration.model.MergerConfiguration;
+import org.onap.oom.truststoremerger.configuration.path.DelimitedPathsReader;
+import org.onap.oom.truststoremerger.configuration.path.DelimitedPathsReaderFactory;
+import org.onap.oom.truststoremerger.configuration.path.env.EnvProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,12 +55,15 @@ class TrustStoreMerger {
} catch (ExitableException e) {
LOGGER.error("Truststore Merger fails in execution: ", e);
appExitHandler.exit(e.applicationExitStatus());
+ } catch (Exception e) {
+ LOGGER.error("Truststore Merger fails in execution: ", e);
+ appExitHandler.exit(ExitStatus.UNEXPECTED_EXCEPTION);
}
}
private void mergeTruststores() throws ExitableException {
MergerConfiguration configuration = loadConfiguration();
- List<Truststore> truststoreFilesList = getTruststoreFilesList(configuration);
+ List<Truststore> truststoreFilesList = getTruststoreFiles(configuration);
Truststore baseFile = truststoreFilesList.get(FIRST_TRUSTSTORE_INDEX);
baseFile.createBackup();
@@ -74,12 +77,17 @@ class TrustStoreMerger {
}
private MergerConfiguration loadConfiguration() throws ExitableException {
- TruststoresPathsProvider truststoresPathsProvider = TruststoresPathsProviderFactory.create();
- MergerConfigurationProvider factory = new MergerConfigurationProvider(truststoresPathsProvider);
+ DelimitedPathsReaderFactory readerFactory = new DelimitedPathsReaderFactory(new EnvProvider());
+ DelimitedPathsReader certificatesPathsReader = readerFactory.createCertificatePathsReader();
+ DelimitedPathsReader passwordsPathsReader = readerFactory.createPasswordPathsReader();
+ DelimitedPathsReader copierPathsReader = readerFactory.createKeystoreCopierPathsReader();
+ MergerConfigurationProvider factory = new MergerConfigurationProvider(certificatesPathsReader,
+ passwordsPathsReader,
+ copierPathsReader);
return factory.createConfiguration();
}
- private List<Truststore> getTruststoreFilesList(MergerConfiguration configuration) throws ExitableException {
+ private List<Truststore> getTruststoreFiles(MergerConfiguration configuration) throws ExitableException {
TruststoreFileFactory truststoreFileFactory = new TruststoreFileFactory(new FileManager(),
new PasswordReader());
TruststoreFilesListProvider truststoreFilesListProvider = new TruststoreFilesListProvider(
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitStatus.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitStatus.java
index b9111bf9..d3e246ae 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitStatus.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitStatus.java
@@ -32,7 +32,8 @@ public enum ExitStatus {
TRUSTSTORE_DATA_OPERATION_EXCEPTION(8, "Cannot operate on truststore data"),
MISSING_TRUSTSTORE_EXCEPTION(9, "Missing truststore certificates in provided file"),
ALIAS_CONFLICT_EXCEPTION(10, "Alias conflict detected"),
- WRITE_TRUSTSTORE_FILE_EXCEPTION(11, "Cannot save truststore file");
+ WRITE_TRUSTSTORE_FILE_EXCEPTION(11, "Cannot save truststore file"),
+ UNEXPECTED_EXCEPTION(99, "Application exited abnormally");
private final int value;
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/certification/file/provider/JavaCertificateStoreController.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/certification/file/provider/JavaCertificateStoreController.java
index 1c20fd38..a4b129c9 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/certification/file/provider/JavaCertificateStoreController.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/certification/file/provider/JavaCertificateStoreController.java
@@ -28,13 +28,13 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.onap.oom.truststoremerger.api.ExitableException;
-import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAlias;
-import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAliasFactory;
import org.onap.oom.truststoremerger.certification.file.exception.AliasConflictException;
-import org.onap.oom.truststoremerger.certification.file.exception.TruststoreDataOperationException;
import org.onap.oom.truststoremerger.certification.file.exception.LoadTruststoreException;
import org.onap.oom.truststoremerger.certification.file.exception.MissingTruststoreException;
+import org.onap.oom.truststoremerger.certification.file.exception.TruststoreDataOperationException;
import org.onap.oom.truststoremerger.certification.file.exception.WriteTruststoreFileException;
+import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAlias;
+import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAliasFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +55,7 @@ public class JavaCertificateStoreController implements CertificateController {
}
public List<CertificateWithAlias> getNotEmptyCertificateList() throws ExitableException {
- List<String> aliases = getTruststoreAliasesList();
+ List<String> aliases = getTruststoreAliases();
if (aliases.isEmpty()) {
throw new MissingTruststoreException("Missing certificate aliases in file: " + storeFile.getPath());
}
@@ -64,7 +64,7 @@ public class JavaCertificateStoreController implements CertificateController {
public void addCertificates(List<CertificateWithAlias> certificatesWithAliases)
throws ExitableException {
- if (getTruststoreAliasesList().isEmpty()){
+ if (getTruststoreAliases().isEmpty()) {
throw new MissingTruststoreException("Missing certificate aliases in file: " + storeFile.getPath());
}
for (CertificateWithAlias certificate : certificatesWithAliases) {
@@ -133,7 +133,7 @@ public class JavaCertificateStoreController implements CertificateController {
}
}
- private List<String> getTruststoreAliasesList() throws TruststoreDataOperationException {
+ private List<String> getTruststoreAliases() throws TruststoreDataOperationException {
try {
List<String> aliases = Collections.list(keyStore.aliases());
return getFilteredAlias(aliases);
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ConfigurationEnvs.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/ConfigurationEnvs.java
index f6f8bbba..fa72e4b0 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ConfigurationEnvs.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/ConfigurationEnvs.java
@@ -17,10 +17,17 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.oom.truststoremerger.api;
+package org.onap.oom.truststoremerger.configuration;
-public class ConfigurationEnvs {
+public final class ConfigurationEnvs {
+
+ private ConfigurationEnvs() {
+
+ }
public static final String TRUSTSTORES_PATHS_ENV = "TRUSTSTORES_PATHS";
public static final String TRUSTSTORES_PASSWORDS_PATHS_ENV = "TRUSTSTORES_PASSWORDS_PATHS";
+ public static final String KEYSTORE_SOURCE_PATHS_ENV = "KEYSTORE_SOURCE_PATHS";
+ public static final String KEYSTORE_DESTINATION_PATHS_ENV = "KEYSTORE_DESTINATION_PATHS";
+
}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/MergerConfigurationProvider.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/MergerConfigurationProvider.java
index 5a40a64a..5cbf8b20 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/MergerConfigurationProvider.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/MergerConfigurationProvider.java
@@ -19,34 +19,53 @@
package org.onap.oom.truststoremerger.configuration;
-import static org.onap.oom.truststoremerger.api.ConfigurationEnvs.TRUSTSTORES_PATHS_ENV;
-import static org.onap.oom.truststoremerger.api.ConfigurationEnvs.TRUSTSTORES_PASSWORDS_PATHS_ENV;
+import static org.onap.oom.truststoremerger.configuration.ConfigurationEnvs.KEYSTORE_DESTINATION_PATHS_ENV;
+import static org.onap.oom.truststoremerger.configuration.ConfigurationEnvs.KEYSTORE_SOURCE_PATHS_ENV;
+import static org.onap.oom.truststoremerger.configuration.ConfigurationEnvs.TRUSTSTORES_PATHS_ENV;
+import static org.onap.oom.truststoremerger.configuration.ConfigurationEnvs.TRUSTSTORES_PASSWORDS_PATHS_ENV;
import java.util.List;
import org.onap.oom.truststoremerger.configuration.exception.MergerConfigurationException;
import org.onap.oom.truststoremerger.configuration.exception.TruststoresPathsProviderException;
import org.onap.oom.truststoremerger.configuration.model.MergerConfiguration;
-import org.onap.oom.truststoremerger.configuration.path.TruststoresPathsProvider;
+import org.onap.oom.truststoremerger.configuration.path.DelimitedPathsReader;
public class MergerConfigurationProvider {
- private final TruststoresPathsProvider pathsProvider;
+ private final DelimitedPathsReader truststoresPathsReader;
+ private final DelimitedPathsReader truststoresPasswordsPathsReader;
+ private final DelimitedPathsReader copierPathsReader;
- public MergerConfigurationProvider(TruststoresPathsProvider pathsProvider) {
- this.pathsProvider = pathsProvider;
+ public MergerConfigurationProvider(DelimitedPathsReader truststoresPathsReader,
+ DelimitedPathsReader truststoresPasswordsPathsReader, DelimitedPathsReader copierPathsReader) {
+ this.truststoresPathsReader = truststoresPathsReader;
+ this.truststoresPasswordsPathsReader = truststoresPasswordsPathsReader;
+ this.copierPathsReader = copierPathsReader;
}
public MergerConfiguration createConfiguration()
throws MergerConfigurationException, TruststoresPathsProviderException {
- List<String> truststores = pathsProvider.getTruststores();
- List<String> truststoresPasswords = pathsProvider.getTruststoresPasswords();
+ List<String> truststoresPaths = truststoresPathsReader.get(TRUSTSTORES_PATHS_ENV);
+ List<String> truststoresPasswordsPaths = truststoresPasswordsPathsReader.get(TRUSTSTORES_PASSWORDS_PATHS_ENV);
+ List<String> sourceKeystorePaths = copierPathsReader.get(KEYSTORE_SOURCE_PATHS_ENV);
+ List<String> destinationKeystorePaths = copierPathsReader.get(KEYSTORE_DESTINATION_PATHS_ENV);
- if (truststores.size() != truststoresPasswords.size()) {
+ ensureSameSize(truststoresPaths, truststoresPasswordsPaths, TRUSTSTORES_PATHS_ENV,
+ TRUSTSTORES_PASSWORDS_PATHS_ENV);
+ ensureSameSize(sourceKeystorePaths, destinationKeystorePaths, KEYSTORE_SOURCE_PATHS_ENV,
+ KEYSTORE_DESTINATION_PATHS_ENV);
+
+ return new MergerConfiguration(truststoresPaths, truststoresPasswordsPaths, sourceKeystorePaths,
+ destinationKeystorePaths);
+ }
+
+ private void ensureSameSize(List<String> firstList, List<String> secondList, String firstListEnvName,
+ String secondListEnvName)
+ throws MergerConfigurationException {
+ if (firstList.size() != secondList.size()) {
throw new MergerConfigurationException(
- "Size of " + TRUSTSTORES_PATHS_ENV
- + " does not match size of " + TRUSTSTORES_PASSWORDS_PATHS_ENV + " environment variables");
+ "Size of " + firstListEnvName
+ + " does not match size of " + secondListEnvName + " environment variables");
}
-
- return new MergerConfiguration(truststores, truststoresPasswords);
}
}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/model/MergerConfiguration.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/model/MergerConfiguration.java
index 3b807c39..0809ab5a 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/model/MergerConfiguration.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/model/MergerConfiguration.java
@@ -25,20 +25,32 @@ import java.util.List;
public final class MergerConfiguration {
private final List<String> truststoreFilePaths;
private final List<String> truststoreFilePasswordPaths;
+ private final List<String> sourceKeystorePaths;
+ private final List<String> destinationKeystorePaths;
public MergerConfiguration(List<String> truststoreFilePaths,
- List<String> truststoreFilePasswordPaths) {
+ List<String> truststoreFilePasswordPaths, List<String> sourceKeystorePaths,
+ List<String> destinationKeystorePaths) {
this.truststoreFilePaths = List.copyOf(truststoreFilePaths);
this.truststoreFilePasswordPaths = List.copyOf(truststoreFilePasswordPaths);
+ this.sourceKeystorePaths = List.copyOf(sourceKeystorePaths);
+ this.destinationKeystorePaths = List.copyOf(destinationKeystorePaths);
}
public List<String> getTruststoreFilePaths() {
return Collections.unmodifiableList(truststoreFilePaths);
}
-
public List<String> getTruststoreFilePasswordPaths() {
return Collections.unmodifiableList(truststoreFilePasswordPaths);
}
+
+ public List<String> getDestinationKeystorePaths() {
+ return Collections.unmodifiableList(destinationKeystorePaths);
+ }
+
+ public List<String> getSourceKeystorePaths() {
+ return Collections.unmodifiableList(sourceKeystorePaths);
+ }
}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProvider.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReader.java
index 9d7e30a4..e5de4d08 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProvider.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReader.java
@@ -19,52 +19,36 @@
package org.onap.oom.truststoremerger.configuration.path;
-import static org.onap.oom.truststoremerger.api.ConfigurationEnvs.TRUSTSTORES_PATHS_ENV;
-import static org.onap.oom.truststoremerger.api.ConfigurationEnvs.TRUSTSTORES_PASSWORDS_PATHS_ENV;
-
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import org.onap.oom.truststoremerger.configuration.exception.TruststoresPathsProviderException;
+import org.onap.oom.truststoremerger.configuration.path.env.EnvProvider;
-public class TruststoresPathsProvider {
+public class DelimitedPathsReader {
private static final String DELIMITER = ":";
private static final int NEGATIVE_SPLIT_LIMIT = -1;
private final EnvProvider envProvider;
- private final PathValidator pathValidator;
+ private final Predicate<List<String>> pathsValidator;
- TruststoresPathsProvider(EnvProvider envProvider, PathValidator pathValidator) {
+ DelimitedPathsReader(EnvProvider envProvider, Predicate<List<String>> pathsValidator) {
this.envProvider = envProvider;
- this.pathValidator = pathValidator;
+ this.pathsValidator = pathsValidator;
}
- public List<String> getTruststores() throws TruststoresPathsProviderException {
- return envProvider.getEnv(TRUSTSTORES_PATHS_ENV)
- .filter(Predicate.not(String::isEmpty))
+ public List<String> get(String envName) throws TruststoresPathsProviderException {
+ return envProvider.getEnv(envName)
+ .filter(this::hasValue)
.map(this::splitToList)
- .filter(this::validateTruststores)
+ .filter(pathsValidator)
.orElseThrow(() -> new TruststoresPathsProviderException(
- TRUSTSTORES_PATHS_ENV + " environment variable does not contain valid truststores paths"));
- }
-
- public List<String> getTruststoresPasswords() throws TruststoresPathsProviderException {
- return envProvider.getEnv(TRUSTSTORES_PASSWORDS_PATHS_ENV)
- .map(this::splitToList)
- .filter(this::validateTruststoresPasswords)
- .orElseThrow(() -> new TruststoresPathsProviderException(
- TRUSTSTORES_PASSWORDS_PATHS_ENV + " environment variable does not contain valid passwords paths"));
- }
-
- private boolean validateTruststores(List<String> truststores) {
- return truststores.stream()
- .allMatch(pathValidator::isTruststorePathValid);
+ envName + " environment variable does not contain valid paths"));
}
- private boolean validateTruststoresPasswords(List<String> truststoresPasswords) {
- return truststoresPasswords.stream()
- .allMatch(pathValidator::isTruststorePasswordPathValid);
+ private boolean hasValue(String envValue) {
+ return !envValue.isEmpty();
}
private List<String> splitToList(String stringToSplit) {
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReaderFactory.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReaderFactory.java
new file mode 100644
index 00000000..b2a64f97
--- /dev/null
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/DelimitedPathsReaderFactory.java
@@ -0,0 +1,46 @@
+/*============LICENSE_START=======================================================
+ * oom-truststore-merger
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.onap.oom.truststoremerger.configuration.path;
+
+import static org.onap.oom.truststoremerger.configuration.path.validation.ValidationFunctions.doesItContainValidCertificatesPaths;
+import static org.onap.oom.truststoremerger.configuration.path.validation.ValidationFunctions.doesItContainValidPasswordPaths;
+import static org.onap.oom.truststoremerger.configuration.path.validation.ValidationFunctions.doesItContainValidPathsToCopy;
+
+import org.onap.oom.truststoremerger.configuration.path.env.EnvProvider;
+
+public final class DelimitedPathsReaderFactory {
+ private final EnvProvider envProvider;
+
+ public DelimitedPathsReaderFactory(EnvProvider envProvider) {
+ this.envProvider = envProvider;
+ }
+
+ public DelimitedPathsReader createPasswordPathsReader() {
+ return new DelimitedPathsReader(envProvider, doesItContainValidPasswordPaths());
+ }
+
+ public DelimitedPathsReader createCertificatePathsReader() {
+ return new DelimitedPathsReader(envProvider, doesItContainValidCertificatesPaths());
+ }
+
+ public DelimitedPathsReader createKeystoreCopierPathsReader() {
+ return new DelimitedPathsReader(envProvider, doesItContainValidPathsToCopy());
+ }
+}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/PathValidator.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/PathValidator.java
deleted file mode 100644
index 4240228d..00000000
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/PathValidator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*============LICENSE_START=======================================================
- * oom-truststore-merger
- * ================================================================================
- * Copyright (C) 2020 Nokia. All rights reserved.
- * ================================================================================
- * 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.onap.oom.truststoremerger.configuration.path;
-
-class PathValidator {
-
- private static final String TRUSTSTORE_PATH_REGEX = "^(/[a-zA-Z0-9_-]+)+\\.(pem|jks|p12)";
- private static final String TRUSTSTORE_PASSWORD_PATH_REGEX = "^(/[a-zA-Z0-9_-]+)+\\.pass";
-
- boolean isTruststorePathValid(String truststorePath) {
- return isPathValid(truststorePath, TRUSTSTORE_PATH_REGEX);
- }
-
- boolean isTruststorePasswordPathValid(String truststorePasswordPath) {
- return truststorePasswordPath.isEmpty() || isPathValid(truststorePasswordPath, TRUSTSTORE_PASSWORD_PATH_REGEX);
- }
-
- private boolean isPathValid(String path, String regex) {
- return path.matches(regex);
- }
-}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProviderFactory.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProviderFactory.java
deleted file mode 100644
index 7a999108..00000000
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/TruststoresPathsProviderFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*============LICENSE_START=======================================================
- * oom-truststore-merger
- * ================================================================================
- * Copyright (C) 2020 Nokia. All rights reserved.
- * ================================================================================
- * 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.onap.oom.truststoremerger.configuration.path;
-
-public class TruststoresPathsProviderFactory {
-
- private TruststoresPathsProviderFactory() {
- }
-
- public static TruststoresPathsProvider create() {
- return new TruststoresPathsProvider(new EnvProvider(), new PathValidator());
- }
-}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/EnvProvider.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/env/EnvProvider.java
index c6fbf515..1dd127d0 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/EnvProvider.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/env/EnvProvider.java
@@ -17,18 +17,18 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.oom.truststoremerger.configuration.path;
+package org.onap.oom.truststoremerger.configuration.path.env;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-class EnvProvider {
+public class EnvProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(EnvProvider.class);
- Optional<String> getEnv(String name) {
+ public Optional<String> getEnv(String name) {
String value = System.getenv(name);
LOGGER.info("Read variable: {} , value: {}", name, value);
return Optional.ofNullable(System.getenv(name));
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/validation/ValidationFunctions.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/validation/ValidationFunctions.java
new file mode 100644
index 00000000..f4cfa60c
--- /dev/null
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/configuration/path/validation/ValidationFunctions.java
@@ -0,0 +1,57 @@
+/*============LICENSE_START=======================================================
+ * oom-truststore-merger
+ * ================================================================================
+ * Copyright (C) 2020 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.onap.oom.truststoremerger.configuration.path.validation;
+
+import java.util.List;
+import java.util.function.Predicate;
+
+public final class ValidationFunctions {
+
+ private static final String CERTIFICATE_PATH_REGEX = "^(/[a-zA-Z0-9_-]+)+\\.(pem|jks|p12)";
+ private static final String TRUSTSTORE_PASSWORD_PATH_REGEX = "^(/[a-zA-Z0-9_-]+)+\\.pass";
+
+ private ValidationFunctions() {
+ }
+
+ public static Predicate<List<String>> doesItContainValidPasswordPaths() {
+ return paths -> paths.stream().allMatch(ValidationFunctions::isCertificatePasswordPathValid);
+ }
+
+ public static Predicate<List<String>> doesItContainValidCertificatesPaths() {
+ return paths -> paths.stream().allMatch(ValidationFunctions::isCertificatePathValid);
+ }
+
+ public static Predicate<List<String>> doesItContainValidPathsToCopy() {
+ return paths -> paths.stream().allMatch(path ->
+ doesMatch(path, TRUSTSTORE_PASSWORD_PATH_REGEX) || isCertificatePathValid(path));
+ }
+
+ private static boolean isCertificatePathValid(String path) {
+ return doesMatch(path, CERTIFICATE_PATH_REGEX);
+ }
+
+ private static boolean isCertificatePasswordPathValid(String path) {
+ return path.isEmpty() || doesMatch(path, TRUSTSTORE_PASSWORD_PATH_REGEX);
+ }
+
+ private static boolean doesMatch(String path, String regex) {
+ return path.matches(regex);
+ }
+}