From 85954eb738d67cb7cd760a53f97983f7e790ee9e Mon Sep 17 00:00:00 2001 From: Daniel Frick - taafrda7 Date: Wed, 4 Dec 2024 11:50:26 +0100 Subject: [PATCH 1/4] rename package --- build.gradle.kts | 4 ++-- docker-compose/docker-compose.yaml | 4 ++-- .../cdr/{clientvm => client}/CdrClientApplication.kt | 4 ++-- .../des/cdr/{clientvm => client}/TraceSupport.kt | 2 +- .../{clientvm => client}/config/CdrClientConfig.kt | 2 +- .../{clientvm => client}/config/CdrClientContext.kt | 2 +- .../{clientvm => client}/handler/FileHandlingBase.kt | 4 ++-- .../{clientvm => client}/handler/PullFileHandling.kt | 4 ++-- .../{clientvm => client}/handler/PushFileHandling.kt | 4 ++-- .../scheduling/DocumentDownloadScheduler.kt | 8 ++++---- .../scheduling/DocumentUploadSchedulers.kt | 10 +++++----- .../{clientvm => client}/AlwaysSameTempDirFactory.kt | 2 +- .../{clientvm => client}/CdrClientApplicationTest.kt | 2 +- ...adSchedulerAndFileHandlerMultipleConnectorTest.kt | 12 ++++++------ .../config/CdrClientConfigTest.kt | 4 ++-- .../handler/EventPushFileHandlingTest.kt | 6 +++--- .../handler/FileHandlingBaseTest.kt | 2 +- .../handler/PollingPushFileHandlingTest.kt | 6 +++--- .../handler/PullFileHandlingTest.kt | 4 ++-- .../scheduling/DocumentDownloadSchedulerTest.kt | 6 +++--- src/test/resources/application-test.yaml | 2 +- 21 files changed, 47 insertions(+), 47 deletions(-) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/CdrClientApplication.kt (82%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/TraceSupport.kt (97%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/config/CdrClientConfig.kt (98%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/config/CdrClientContext.kt (98%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/FileHandlingBase.kt (97%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/PullFileHandling.kt (98%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/PushFileHandling.kt (98%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/scheduling/DocumentDownloadScheduler.kt (88%) rename src/main/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/scheduling/DocumentUploadSchedulers.kt (97%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/AlwaysSameTempDirFactory.kt (92%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/CdrClientApplicationTest.kt (98%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt (96%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/config/CdrClientConfigTest.kt (98%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/EventPushFileHandlingTest.kt (98%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/FileHandlingBaseTest.kt (95%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/PollingPushFileHandlingTest.kt (98%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/handler/PullFileHandlingTest.kt (98%) rename src/test/kotlin/com/swisscom/health/des/cdr/{clientvm => client}/scheduling/DocumentDownloadSchedulerTest.kt (95%) diff --git a/build.gradle.kts b/build.gradle.kts index 5dc97c5..54118dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -47,7 +47,7 @@ idea { } application { - mainClass = "com.swisscom.health.des.cdr.clientvm.CdrClientApplicationKt" + mainClass = "com.swisscom.health.des.cdr.client.CdrClientApplicationKt" applicationDefaultJvmArgs = listOf("-Dspring.profiles.active=client,customer") } dependencyManagement { @@ -132,7 +132,7 @@ val jacocoTestCoverageVerification = tasks.named("ja classDirectories.setFrom(files(classDirectories.files.map { fileTree(it) { setExcludes(listOf( - "**/com/swisscom/health/des/cdr/clientvm/msal4j/*.class" + "**/com/swisscom/health/des/cdr/client/msal4j/*.class" )) } })) diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml index 9fef277..4bed4dd 100644 --- a/docker-compose/docker-compose.yaml +++ b/docker-compose/docker-compose.yaml @@ -37,8 +37,8 @@ services: depends_on: wiremock: condition: service_healthy - image: local.caddy.cdrappmgr - container_name: caddy-app-mgr + image: local.caddy.cdrclient + container_name: caddy-cdr-client build: ./caddy mem_limit: 256m ports: diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplication.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplication.kt similarity index 82% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplication.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplication.kt index edd5ec8..8caa74e 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplication.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplication.kt @@ -1,6 +1,6 @@ -package com.swisscom.health.des.cdr.clientvm +package com.swisscom.health.des.cdr.client -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.runApplication diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/TraceSupport.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/TraceSupport.kt similarity index 97% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/TraceSupport.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/TraceSupport.kt index ccd7ff8..7117fcd 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/TraceSupport.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/TraceSupport.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm +package com.swisscom.health.des.cdr.client import io.micrometer.tracing.Span import io.micrometer.tracing.Tracer diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfig.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfig.kt similarity index 98% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfig.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfig.kt index 45ac7ea..c77324d 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfig.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfig.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm.config +package com.swisscom.health.des.cdr.client.config import io.github.oshai.kotlinlogging.KotlinLogging import jakarta.annotation.PostConstruct diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientContext.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientContext.kt similarity index 98% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientContext.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientContext.kt index 8053654..512ac00 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientContext.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientContext.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm.config +package com.swisscom.health.des.cdr.client.config import com.mayakapps.kache.InMemoryKache import com.mayakapps.kache.KacheStrategy diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBase.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBase.kt similarity index 97% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBase.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBase.kt index 9393dcf..4f449bd 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBase.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBase.kt @@ -1,9 +1,9 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.microsoft.aad.msal4j.ClientCredentialParameters import com.microsoft.aad.msal4j.IAuthenticationResult import com.microsoft.aad.msal4j.IConfidentialClientApplication -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.github.oshai.kotlinlogging.KLogger import io.github.oshai.kotlinlogging.KotlinLogging import io.micrometer.tracing.Tracer diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandling.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandling.kt similarity index 98% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandling.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandling.kt index 637f744..f16c491 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandling.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandling.kt @@ -1,8 +1,8 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.microsoft.aad.msal4j.ClientCredentialParameters import com.microsoft.aad.msal4j.IConfidentialClientApplication -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.github.oshai.kotlinlogging.KotlinLogging import io.micrometer.tracing.Tracer import okhttp3.Headers diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PushFileHandling.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PushFileHandling.kt similarity index 98% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PushFileHandling.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PushFileHandling.kt index 46c83f4..3b36dab 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PushFileHandling.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/handler/PushFileHandling.kt @@ -1,9 +1,9 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.mayakapps.kache.ObjectKache import com.microsoft.aad.msal4j.ClientCredentialParameters import com.microsoft.aad.msal4j.IConfidentialClientApplication -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.github.oshai.kotlinlogging.KotlinLogging import io.micrometer.tracing.Tracer import kotlinx.coroutines.delay diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadScheduler.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadScheduler.kt similarity index 88% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadScheduler.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadScheduler.kt index c3c39de..c8389d2 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadScheduler.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadScheduler.kt @@ -1,8 +1,8 @@ -package com.swisscom.health.des.cdr.clientvm.scheduling +package com.swisscom.health.des.cdr.client.scheduling -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig -import com.swisscom.health.des.cdr.clientvm.handler.PullFileHandling -import com.swisscom.health.des.cdr.clientvm.handler.pathIsDirectoryAndWritable +import com.swisscom.health.des.cdr.client.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.handler.PullFileHandling +import com.swisscom.health.des.cdr.client.handler.pathIsDirectoryAndWritable import io.github.oshai.kotlinlogging.KotlinLogging import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.launch diff --git a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentUploadSchedulers.kt b/src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentUploadSchedulers.kt similarity index 97% rename from src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentUploadSchedulers.kt rename to src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentUploadSchedulers.kt index a602927..3e7c73f 100644 --- a/src/main/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentUploadSchedulers.kt +++ b/src/main/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentUploadSchedulers.kt @@ -1,10 +1,10 @@ -package com.swisscom.health.des.cdr.clientvm.scheduling +package com.swisscom.health.des.cdr.client.scheduling import com.mayakapps.kache.ObjectKache -import com.swisscom.health.des.cdr.clientvm.TraceSupport.continueSpan -import com.swisscom.health.des.cdr.clientvm.TraceSupport.startSpan -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig -import com.swisscom.health.des.cdr.clientvm.handler.PushFileHandling +import com.swisscom.health.des.cdr.client.TraceSupport.continueSpan +import com.swisscom.health.des.cdr.client.TraceSupport.startSpan +import com.swisscom.health.des.cdr.client.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.handler.PushFileHandling import io.github.irgaly.kfswatch.KfsDirectoryWatcher import io.github.irgaly.kfswatch.KfsDirectoryWatcherEvent import io.github.irgaly.kfswatch.KfsEvent diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/AlwaysSameTempDirFactory.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/AlwaysSameTempDirFactory.kt similarity index 92% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/AlwaysSameTempDirFactory.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/AlwaysSameTempDirFactory.kt index 0cf8e9a..75c1286 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/AlwaysSameTempDirFactory.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/AlwaysSameTempDirFactory.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm +package com.swisscom.health.des.cdr.client import org.junit.jupiter.api.extension.AnnotatedElementContext import org.junit.jupiter.api.extension.ExtensionContext diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplicationTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplicationTest.kt similarity index 98% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplicationTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplicationTest.kt index db97396..704a6f1 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/CdrClientApplicationTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/CdrClientApplicationTest.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm +package com.swisscom.health.des.cdr.client import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.BeforeAll diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt similarity index 96% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt index 39ee4fa..ee5a23d 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/PullDocumentDownloadSchedulerAndFileHandlerMultipleConnectorTest.kt @@ -1,14 +1,14 @@ -package com.swisscom.health.des.cdr.clientvm +package com.swisscom.health.des.cdr.client import com.microsoft.aad.msal4j.ClientCredentialParameters import com.microsoft.aad.msal4j.IAuthenticationResult import com.microsoft.aad.msal4j.IConfidentialClientApplication import com.microsoft.aad.msal4j.TokenSource -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig -import com.swisscom.health.des.cdr.clientvm.handler.CONNECTOR_ID_HEADER -import com.swisscom.health.des.cdr.clientvm.handler.PULL_RESULT_ID_HEADER -import com.swisscom.health.des.cdr.clientvm.handler.PullFileHandling -import com.swisscom.health.des.cdr.clientvm.scheduling.DocumentDownloadScheduler +import com.swisscom.health.des.cdr.client.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.handler.CONNECTOR_ID_HEADER +import com.swisscom.health.des.cdr.client.handler.PULL_RESULT_ID_HEADER +import com.swisscom.health.des.cdr.client.handler.PullFileHandling +import com.swisscom.health.des.cdr.client.scheduling.DocumentDownloadScheduler import io.micrometer.tracing.Span import io.micrometer.tracing.TraceContext import io.micrometer.tracing.Tracer diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfigTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfigTest.kt similarity index 98% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfigTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfigTest.kt index ffb58bf..f743889 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/config/CdrClientConfigTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/config/CdrClientConfigTest.kt @@ -1,6 +1,6 @@ -package com.swisscom.health.des.cdr.clientvm.config +package com.swisscom.health.des.cdr.client.config -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig.IdpCredentials +import com.swisscom.health.des.cdr.client.config.CdrClientConfig.IdpCredentials import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertDoesNotThrow diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/EventPushFileHandlingTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/EventPushFileHandlingTest.kt similarity index 98% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/EventPushFileHandlingTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/handler/EventPushFileHandlingTest.kt index cf584f2..9a52b7c 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/EventPushFileHandlingTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/EventPushFileHandlingTest.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.mayakapps.kache.ObjectKache import com.microsoft.aad.msal4j.ClientCredentialParameters @@ -6,8 +6,8 @@ import com.microsoft.aad.msal4j.IAuthenticationResult import com.microsoft.aad.msal4j.IConfidentialClientApplication import com.microsoft.aad.msal4j.TokenSource import com.ninjasquad.springmockk.SpykBean -import com.swisscom.health.des.cdr.clientvm.AlwaysSameTempDirFactory -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.AlwaysSameTempDirFactory +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.mockk.every import io.mockk.mockk import kotlinx.coroutines.runBlocking diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBaseTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBaseTest.kt similarity index 95% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBaseTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBaseTest.kt index 7e1cc4b..705ab3b 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/FileHandlingBaseTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/FileHandlingBaseTest.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import io.github.oshai.kotlinlogging.KotlinLogging import org.junit.jupiter.api.Assertions diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PollingPushFileHandlingTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PollingPushFileHandlingTest.kt similarity index 98% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PollingPushFileHandlingTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PollingPushFileHandlingTest.kt index 26a8cbd..dca8b2c 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PollingPushFileHandlingTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PollingPushFileHandlingTest.kt @@ -1,4 +1,4 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.mayakapps.kache.ObjectKache import com.microsoft.aad.msal4j.ClientCredentialParameters @@ -6,8 +6,8 @@ import com.microsoft.aad.msal4j.IAuthenticationResult import com.microsoft.aad.msal4j.IConfidentialClientApplication import com.microsoft.aad.msal4j.TokenSource import com.ninjasquad.springmockk.SpykBean -import com.swisscom.health.des.cdr.clientvm.AlwaysSameTempDirFactory -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.AlwaysSameTempDirFactory +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.mockk.every import io.mockk.mockk import kotlinx.coroutines.runBlocking diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandlingTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandlingTest.kt similarity index 98% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandlingTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandlingTest.kt index b3779a9..d2678f2 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/handler/PullFileHandlingTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/handler/PullFileHandlingTest.kt @@ -1,8 +1,8 @@ -package com.swisscom.health.des.cdr.clientvm.handler +package com.swisscom.health.des.cdr.client.handler import com.microsoft.aad.msal4j.ClientCredentialParameters import com.microsoft.aad.msal4j.IConfidentialClientApplication -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.config.CdrClientConfig import io.micrometer.tracing.Span import io.micrometer.tracing.TraceContext import io.micrometer.tracing.Tracer diff --git a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadSchedulerTest.kt b/src/test/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadSchedulerTest.kt similarity index 95% rename from src/test/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadSchedulerTest.kt rename to src/test/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadSchedulerTest.kt index ac746cb..f5a49d5 100644 --- a/src/test/kotlin/com/swisscom/health/des/cdr/clientvm/scheduling/DocumentDownloadSchedulerTest.kt +++ b/src/test/kotlin/com/swisscom/health/des/cdr/client/scheduling/DocumentDownloadSchedulerTest.kt @@ -1,7 +1,7 @@ -package com.swisscom.health.des.cdr.clientvm.scheduling +package com.swisscom.health.des.cdr.client.scheduling -import com.swisscom.health.des.cdr.clientvm.config.CdrClientConfig -import com.swisscom.health.des.cdr.clientvm.handler.PullFileHandling +import com.swisscom.health.des.cdr.client.config.CdrClientConfig +import com.swisscom.health.des.cdr.client.handler.PullFileHandling import io.micrometer.tracing.Span import io.micrometer.tracing.TraceContext import io.micrometer.tracing.Tracer diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml index ce218e6..6223884 100644 --- a/src/test/resources/application-test.yaml +++ b/src/test/resources/application-test.yaml @@ -34,5 +34,5 @@ client: - connector-id: 1 content-type: application/forumdatenaustausch+xml;charset=UTF-8 target-folder: ${java.io.tmpdir} - source-folder: ${java.io.tmpdir}/cdr-client-test-source # If you change this, then you need to change com.swisscom.health.des.cdr.clientvm.AlwaysSameTempDirFactory as well + source-folder: ${java.io.tmpdir}/cdr-client-test-source # If you change this, then you need to change com.swisscom.health.des.cdr.client.AlwaysSameTempDirFactory as well mode: test From 5b040dad9b132394e21cb82c4d0d41a5e8e4ade3 Mon Sep 17 00:00:00 2001 From: Daniel Frick - taafrda7 Date: Wed, 4 Dec 2024 14:43:46 +0100 Subject: [PATCH 2/4] #26423 fix base-path in application-client and improved readme to run client --- README.md | 69 ++++++++++++++---- installation/releases-overview.png | Bin 0 -> 19217 bytes installation/single-release-overview.png | Bin 0 -> 92906 bytes .../resources/config/application-client.yaml | 2 +- 4 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 installation/releases-overview.png create mode 100644 installation/single-release-overview.png diff --git a/README.md b/README.md index 1b18729..48f2c27 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,34 @@ # CDR Client The Swisscom Health Confidential Data Routing (CDR) Client +## Installation / Run the client +> Improvements for the installation are planned. For now, the client is only available as a jar file with manual steps required for the installation. + +Pre-Requirements: +* Java 17 (or higher) installed + +Go to the [releases](https://github.com/swisscom/cdr-client/releases) github page and click on the maven assets for the newest release: +![releases assets overview](./installation/releases-overview.png) +Download the jar file: +![release jar download](./installation/single-release-overview.png) +Place a file named application-customer.yaml in the same directory as the jar file. +The application-customer.yaml file should contain the configuration for the client. +An example can be found [here](#application-customer-yaml-example). + +Open a terminal and navigate to the directory where the jar file is located. +Run the following command to start the client (check the jar name and replace it in the command or rename the jar itself): +> The -D parameters need to be placed before the "cdr-client.jar" +```shell +java -jar -Dspring.profiles.active=client,customer -Dspring.config.additional-location=./application-customer.yaml cdr-client.jar +``` + +Check that no error messages are present in the terminal (or have a look at the "cdr-client.log" file that is created in the same folder as you've placed tha jar file) +and that the client is running. + +Configure an OS appropriate service to run the client as a background service. + ## API -There is no endpoint (beside actuator/health) that are offered here. +There is no endpoint offered here. The CDR Client is triggered by a scheduler and synchronizes by the given delay time the files from the CDR API. @@ -62,18 +88,7 @@ To create scripts to run the application locally one needs to run following grad This creates a folder ```build/install/cdr-client``` with scripts for windows and unix servers in the ```bin``` folder. To run the application locally one can call ```./build/install/cdr-client/bin/cdr-client```. It is required to have a ```application-customer.yaml``` and link it by adding following command line: ```JVM_OPTS="-Dspring.config.additional-location=./application-customer.yaml"```. -With a minimum configuration that looks like this: -``` -client: - endpoint: - host: cdr.health.swisscom.com - customer: - - connector-id: 8000000000000 - content-type: application/forumdatenaustausch+xml;charset=UTF-8 - target-folder: /tmp/download/8000000000000 - source-folder: /tmp/source/8000000000000 - mode: test -``` +With a configuration that looks like [this](#application-customer-yaml-example). ## Running the Jar If the provided jar should be run directly, the following command can be used: @@ -88,3 +103,31 @@ LOGGING_FILE_NAME={{ cdr_client_dir }}/logs/cdr-client.log" The LOGGING_FILE_NAME is just so that the log file is not auto created where the jar is run from. See [Application Plugin](#application-plugin) regarding the content of the application-customer.yaml + +## application-customer yaml example +``` +client: + local-folder: /tmp/download/in-flight # temporary folder for files that are currently downloaded from CDR API + idp-credentials: + tenant-id: swisscom-health-tenant-id # provided by Swisscom Health + client-id: my-client-id # Self created through CDR UI + client-secret: my-secret # Self created through CDR UI + endpoint: + host: cdr.health.swisscom.ch + customer: + - connector-id: 8000000000000 # provided by Swisscom Health + content-type: application/forumdatenaustausch+xml;charset=UTF-8 + target-folder: /tmp/download/test/8000000000000 + source-folder: /tmp/upload/test/8000000000000 + mode: test + - connector-id: 8000000000000 # provided by Swisscom Health + content-type: application/forumdatenaustausch+xml;charset=UTF-8 + target-folder: /tmp/download/8000000000000 + source-folder: /tmp/upload/8000000000000 + mode: production + +``` + +Some information can also be set as environment variables. See [application-client.yaml](./src/main/resources/config/application-client.yaml) for variable names. + +If the host is not set to production, but to stg instead, then the CDR_CLIENT_SCOPE_PREFIX environment variable needs to be set to "tst.". diff --git a/installation/releases-overview.png b/installation/releases-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fa5f4d81d5dc708845ffc35a10d3344cb82d42 GIT binary patch literal 19217 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 YWU|v`+4Uy+q!LK8r>mdKI;Vst0E0S5NB{r; literal 0 HcmV?d00001 diff --git a/installation/single-release-overview.png b/installation/single-release-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..9eef43a2707e08e3e7faadc6f07df21ba9a96d80 GIT binary patch literal 92906 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≪+?Vpp09s&$h82up8dK|mOC*M#vk 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Ⓢ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 UE)Xu$)c^nh07*qoM6N<$f~V`m4gdfE literal 0 HcmV?d00001 diff --git a/src/main/resources/config/application-client.yaml b/src/main/resources/config/application-client.yaml index e519b83..ec72dbf 100644 --- a/src/main/resources/config/application-client.yaml +++ b/src/main/resources/config/application-client.yaml @@ -27,7 +27,7 @@ client: scheme: https port: 443 # host: dev-cdr-functions.azurewebsites.net - base-path: documents + base-path: api/documents customer: # MUST BE SET IN ENVIRONMENT # - connector-id: 1 From 0296bf6f6c715206b0e7f49bc63a3997674e571e Mon Sep 17 00:00:00 2001 From: Daniel Frick - taafrda7 Date: Wed, 4 Dec 2024 17:33:44 +0100 Subject: [PATCH 3/4] #26423 improved example java cmd for windows --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 48f2c27..c610004 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,10 @@ An example can be found [here](#application-customer-yaml-example). Open a terminal and navigate to the directory where the jar file is located. Run the following command to start the client (check the jar name and replace it in the command or rename the jar itself): -> The -D parameters need to be placed before the "cdr-client.jar" +> The -D parameters need to be placed before the "-jar cdr-client.jar".

+> The quotes are necessary for Windows, but not for Unix systems ```shell -java -jar -Dspring.profiles.active=client,customer -Dspring.config.additional-location=./application-customer.yaml cdr-client.jar +java "-Dspring.profiles.active=client,customer" "-Dspring.config.additional-location=./application-customer.yaml" -jar cdr-client.jar ``` Check that no error messages are present in the terminal (or have a look at the "cdr-client.log" file that is created in the same folder as you've placed tha jar file) From 4f6dbed861deb5f43c2a6fad066fbda85be05a7d Mon Sep 17 00:00:00 2001 From: Daniel Frick - taafrda7 Date: Mon, 9 Dec 2024 12:07:11 +0100 Subject: [PATCH 4/4] #26423 readme updates --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c610004..d88b7b1 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Run the following command to start the client (check the jar name and replace it > The -D parameters need to be placed before the "-jar cdr-client.jar".

> The quotes are necessary for Windows, but not for Unix systems ```shell -java "-Dspring.profiles.active=client,customer" "-Dspring.config.additional-location=./application-customer.yaml" -jar cdr-client.jar +java "-Dspring.profiles.active=customer" "-Dspring.config.additional-location=./application-customer.yaml" -jar cdr-client.jar ``` Check that no error messages are present in the terminal (or have a look at the "cdr-client.log" file that is created in the same folder as you've placed tha jar file) @@ -31,7 +31,8 @@ Configure an OS appropriate service to run the client as a background service. ## API There is no endpoint offered here. -The CDR Client is triggered by a scheduler and synchronizes by the given delay time the files from the CDR API. +The CDR Client is triggered by a scheduler and downloads by the given delay time the files from the CDR API. +File uploads are triggered by the file system events. ### Functionality For each defined connector the CDR Client calls the defined endpoint of the CDR API.