From de2c02b0186ab832d377bfd6ec2ee162e0949736 Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Mon, 3 Feb 2025 19:48:19 +0100 Subject: [PATCH] exit the xta-adapter by calling exit in a dedicated XtaApplication class closing the ApplicationContext during event handling leads to an IllegalStateException --- pom.xml | 2 +- .../ozgcloud/eingang/xta/ShutdownService.java | 16 ------- .../ozgcloud/eingang/xta/XtaApplication.java | 43 +++++++++++++++++++ .../de/ozgcloud/eingang/xta/XtaRunner.java | 5 +-- .../eingang/xta/SemantikAdapterITCase.java | 3 -- .../eingang/xta/XtaApplicationTest.java | 8 +--- .../de/ozgcloud/eingang/xta/XtaITCase.java | 7 --- 7 files changed, 47 insertions(+), 37 deletions(-) delete mode 100644 src/main/java/de/ozgcloud/eingang/xta/ShutdownService.java create mode 100644 src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java diff --git a/pom.xml b/pom.xml index 8f260eea..2d7e6238 100644 --- a/pom.xml +++ b/pom.xml @@ -139,7 +139,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> - <mainClass>de.ozgcloud.eingang.Application</mainClass> + <mainClass>de.ozgcloud.eingang.xta.XtaApplication</mainClass> </configuration> <executions> <execution> diff --git a/src/main/java/de/ozgcloud/eingang/xta/ShutdownService.java b/src/main/java/de/ozgcloud/eingang/xta/ShutdownService.java deleted file mode 100644 index 7674210d..00000000 --- a/src/main/java/de/ozgcloud/eingang/xta/ShutdownService.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.ozgcloud.eingang.xta; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.stereotype.Service; - -@Service -class ShutdownService { - - @Autowired - private ConfigurableApplicationContext context; - - public void shutdown() { - context.close(); - } -} diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java b/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java new file mode 100644 index 00000000..063c0cc0 --- /dev/null +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.TimeZone; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +import de.ozgcloud.eingang.Application; + +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) +@EnableScheduling +public class XtaApplication extends Application { + + public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + var appContext = SpringApplication.run(XtaApplication.class, args); + SpringApplication.exit(appContext); + } +} diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java b/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java index dcd9c805..7f095f77 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java @@ -41,13 +41,12 @@ class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { private XtaService service; @Autowired private SemantikAdapter semantikAdapter; - @Autowired - private ShutdownService shutdownService; + @Override public void onApplicationEvent(ContextRefreshedEvent event) { LOG.info("Fetching XTA Messages"); runGetXtaMessages(); - shutdownService.shutdown(); + // shutdownService.shutdown(); } void runGetXtaMessages() { diff --git a/src/test/java/de/ozgcloud/eingang/xta/SemantikAdapterITCase.java b/src/test/java/de/ozgcloud/eingang/xta/SemantikAdapterITCase.java index b6138a47..7d2b295b 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/SemantikAdapterITCase.java +++ b/src/test/java/de/ozgcloud/eingang/xta/SemantikAdapterITCase.java @@ -49,9 +49,6 @@ class SemantikAdapterITCase { @MockitoBean private VorgangService vorgangService; - @MockitoBean - private ShutdownService shutdownService; - @Nested class TestForFim { private final Map<String, Object> excpectedFormDataMap = FimFormDataTestFactory.FORM_DATA_MAP; diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java index b5ad0c2b..cd81ff83 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java @@ -28,17 +28,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.bean.override.mockito.MockitoBean; - -import de.ozgcloud.eingang.Application; @ActiveProfiles({ "local", "itcase" }) -@SpringBootTest(classes = Application.class) +@SpringBootTest(classes = XtaApplication.class) class XtaApplicationTest { - @MockitoBean - private ShutdownService shutdownService; - @Test void startup() { // should start without exception diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java index a8b18a8a..92b71131 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -85,8 +85,6 @@ class XtaITCase { @MockitoBean private XtaRemoteService xtaRemoteService; - @MockitoBean - private ShutdownService shutdownService; @Captor private ArgumentCaptor<FormData> formDataArgumentCaptor; @@ -116,11 +114,6 @@ class XtaITCase { doReturn("vorgangId(unused)").when(vorgangRemoteService).createVorgang(any(), any(), any(), any()); } - @DisplayName("should shut down context after processing") - void shouldShutdownContextAfterProcessing() { - verify(shutdownService, times(1)).shutdown(); - } - @DisplayName("should have three representations with pdf") @TestZipFileNamesWithPdf void shouldHaveThreeRepresentationsWithPdf(String zipFileName) { -- GitLab