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.TruststoreFile;
-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.provider.TruststoreFileFactory;
-import org.onap.oom.truststoremerger.certification.file.provider.TruststoreFilesListProvider;
-import org.onap.oom.truststoremerger.certification.path.EnvProvider;
-import org.onap.oom.truststoremerger.certification.path.TruststoresPathsProvider;
-import org.onap.oom.truststoremerger.configuration.MergerConfiguration;
-import org.onap.oom.truststoremerger.configuration.MergerConfigurationFactory;
-import org.onap.oom.truststoremerger.certification.path.PathValidator;
-
-import java.util.List;
+import org.onap.oom.truststoremerger.merger.TruststoreFilesProvider;
+import org.onap.oom.truststoremerger.merger.model.Truststore;
+import org.onap.oom.truststoremerger.merger.model.certificate.CertificateWithAlias;
+import org.onap.oom.truststoremerger.configuration.MergerConfigurationProvider;
+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;
class TrustStoreMerger {
+ private static final Logger LOGGER = LoggerFactory.getLogger(TrustStoreMerger.class);
+ private static final int FIRST_TRUSTSTORE_INDEX = 0;
+ private static final int SECOND_TRUSTSTORE_INDEX = 1;
+
private final AppExitHandler appExitHandler;
TrustStoreMerger(AppExitHandler appExitHandler) {
mergeTruststores();
appExitHandler.exit(ExitStatus.SUCCESS);
} 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<TruststoreFile> truststoreFilesList = getTruststoreFilesList(configuration);
+ List<Truststore> truststoreFilesList = getTruststoreFiles(configuration);
+
+ Truststore baseFile = truststoreFilesList.get(FIRST_TRUSTSTORE_INDEX);
+ baseFile.createBackup();
+
+ for (int i = SECOND_TRUSTSTORE_INDEX; i < truststoreFilesList.size(); i++) {
+ Truststore truststore = truststoreFilesList.get(i);
+ List<CertificateWithAlias> certificateWrappers = truststore.getCertificates();
+ baseFile.addCertificates(certificateWrappers);
+ }
+
+ baseFile.saveFile();
}
private MergerConfiguration loadConfiguration() throws ExitableException {
- TruststoresPathsProvider truststoresPathsProvider = new TruststoresPathsProvider(new EnvProvider(), new PathValidator());
- MergerConfigurationFactory factory = new MergerConfigurationFactory(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<TruststoreFile> getTruststoreFilesList(MergerConfiguration configuration) throws ExitableException {
- TruststoreFileFactory truststoreFileFactory = new TruststoreFileFactory(new FileManager(), new PasswordReader());
- TruststoreFilesListProvider truststoreFilesListProvider = new TruststoreFilesListProvider(truststoreFileFactory);
- return truststoreFilesListProvider
- .getTruststoreFilesList(
- configuration.getTruststoreFilePaths(),
- configuration.getTruststoreFilePasswordPaths()
- );
+ private static List<Truststore> getTruststoreFiles(MergerConfiguration configuration) throws ExitableException {
+ return TruststoreFilesProvider
+ .getTruststoreFiles(
+ configuration.getTruststoreFilePaths(),
+ configuration.getTruststoreFilePasswordPaths()
+ );
}
}