summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Malkiewicz <jan.malkiewicz@nokia.com>2020-09-09 14:42:52 +0200
committerJan Malkiewicz <jan.malkiewicz@nokia.com>2020-09-09 15:45:24 +0200
commitc22f36d5847b75e436a0acbe370a9e1c96008b1d (patch)
tree164e0c446ffdb5fa863cda20cdbb590a90ade6ce
parenta9fd6d0a175e647ac36932ce77b91f9e54e97084 (diff)
Refactor truststore MainApp (rename to CertificatePostProcessor)
- Move common exception handling logic to dedicated class AppExecutor Issue-ID: DCAEGEN2-2253 Signed-off-by: Jan Malkiewicz <jan.malkiewicz@nokia.com> Change-Id: Ic3cffa155e488258067df22e901ceaa0a2eca5f1
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/AppExecutor.java (renamed from trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/TrustStoreMergerTest.java)38
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/CertificatePostProcessor.java (renamed from trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java)31
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/MainApp.java3
-rw-r--r--trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitableException.java2
-rw-r--r--trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/AppExecutorTest.java76
5 files changed, 109 insertions, 41 deletions
diff --git a/trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/TrustStoreMergerTest.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/AppExecutor.java
index a7c62361..309f86fc 100644
--- a/trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/TrustStoreMergerTest.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/AppExecutor.java
@@ -19,24 +19,36 @@
package org.onap.oom.truststoremerger;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
import org.onap.oom.truststoremerger.api.ExitStatus;
+import org.onap.oom.truststoremerger.api.ExitableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import static org.mockito.Mockito.verify;
+public class AppExecutor {
-@ExtendWith(MockitoExtension.class)
-class TrustStoreMergerTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(AppExecutor.class);
- @Mock
- AppExitHandler appExitHandler;
+ private AppExitHandler exitHandler;
+
+ AppExecutor() {
+ this(new AppExitHandler());
+ }
+
+ AppExecutor(AppExitHandler exitHandler) {
+ this.exitHandler = exitHandler;
+ }
- @Test
- void shouldExitWithTruststoresPathsProviderExceptionDueToMissingTrustoresPathEnvs() {
- new TrustStoreMerger(appExitHandler).run();
- verify(appExitHandler).exit(ExitStatus.TRUSTSTORES_PATHS_PROVIDER_EXCEPTION);
+ public void execute(Runnable logic) {
+ try {
+ logic.run();
+ exitHandler.exit(ExitStatus.SUCCESS);
+ } catch (ExitableException e) {
+ LOGGER.error("Application failed: ", e);
+ exitHandler.exit(e.applicationExitStatus());
+ } catch (Exception e) {
+ LOGGER.error("Application failed (unexpected error): ", e);
+ exitHandler.exit(ExitStatus.UNEXPECTED_EXCEPTION);
+ }
}
}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/CertificatePostProcessor.java
index 7f53331f..7eab6401 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/TrustStoreMerger.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/CertificatePostProcessor.java
@@ -20,42 +20,23 @@
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.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;
+import org.onap.oom.truststoremerger.merger.TruststoreFilesProvider;
+import org.onap.oom.truststoremerger.merger.model.Truststore;
+import org.onap.oom.truststoremerger.merger.model.certificate.CertificateWithAlias;
-class TrustStoreMerger {
+class CertificatePostProcessor implements Runnable {
- 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) {
- this.appExitHandler = appExitHandler;
- }
-
- void run() {
- try {
- 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);
- }
+ public void run() throws ExitableException {
+ mergeTruststores();
}
private void mergeTruststores() throws ExitableException {
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/MainApp.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/MainApp.java
index a26b9def..61112e0a 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/MainApp.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/MainApp.java
@@ -22,7 +22,6 @@ package org.onap.oom.truststoremerger;
public class MainApp {
public static void main(String[] args) {
- TrustStoreMerger trustStoreMerger = new TrustStoreMerger(new AppExitHandler());
- trustStoreMerger.run();
+ new AppExecutor().execute(new CertificatePostProcessor());
}
}
diff --git a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitableException.java b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitableException.java
index ec28d466..1454e6bd 100644
--- a/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitableException.java
+++ b/trustStoreMerger/src/main/java/org/onap/oom/truststoremerger/api/ExitableException.java
@@ -19,7 +19,7 @@
package org.onap.oom.truststoremerger.api;
-public class ExitableException extends Exception {
+public class ExitableException extends RuntimeException {
private final ExitStatus exitStatus;
diff --git a/trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/AppExecutorTest.java b/trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/AppExecutorTest.java
new file mode 100644
index 00000000..bf5196e9
--- /dev/null
+++ b/trustStoreMerger/src/test/java/org/onap/oom/truststoremerger/AppExecutorTest.java
@@ -0,0 +1,76 @@
+/*============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;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.verify;
+import static org.onap.oom.truststoremerger.api.ExitStatus.ALIAS_CONFLICT_EXCEPTION;
+import static org.onap.oom.truststoremerger.api.ExitStatus.SUCCESS;
+import static org.onap.oom.truststoremerger.api.ExitStatus.UNEXPECTED_EXCEPTION;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.onap.oom.truststoremerger.merger.exception.AliasConflictException;
+
+@ExtendWith(MockitoExtension.class)
+public class AppExecutorTest {
+
+ @Mock
+ Runnable logic;
+ @Mock
+ AppExitHandler exitHandler;
+ @InjectMocks
+ AppExecutor executor = new AppExecutor();
+
+ @Test
+ void shouldExitWithUnexpectedException() {
+ doThrow(new NullPointerException()).when(logic).run();
+ doNothing().when(exitHandler).exit(UNEXPECTED_EXCEPTION);
+
+ executor.execute(logic);
+
+ verify(exitHandler).exit(UNEXPECTED_EXCEPTION);
+ }
+
+ @Test
+ void shouldExitWithKnownException() {
+ doThrow(new AliasConflictException("")).when(logic).run();
+ doNothing().when(exitHandler).exit(ALIAS_CONFLICT_EXCEPTION);
+
+ executor.execute(logic);
+
+ verify(exitHandler).exit(ALIAS_CONFLICT_EXCEPTION);
+ }
+
+ @Test
+ void shouldExitWithSuccess() {
+ doNothing().when(logic).run();
+ doNothing().when(exitHandler).exit(SUCCESS);
+
+ executor.execute(logic);
+
+ verify(exitHandler).exit(SUCCESS);
+ }
+}