From ed636f4c7d5d9eb8b4058dd33d027b989e4a4de3 Mon Sep 17 00:00:00 2001 From: Saskia Date: Tue, 10 Feb 2026 17:38:44 +0100 Subject: [PATCH 1/6] Reorganize dependencies in `pom.xml` and configure Lombok annotation processing. --- pom.xml | 27 ++++++++++++------- .../SampleXChangeApplication.java | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 330a6ea..4609ac5 100644 --- a/pom.xml +++ b/pom.xml @@ -19,12 +19,7 @@ 1.18.3 - - org.projectlombok - lombok - provided - - + javax.annotation javax.annotation-api 1.3.2 @@ -106,8 +101,13 @@ ${testcontainers.version} test + + org.projectlombok + lombok + provided + - + @@ -119,9 +119,16 @@ org.apache.maven.plugins maven-compiler-plugin - 16 - 16 - + ${java.version} + ${java.version} + + + org.projectlombok + lombok + 1.18.42 + + + diff --git a/src/main/java/de/samply/samplexchange/SampleXChangeApplication.java b/src/main/java/de/samply/samplexchange/SampleXChangeApplication.java index 52e507c..cc02b20 100644 --- a/src/main/java/de/samply/samplexchange/SampleXChangeApplication.java +++ b/src/main/java/de/samply/samplexchange/SampleXChangeApplication.java @@ -28,7 +28,7 @@ public static void main(String[] args) { SpringApplication.run(SampleXChangeApplication.class, args); long endTime = System.currentTimeMillis() - startTime; - log.info("Finished SampleXChang in " + endTime + " mil sec"); + log.info("Finished SampleXChang in {} mil sec", endTime); } @Override From 773d1cbbc794ddf4daaafda9a795c84a67ee1b4a Mon Sep 17 00:00:00 2001 From: Saskia Date: Tue, 10 Feb 2026 17:39:41 +0100 Subject: [PATCH 2/6] Update Spring Boot and Java versions in `pom.xml` --- AGENTS.md | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 4 +- 2 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..1c002f5 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,141 @@ +# SampleXChange - AI Agent Guidelines + +This document provides guidelines for AI agents working on the SampleXChange codebase, a Spring Boot application for FHIR resource conversion between BBMRI and MII KDS profiles. + +## Project Overview + +- **Technology Stack**: Java 17, Spring Boot 3.4.0, HAPI FHIR 6.8.8, Maven +- **Purpose**: Convert FHIR resources between BBMRI Profiles and MII KDS Profiles for biobank data interchange +- **Architecture**: Component-based Spring application with FHIR mapping layers + +## Build and Development Commands + +```bash +# Build the project +mvn clean install + +# Build without tests +mvn clean package -DskipTests + +# Run the application +mvn spring-boot:run + +# Run with specific profile +mvn spring-boot:run -Dspring-boot.run.arguments="--profile=BBMRI2MII" + +# Run tests (when implemented) +mvn test + +# Run single test class (when implemented) +mvn test -Dtest=ClassName + +# Run single test method (when implemented) +mvn test -Dtest=ClassName#methodName + +# Docker operations +docker build -t samplexchange . +docker-compose up +``` + +## Code Style Guidelines + +### Package Structure +``` +de.samply.samplexchange/ +├── configuration/ # Spring configuration classes +├── converters/ # Data conversion utilities +├── enums/ # Enumerations for fixed values +├── exceptions/ # Custom exception classes +├── mapper/fhir/ # FHIR mapping logic (bbmri/, mii/ subpackages) +├── models/ # Data model classes +├── readers/ # FHIR resource readers +├── resources/ # Resource mapping classes +├── repository/ # Repository layer +├── utils/fhir/ # FHIR utility classes +└── writers/fhir/ # FHIR writer classes +``` + +### Naming Conventions +- **Classes**: PascalCase (e.g., `SpecimenMapping`, `TemperatureConverter`) +- **Methods**: camelCase with descriptive names (e.g., `fromBbrmiToMii`, `toMii`) +- **Variables**: camelCase (e.g., `bbmriId`, `miiSubject`) +- **Constants**: UPPER_SNAKE_CASE (e.g., `URL`, `DEFAULT_TIMEOUT`) +- **Packages**: lowercase with dots (e.g., `de.samply.samplexchange.converters`) + +### Import Organization +1. Standard Java imports (`java.*`) +2. Third-party imports (`org.springframework.*`, `ca.uhn.fhir.model.*`) +3. Local imports (`de.samply.samplexchange.*`) + +### Code Patterns +- **Lombok Usage**: Heavy use of `@Slf4j`, `@Data`, `@Getter`, `@Setter` +- **Spring Annotations**: `@Component`, `@Value`, `@Service`, `@Repository` +- **Documentation**: JavaDoc required for all public classes and methods +- **Access Modifiers**: Public for API, private for internal utilities + +## Type Safety and Generics +- Use generic types in template classes: `ConvertClass` +- Strong typing with FHIR model classes from HAPI FHIR +- Enum usage for fixed value sets (`ProfileFormats`) +- Avoid raw types where possible + +## Error Handling +- Custom exceptions extend `Exception` (not `RuntimeException`) +- Use proper exception chaining with descriptive messages +- Checked exceptions for expected error conditions +- Log errors appropriately using `@Slf4j` + +## FHIR-Specific Guidelines +- Use HAPI FHIR R4 structures exclusively +- Separate mappers for BBMRI↔MII conversions +- Handle extensions properly for custom data fields +- Follow FHIR resource structure conventions +- Validate resources before conversion + +## Configuration Management +- Environment variables: `PROFILE`, `DISABLESSL`, `SOURCE_URL`, `TARGET_URL`, etc. +- Configuration in `application.yml` +- Support for both BBMRI2MII and MII2BBMRI profiles +- Proper binding of environment-specific properties + +## Testing Guidelines (When Implemented) +- Use JUnit 4.13.2 with Spring Boot Test framework +- Mockito for mocking dependencies +- Testcontainers for integration tests +- Follow AAA pattern (Arrange, Act, Assert) +- Test both successful conversions and error scenarios + +## Architecture Patterns +- **Template Method**: Use `ConvertClass` as base class +- **Strategy Pattern**: Different mappers for profile conversions +- **Factory Pattern**: Resource creation in readers/writers +- **Dependency Injection**: Spring component management + +## Development Best Practices +- Maintain separation of concerns between layers +- Use Spring's dependency injection properly +- Follow FHIR best practices for resource handling +- Ensure thread safety for component classes +- Add appropriate logging at INFO/DEBUG/ERROR levels +- Validate inputs at service boundaries + +## Environment Setup +- Java 17 required +- Maven 3.6+ for building +- Docker for containerization +- Environment variables for configuration (see application.yml) + +## When Making Changes +1. Understand the FHIR profile differences (BBMRI vs MII KDS) +2. Check for existing mapper patterns before creating new ones +3. Ensure proper exception handling for FHIR parsing errors +4. Add appropriate logging for debugging conversion issues +5. Test with both source and target profiles when applicable +6. Verify resource validity after conversion + +## Common Pitfalls to Avoid +- Don't mix FHIR versions (use R4 consistently) +- Avoid hardcoded URLs or credentials +- Don't ignore SSL certificate validation in production +- Ensure proper resource ID handling during conversion +- Don't break existing mapper contracts when extending functionality \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4609ac5..bf4c5b8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.4.0 + 3.5.10 de.samply @@ -14,7 +14,7 @@ SampleXChange SampleXChange - 17 + 25 6.8.8 1.18.3 From 89229c324b13b11ccef8006e0f47ac004e924695 Mon Sep 17 00:00:00 2001 From: Saskia Date: Tue, 10 Feb 2026 19:57:41 +0100 Subject: [PATCH 3/6] Upgrade dependencies in `pom.xml` and add Maven plugins for static analysis and version management. --- pom.xml | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index bf4c5b8..2de39e1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.10 + 4.0.2 de.samply @@ -15,8 +15,8 @@ SampleXChange 25 - 6.8.8 - 1.18.3 + 8.6.5 + 1.21.4 @@ -49,18 +49,18 @@ org.mockito mockito-core - 5.4.0 + 5.21.0 org.fhir ucum - 1.0.3 + 1.0.10 com.opencsv opencsv - 5.7.1 + 5.12.0 com.googlecode.json-simple @@ -81,12 +81,12 @@ jakarta.xml.ws jakarta.xml.ws-api - 4.0.0 + 4.0.2 org.glassfish.hk2 osgi-resource-locator - 2.5.0-b42 + 3.0.0 org.testcontainers @@ -130,6 +130,59 @@ + + org.codehaus.mojo + versions-maven-plugin + 2.21.0 + + .*-M.*,.*\.M\d+,.*-rc.*,.*-RC.*,.*-SNAPSHOT,.*-alpha.*,.*-beta.* + + + + org.openrewrite.maven + rewrite-maven-plugin + 6.28.1 + + + org.openrewrite.staticanalysis.CommonStaticAnalysis + org.openrewrite.staticanalysis.CodeCleanup + org.openrewrite.java.migrate.UpgradeToJava17 + org.openrewrite.java.RemoveUnusedImports + org.openrewrite.java.OrderImports + org.openrewrite.java.migrate.guava.NoGuava + org.openrewrite.java.migrate.guava.NoGuavaRefasterRecipes + org.openrewrite.java.migrate.RemoveIllegalSemicolons + org.openrewrite.java.testing.junit.JUnit6BestPractices + org.openrewrite.java.testing.mockito.MockitoBestPractices + org.openrewrite.java.testing.assertj.Assertj + + + **/java-gen/** + + + + + org.openrewrite.recipe + rewrite-testing-frameworks + 3.26.0 + + + org.openrewrite.recipe + rewrite-migrate-java + 3.26.0 + + + org.openrewrite.recipe + rewrite-logging-frameworks + 3.22.0 + + + org.openrewrite.recipe + rewrite-static-analysis + 2.26.0 + + + From bd0f7ec5ac2ce0521842a3d9468fd2f6d622f30c Mon Sep 17 00:00:00 2001 From: Saskia Date: Wed, 11 Feb 2026 11:53:28 +0100 Subject: [PATCH 4/6] Add dependency and dependency tree reports for project libraries --- dependencies.txt | 119 ++++++++++++++++++++++++++++++++++++++++++++ dependency-tree.txt | 101 +++++++++++++++++++++++++++++++++++++ 2 files changed, 220 insertions(+) create mode 100644 dependencies.txt create mode 100644 dependency-tree.txt diff --git a/dependencies.txt b/dependencies.txt new file mode 100644 index 0000000..58bfdb1 --- /dev/null +++ b/dependencies.txt @@ -0,0 +1,119 @@ +[INFO] Scanning for projects... +[INFO] +[INFO] ----------------------< de.samply:SampleXChange >----------------------- +[INFO] Building SampleXChange 0.0.2-SNAPSHOT +[INFO] from pom.xml +[INFO] --------------------------------[ jar ]--------------------------------- +[INFO] +[INFO] --- dependency:3.8.1:tree (default-cli) @ SampleXChange --- +[INFO] de.samply:SampleXChange:jar:0.0.2-SNAPSHOT +[INFO] +- javax.annotation:javax.annotation-api:jar:1.3.2:compile +[INFO] +- org.springframework.boot:spring-boot-starter:jar:3.5.10:compile +[INFO] | +- org.springframework.boot:spring-boot:jar:3.5.10:compile +[INFO] | | \- org.springframework:spring-context:jar:6.2.15:compile +[INFO] | | +- org.springframework:spring-aop:jar:6.2.15:compile +[INFO] | | +- org.springframework:spring-beans:jar:6.2.15:compile +[INFO] | | +- org.springframework:spring-expression:jar:6.2.15:compile +[INFO] | | \- io.micrometer:micrometer-observation:jar:1.15.8:compile +[INFO] | | \- io.micrometer:micrometer-commons:jar:1.15.8:compile +[INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:3.5.10:compile +[INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:3.5.10:compile +[INFO] | | +- ch.qos.logback:logback-classic:jar:1.5.25:compile +[INFO] | | | \- ch.qos.logback:logback-core:jar:1.5.25:compile +[INFO] | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.24.3:compile +[INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.24.3:compile +[INFO] | | \- org.slf4j:jul-to-slf4j:jar:2.0.17:compile +[INFO] | +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile +[INFO] | +- org.springframework:spring-core:jar:6.2.15:compile +[INFO] | | \- org.springframework:spring-jcl:jar:6.2.15:compile +[INFO] | \- org.yaml:snakeyaml:jar:2.4:compile +[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:3.5.10:test +[INFO] | +- org.springframework.boot:spring-boot-test:jar:3.5.10:test +[INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.5.10:test +[INFO] | +- com.jayway.jsonpath:json-path:jar:2.9.0:test +[INFO] | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile +[INFO] | | \- jakarta.activation:jakarta.activation-api:jar:2.1.4:compile +[INFO] | +- net.minidev:json-smart:jar:2.5.2:test +[INFO] | | \- net.minidev:accessors-smart:jar:2.5.2:test +[INFO] | | \- org.ow2.asm:asm:jar:9.7.1:test +[INFO] | +- org.assertj:assertj-core:jar:3.27.6:test +[INFO] | +- org.awaitility:awaitility:jar:4.2.2:test +[INFO] | +- org.hamcrest:hamcrest:jar:3.0:test +[INFO] | +- org.junit.jupiter:junit-jupiter:jar:5.12.2:test +[INFO] | | +- org.junit.jupiter:junit-jupiter-api:jar:5.12.2:test +[INFO] | | | +- org.opentest4j:opentest4j:jar:1.3.0:test +[INFO] | | | +- org.junit.platform:junit-platform-commons:jar:1.12.2:test +[INFO] | | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test +[INFO] | | +- org.junit.jupiter:junit-jupiter-params:jar:5.12.2:test +[INFO] | | \- org.junit.jupiter:junit-jupiter-engine:jar:5.12.2:test +[INFO] | | \- org.junit.platform:junit-platform-engine:jar:1.12.2:test +[INFO] | +- org.mockito:mockito-junit-jupiter:jar:5.17.0:test +[INFO] | +- org.skyscreamer:jsonassert:jar:1.5.3:test +[INFO] | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test +[INFO] | +- org.springframework:spring-test:jar:6.2.15:test +[INFO] | \- org.xmlunit:xmlunit-core:jar:2.10.4:test +[INFO] +- ca.uhn.hapi.fhir:hapi-fhir-client:jar:6.4.0:compile +[INFO] | +- ca.uhn.hapi.fhir:hapi-fhir-base:jar:6.4.0:compile +[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.19.4:compile +[INFO] | | | \- com.fasterxml.jackson.core:jackson-core:jar:2.19.4:compile +[INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.19.4:compile +[INFO] | | +- commons-codec:commons-codec:jar:1.18.0:compile +[INFO] | | +- commons-io:commons-io:jar:2.21.0:compile +[INFO] | | +- com.google.guava:guava:jar:31.0.1-jre:compile +[INFO] | | | +- com.google.guava:failureaccess:jar:1.0.1:compile +[INFO] | | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile +[INFO] | | | +- org.checkerframework:checker-qual:jar:3.12.0:compile +[INFO] | | | +- com.google.errorprone:error_prone_annotations:jar:2.7.1:compile +[INFO] | | | \- com.google.j2objc:j2objc-annotations:jar:1.3:compile +[INFO] | | \- org.slf4j:jcl-over-slf4j:jar:2.0.17:compile +[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile +[INFO] | \- org.apache.httpcomponents:httpcore:jar:4.4.16:compile +[INFO] +- ca.uhn.hapi.fhir:hapi-fhir-structures-r4:jar:6.4.0:compile +[INFO] | +- com.squareup.okhttp3:okhttp:jar:4.10.0:compile +[INFO] | | +- com.squareup.okio:okio-jvm:jar:3.0.0:compile +[INFO] | | | +- org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.9.25:compile +[INFO] | | | | \- org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.9.25:compile +[INFO] | | | \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.9.25:compile +[INFO] | | \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.9.25:compile +[INFO] | +- ca.uhn.hapi.fhir:org.hl7.fhir.utilities:jar:5.6.881:compile +[INFO] | | \- com.ibm.icu:icu4j:jar:72.1:compile +[INFO] | +- ca.uhn.hapi.fhir:org.hl7.fhir.r4:jar:5.6.881:compile +[INFO] | +- ca.uhn.hapi.fhir:hapi-fhir-caching-api:jar:6.4.0:compile +[INFO] | \- com.google.code.findbugs:jsr305:jar:3.0.2:compile +[INFO] +- org.mockito:mockito-core:jar:5.15.2:compile +[INFO] | +- net.bytebuddy:byte-buddy:jar:1.17.8:compile +[INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:compile +[INFO] | \- org.objenesis:objenesis:jar:3.3:runtime +[INFO] +- org.fhir:ucum:jar:1.0.9:compile +[INFO] +- com.opencsv:opencsv:jar:5.9:compile +[INFO] | +- org.apache.commons:commons-lang3:jar:3.17.0:compile +[INFO] | +- org.apache.commons:commons-text:jar:1.11.0:compile +[INFO] | +- commons-beanutils:commons-beanutils:jar:1.11.0:compile +[INFO] | | +- commons-logging:commons-logging:jar:1.3.5:compile +[INFO] | | \- commons-collections:commons-collections:jar:3.2.2:compile +[INFO] | \- org.apache.commons:commons-collections4:jar:4.4:compile +[INFO] +- com.github.cliftonlabs:json-simple:jar:3.1.1:compile +[INFO] +- junit:junit:jar:4.13.2:test +[INFO] | \- org.hamcrest:hamcrest-core:jar:3.0:test +[INFO] +- jakarta.jws:jakarta.jws-api:jar:3.0.0:compile +[INFO] +- jakarta.xml.ws:jakarta.xml.ws-api:jar:4.0.0:compile +[INFO] | \- jakarta.xml.soap:jakarta.xml.soap-api:jar:3.0.2:compile +[INFO] +- org.glassfish.hk2:osgi-resource-locator:jar:2.5.0-b42:compile +[INFO] +- org.testcontainers:testcontainers:jar:1.20.4:test +[INFO] | +- org.slf4j:slf4j-api:jar:2.0.17:compile +[INFO] | +- org.apache.commons:commons-compress:jar:1.26.0:test +[INFO] | +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:test +[INFO] | | \- org.jetbrains:annotations:jar:17.0.0:compile +[INFO] | +- com.github.docker-java:docker-java-api:jar:3.4.0:test +[INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.19.4:compile +[INFO] | \- com.github.docker-java:docker-java-transport-zerodep:jar:3.4.0:test +[INFO] | +- com.github.docker-java:docker-java-transport:jar:3.4.0:test +[INFO] | \- net.java.dev.jna:jna:jar:5.13.0:test +[INFO] +- org.testcontainers:junit-jupiter:jar:1.20.4:test +[INFO] \- org.projectlombok:lombok:jar:1.18.42:provided +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 2.340 s +[INFO] Finished at: 2026-02-10T18:32:59+01:00 +[INFO] ------------------------------------------------------------------------ diff --git a/dependency-tree.txt b/dependency-tree.txt new file mode 100644 index 0000000..4a462e5 --- /dev/null +++ b/dependency-tree.txt @@ -0,0 +1,101 @@ +de.samply:SampleXChange:jar:0.0.2-SNAPSHOT ++- javax.annotation:javax.annotation-api:jar:1.3.2:compile ++- org.springframework.boot:spring-boot-starter:jar:3.5.10:compile +| +- org.springframework.boot:spring-boot:jar:3.5.10:compile +| | \- org.springframework:spring-context:jar:6.2.15:compile +| | +- org.springframework:spring-aop:jar:6.2.15:compile +| | +- org.springframework:spring-beans:jar:6.2.15:compile +| | +- org.springframework:spring-expression:jar:6.2.15:compile +| | \- io.micrometer:micrometer-observation:jar:1.15.8:compile +| | \- io.micrometer:micrometer-commons:jar:1.15.8:compile +| +- org.springframework.boot:spring-boot-autoconfigure:jar:3.5.10:compile +| +- org.springframework.boot:spring-boot-starter-logging:jar:3.5.10:compile +| | +- ch.qos.logback:logback-classic:jar:1.5.25:compile +| | | \- ch.qos.logback:logback-core:jar:1.5.25:compile +| | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.24.3:compile +| | | \- org.apache.logging.log4j:log4j-api:jar:2.24.3:compile +| | \- org.slf4j:jul-to-slf4j:jar:2.0.17:compile +| +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile +| +- org.springframework:spring-core:jar:6.2.15:compile +| | \- org.springframework:spring-jcl:jar:6.2.15:compile +| \- org.yaml:snakeyaml:jar:2.4:compile ++- org.springframework.boot:spring-boot-starter-test:jar:3.5.10:test +| +- org.springframework.boot:spring-boot-test:jar:3.5.10:test +| +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.5.10:test +| +- com.jayway.jsonpath:json-path:jar:2.9.0:test +| +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile +| | \- jakarta.activation:jakarta.activation-api:jar:2.1.4:compile +| +- net.minidev:json-smart:jar:2.5.2:test +| | \- net.minidev:accessors-smart:jar:2.5.2:test +| | \- org.ow2.asm:asm:jar:9.7.1:test +| +- org.assertj:assertj-core:jar:3.27.6:test +| +- org.awaitility:awaitility:jar:4.2.2:test +| +- org.hamcrest:hamcrest:jar:3.0:test +| +- org.junit.jupiter:junit-jupiter:jar:5.12.2:test +| | +- org.junit.jupiter:junit-jupiter-api:jar:5.12.2:test +| | | +- org.opentest4j:opentest4j:jar:1.3.0:test +| | | +- org.junit.platform:junit-platform-commons:jar:1.12.2:test +| | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test +| | +- org.junit.jupiter:junit-jupiter-params:jar:5.12.2:test +| | \- org.junit.jupiter:junit-jupiter-engine:jar:5.12.2:test +| | \- org.junit.platform:junit-platform-engine:jar:1.12.2:test +| +- org.mockito:mockito-junit-jupiter:jar:5.17.0:test +| +- org.skyscreamer:jsonassert:jar:1.5.3:test +| | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test +| +- org.springframework:spring-test:jar:6.2.15:test +| \- org.xmlunit:xmlunit-core:jar:2.10.4:test ++- ca.uhn.hapi.fhir:hapi-fhir-client:jar:6.8.8:compile +| +- ca.uhn.hapi.fhir:hapi-fhir-base:jar:6.8.8:compile +| | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.19.4:compile +| | | \- com.fasterxml.jackson.core:jackson-core:jar:2.19.4:compile +| | +- com.fasterxml.jackson.core:jackson-databind:jar:2.19.4:compile +| | +- commons-codec:commons-codec:jar:1.18.0:compile +| | +- commons-io:commons-io:jar:2.11.0:compile +| | +- com.google.guava:guava:jar:32.1.1-jre:compile +| | | +- com.google.guava:failureaccess:jar:1.0.1:compile +| | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile +| | | +- org.checkerframework:checker-qual:jar:3.33.0:compile +| | | +- com.google.errorprone:error_prone_annotations:jar:2.18.0:compile +| | | \- com.google.j2objc:j2objc-annotations:jar:2.8:compile +| | \- org.slf4j:jcl-over-slf4j:jar:2.0.17:compile +| +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile +| \- org.apache.httpcomponents:httpcore:jar:4.4.16:compile ++- ca.uhn.hapi.fhir:hapi-fhir-structures-r4:jar:6.8.8:compile +| +- ca.uhn.hapi.fhir:org.hl7.fhir.utilities:jar:6.0.22.2:compile +| | \- com.ibm.icu:icu4j:jar:72.1:compile +| +- ca.uhn.hapi.fhir:org.hl7.fhir.r4:jar:6.0.22.2:compile +| +- ca.uhn.hapi.fhir:hapi-fhir-caching-api:jar:6.8.8:compile +| \- com.google.code.findbugs:jsr305:jar:3.0.2:compile ++- org.mockito:mockito-core:jar:5.4.0:compile +| +- net.bytebuddy:byte-buddy:jar:1.17.8:compile +| +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:compile +| \- org.objenesis:objenesis:jar:3.3:runtime ++- org.fhir:ucum:jar:1.0.3:compile +| +- xpp3:xpp3:jar:1.1.4c:compile +| \- xpp3:xpp3_xpath:jar:1.1.4c:compile ++- com.opencsv:opencsv:jar:5.7.1:compile +| +- org.apache.commons:commons-lang3:jar:3.17.0:compile +| +- org.apache.commons:commons-text:jar:1.10.0:compile +| +- commons-beanutils:commons-beanutils:jar:1.9.4:compile +| | +- commons-logging:commons-logging:jar:1.2:compile +| | \- commons-collections:commons-collections:jar:3.2.2:compile +| \- org.apache.commons:commons-collections4:jar:4.4:compile ++- com.googlecode.json-simple:json-simple:jar:1.1.1:compile ++- junit:junit:jar:4.13.2:test +| \- org.hamcrest:hamcrest-core:jar:3.0:test ++- jakarta.jws:jakarta.jws-api:jar:3.0.0:compile ++- jakarta.xml.ws:jakarta.xml.ws-api:jar:4.0.0:compile +| \- jakarta.xml.soap:jakarta.xml.soap-api:jar:3.0.2:compile ++- org.glassfish.hk2:osgi-resource-locator:jar:2.5.0-b42:compile ++- org.testcontainers:testcontainers:jar:1.18.3:test +| +- org.slf4j:slf4j-api:jar:2.0.17:compile +| +- org.apache.commons:commons-compress:jar:1.23.0:test +| +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:test +| | \- org.jetbrains:annotations:jar:17.0.0:test +| +- com.github.docker-java:docker-java-api:jar:3.3.0:test +| | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.19.4:compile +| \- com.github.docker-java:docker-java-transport-zerodep:jar:3.3.0:test +| +- com.github.docker-java:docker-java-transport:jar:3.3.0:test +| \- net.java.dev.jna:jna:jar:5.12.1:test ++- org.testcontainers:junit-jupiter:jar:1.18.3:test +\- org.projectlombok:lombok:jar:1.18.42:provided From f40b665cdcff67870e7d7a9b9f4a5e4f0f2ba3cd Mon Sep 17 00:00:00 2001 From: Saskia Date: Wed, 11 Feb 2026 11:53:38 +0100 Subject: [PATCH 5/6] Add Qodana static analysis configuration file --- qodana.yaml | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 qodana.yaml diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..4cfb240 --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,48 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# + +################################################################################# +# WARNING: Do not store sensitive information in this file, # +# as its contents will be included in the Qodana report. # +################################################################################# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: "25" #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +# Quality gate. Will fail the CI/CD pipeline if any condition is not met +# severityThresholds - configures maximum thresholds for different problem severities +# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code +# Code Coverage is available in Ultimate and Ultimate Plus plans +#failureConditions: +# severityThresholds: +# any: 15 +# critical: 5 +# testCoverageThresholds: +# fresh: 70 +# total: 50 + +#Specify Qodana linter for analysis (Applied in CI/CD pipeline) +linter: jetbrains/qodana-jvm:2025.3 From ff2a68947375184979c24909896f43be0b536db7 Mon Sep 17 00:00:00 2001 From: Saskia Date: Fri, 13 Feb 2026 10:30:33 +0100 Subject: [PATCH 6/6] Revert "Add dependency and dependency tree reports for project libraries" This reverts commit bd0f7ec5ac2ce0521842a3d9468fd2f6d622f30c. --- dependencies.txt | 119 -------------------------------------------- dependency-tree.txt | 101 ------------------------------------- 2 files changed, 220 deletions(-) delete mode 100644 dependencies.txt delete mode 100644 dependency-tree.txt diff --git a/dependencies.txt b/dependencies.txt deleted file mode 100644 index 58bfdb1..0000000 --- a/dependencies.txt +++ /dev/null @@ -1,119 +0,0 @@ -[INFO] Scanning for projects... -[INFO] -[INFO] ----------------------< de.samply:SampleXChange >----------------------- -[INFO] Building SampleXChange 0.0.2-SNAPSHOT -[INFO] from pom.xml -[INFO] --------------------------------[ jar ]--------------------------------- -[INFO] -[INFO] --- dependency:3.8.1:tree (default-cli) @ SampleXChange --- -[INFO] de.samply:SampleXChange:jar:0.0.2-SNAPSHOT -[INFO] +- javax.annotation:javax.annotation-api:jar:1.3.2:compile -[INFO] +- org.springframework.boot:spring-boot-starter:jar:3.5.10:compile -[INFO] | +- org.springframework.boot:spring-boot:jar:3.5.10:compile -[INFO] | | \- org.springframework:spring-context:jar:6.2.15:compile -[INFO] | | +- org.springframework:spring-aop:jar:6.2.15:compile -[INFO] | | +- org.springframework:spring-beans:jar:6.2.15:compile -[INFO] | | +- org.springframework:spring-expression:jar:6.2.15:compile -[INFO] | | \- io.micrometer:micrometer-observation:jar:1.15.8:compile -[INFO] | | \- io.micrometer:micrometer-commons:jar:1.15.8:compile -[INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:3.5.10:compile -[INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:3.5.10:compile -[INFO] | | +- ch.qos.logback:logback-classic:jar:1.5.25:compile -[INFO] | | | \- ch.qos.logback:logback-core:jar:1.5.25:compile -[INFO] | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.24.3:compile -[INFO] | | | \- org.apache.logging.log4j:log4j-api:jar:2.24.3:compile -[INFO] | | \- org.slf4j:jul-to-slf4j:jar:2.0.17:compile -[INFO] | +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile -[INFO] | +- org.springframework:spring-core:jar:6.2.15:compile -[INFO] | | \- org.springframework:spring-jcl:jar:6.2.15:compile -[INFO] | \- org.yaml:snakeyaml:jar:2.4:compile -[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:3.5.10:test -[INFO] | +- org.springframework.boot:spring-boot-test:jar:3.5.10:test -[INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.5.10:test -[INFO] | +- com.jayway.jsonpath:json-path:jar:2.9.0:test -[INFO] | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile -[INFO] | | \- jakarta.activation:jakarta.activation-api:jar:2.1.4:compile -[INFO] | +- net.minidev:json-smart:jar:2.5.2:test -[INFO] | | \- net.minidev:accessors-smart:jar:2.5.2:test -[INFO] | | \- org.ow2.asm:asm:jar:9.7.1:test -[INFO] | +- org.assertj:assertj-core:jar:3.27.6:test -[INFO] | +- org.awaitility:awaitility:jar:4.2.2:test -[INFO] | +- org.hamcrest:hamcrest:jar:3.0:test -[INFO] | +- org.junit.jupiter:junit-jupiter:jar:5.12.2:test -[INFO] | | +- org.junit.jupiter:junit-jupiter-api:jar:5.12.2:test -[INFO] | | | +- org.opentest4j:opentest4j:jar:1.3.0:test -[INFO] | | | +- org.junit.platform:junit-platform-commons:jar:1.12.2:test -[INFO] | | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test -[INFO] | | +- org.junit.jupiter:junit-jupiter-params:jar:5.12.2:test -[INFO] | | \- org.junit.jupiter:junit-jupiter-engine:jar:5.12.2:test -[INFO] | | \- org.junit.platform:junit-platform-engine:jar:1.12.2:test -[INFO] | +- org.mockito:mockito-junit-jupiter:jar:5.17.0:test -[INFO] | +- org.skyscreamer:jsonassert:jar:1.5.3:test -[INFO] | | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test -[INFO] | +- org.springframework:spring-test:jar:6.2.15:test -[INFO] | \- org.xmlunit:xmlunit-core:jar:2.10.4:test -[INFO] +- ca.uhn.hapi.fhir:hapi-fhir-client:jar:6.4.0:compile -[INFO] | +- ca.uhn.hapi.fhir:hapi-fhir-base:jar:6.4.0:compile -[INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.19.4:compile -[INFO] | | | \- com.fasterxml.jackson.core:jackson-core:jar:2.19.4:compile -[INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.19.4:compile -[INFO] | | +- commons-codec:commons-codec:jar:1.18.0:compile -[INFO] | | +- commons-io:commons-io:jar:2.21.0:compile -[INFO] | | +- com.google.guava:guava:jar:31.0.1-jre:compile -[INFO] | | | +- com.google.guava:failureaccess:jar:1.0.1:compile -[INFO] | | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile -[INFO] | | | +- org.checkerframework:checker-qual:jar:3.12.0:compile -[INFO] | | | +- com.google.errorprone:error_prone_annotations:jar:2.7.1:compile -[INFO] | | | \- com.google.j2objc:j2objc-annotations:jar:1.3:compile -[INFO] | | \- org.slf4j:jcl-over-slf4j:jar:2.0.17:compile -[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile -[INFO] | \- org.apache.httpcomponents:httpcore:jar:4.4.16:compile -[INFO] +- ca.uhn.hapi.fhir:hapi-fhir-structures-r4:jar:6.4.0:compile -[INFO] | +- com.squareup.okhttp3:okhttp:jar:4.10.0:compile -[INFO] | | +- com.squareup.okio:okio-jvm:jar:3.0.0:compile -[INFO] | | | +- org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.9.25:compile -[INFO] | | | | \- org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.9.25:compile -[INFO] | | | \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.9.25:compile -[INFO] | | \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.9.25:compile -[INFO] | +- ca.uhn.hapi.fhir:org.hl7.fhir.utilities:jar:5.6.881:compile -[INFO] | | \- com.ibm.icu:icu4j:jar:72.1:compile -[INFO] | +- ca.uhn.hapi.fhir:org.hl7.fhir.r4:jar:5.6.881:compile -[INFO] | +- ca.uhn.hapi.fhir:hapi-fhir-caching-api:jar:6.4.0:compile -[INFO] | \- com.google.code.findbugs:jsr305:jar:3.0.2:compile -[INFO] +- org.mockito:mockito-core:jar:5.15.2:compile -[INFO] | +- net.bytebuddy:byte-buddy:jar:1.17.8:compile -[INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:compile -[INFO] | \- org.objenesis:objenesis:jar:3.3:runtime -[INFO] +- org.fhir:ucum:jar:1.0.9:compile -[INFO] +- com.opencsv:opencsv:jar:5.9:compile -[INFO] | +- org.apache.commons:commons-lang3:jar:3.17.0:compile -[INFO] | +- org.apache.commons:commons-text:jar:1.11.0:compile -[INFO] | +- commons-beanutils:commons-beanutils:jar:1.11.0:compile -[INFO] | | +- commons-logging:commons-logging:jar:1.3.5:compile -[INFO] | | \- commons-collections:commons-collections:jar:3.2.2:compile -[INFO] | \- org.apache.commons:commons-collections4:jar:4.4:compile -[INFO] +- com.github.cliftonlabs:json-simple:jar:3.1.1:compile -[INFO] +- junit:junit:jar:4.13.2:test -[INFO] | \- org.hamcrest:hamcrest-core:jar:3.0:test -[INFO] +- jakarta.jws:jakarta.jws-api:jar:3.0.0:compile -[INFO] +- jakarta.xml.ws:jakarta.xml.ws-api:jar:4.0.0:compile -[INFO] | \- jakarta.xml.soap:jakarta.xml.soap-api:jar:3.0.2:compile -[INFO] +- org.glassfish.hk2:osgi-resource-locator:jar:2.5.0-b42:compile -[INFO] +- org.testcontainers:testcontainers:jar:1.20.4:test -[INFO] | +- org.slf4j:slf4j-api:jar:2.0.17:compile -[INFO] | +- org.apache.commons:commons-compress:jar:1.26.0:test -[INFO] | +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:test -[INFO] | | \- org.jetbrains:annotations:jar:17.0.0:compile -[INFO] | +- com.github.docker-java:docker-java-api:jar:3.4.0:test -[INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.19.4:compile -[INFO] | \- com.github.docker-java:docker-java-transport-zerodep:jar:3.4.0:test -[INFO] | +- com.github.docker-java:docker-java-transport:jar:3.4.0:test -[INFO] | \- net.java.dev.jna:jna:jar:5.13.0:test -[INFO] +- org.testcontainers:junit-jupiter:jar:1.20.4:test -[INFO] \- org.projectlombok:lombok:jar:1.18.42:provided -[INFO] ------------------------------------------------------------------------ -[INFO] BUILD SUCCESS -[INFO] ------------------------------------------------------------------------ -[INFO] Total time: 2.340 s -[INFO] Finished at: 2026-02-10T18:32:59+01:00 -[INFO] ------------------------------------------------------------------------ diff --git a/dependency-tree.txt b/dependency-tree.txt deleted file mode 100644 index 4a462e5..0000000 --- a/dependency-tree.txt +++ /dev/null @@ -1,101 +0,0 @@ -de.samply:SampleXChange:jar:0.0.2-SNAPSHOT -+- javax.annotation:javax.annotation-api:jar:1.3.2:compile -+- org.springframework.boot:spring-boot-starter:jar:3.5.10:compile -| +- org.springframework.boot:spring-boot:jar:3.5.10:compile -| | \- org.springframework:spring-context:jar:6.2.15:compile -| | +- org.springframework:spring-aop:jar:6.2.15:compile -| | +- org.springframework:spring-beans:jar:6.2.15:compile -| | +- org.springframework:spring-expression:jar:6.2.15:compile -| | \- io.micrometer:micrometer-observation:jar:1.15.8:compile -| | \- io.micrometer:micrometer-commons:jar:1.15.8:compile -| +- org.springframework.boot:spring-boot-autoconfigure:jar:3.5.10:compile -| +- org.springframework.boot:spring-boot-starter-logging:jar:3.5.10:compile -| | +- ch.qos.logback:logback-classic:jar:1.5.25:compile -| | | \- ch.qos.logback:logback-core:jar:1.5.25:compile -| | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.24.3:compile -| | | \- org.apache.logging.log4j:log4j-api:jar:2.24.3:compile -| | \- org.slf4j:jul-to-slf4j:jar:2.0.17:compile -| +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile -| +- org.springframework:spring-core:jar:6.2.15:compile -| | \- org.springframework:spring-jcl:jar:6.2.15:compile -| \- org.yaml:snakeyaml:jar:2.4:compile -+- org.springframework.boot:spring-boot-starter-test:jar:3.5.10:test -| +- org.springframework.boot:spring-boot-test:jar:3.5.10:test -| +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.5.10:test -| +- com.jayway.jsonpath:json-path:jar:2.9.0:test -| +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:compile -| | \- jakarta.activation:jakarta.activation-api:jar:2.1.4:compile -| +- net.minidev:json-smart:jar:2.5.2:test -| | \- net.minidev:accessors-smart:jar:2.5.2:test -| | \- org.ow2.asm:asm:jar:9.7.1:test -| +- org.assertj:assertj-core:jar:3.27.6:test -| +- org.awaitility:awaitility:jar:4.2.2:test -| +- org.hamcrest:hamcrest:jar:3.0:test -| +- org.junit.jupiter:junit-jupiter:jar:5.12.2:test -| | +- org.junit.jupiter:junit-jupiter-api:jar:5.12.2:test -| | | +- org.opentest4j:opentest4j:jar:1.3.0:test -| | | +- org.junit.platform:junit-platform-commons:jar:1.12.2:test -| | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test -| | +- org.junit.jupiter:junit-jupiter-params:jar:5.12.2:test -| | \- org.junit.jupiter:junit-jupiter-engine:jar:5.12.2:test -| | \- org.junit.platform:junit-platform-engine:jar:1.12.2:test -| +- org.mockito:mockito-junit-jupiter:jar:5.17.0:test -| +- org.skyscreamer:jsonassert:jar:1.5.3:test -| | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test -| +- org.springframework:spring-test:jar:6.2.15:test -| \- org.xmlunit:xmlunit-core:jar:2.10.4:test -+- ca.uhn.hapi.fhir:hapi-fhir-client:jar:6.8.8:compile -| +- ca.uhn.hapi.fhir:hapi-fhir-base:jar:6.8.8:compile -| | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.19.4:compile -| | | \- com.fasterxml.jackson.core:jackson-core:jar:2.19.4:compile -| | +- com.fasterxml.jackson.core:jackson-databind:jar:2.19.4:compile -| | +- commons-codec:commons-codec:jar:1.18.0:compile -| | +- commons-io:commons-io:jar:2.11.0:compile -| | +- com.google.guava:guava:jar:32.1.1-jre:compile -| | | +- com.google.guava:failureaccess:jar:1.0.1:compile -| | | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile -| | | +- org.checkerframework:checker-qual:jar:3.33.0:compile -| | | +- com.google.errorprone:error_prone_annotations:jar:2.18.0:compile -| | | \- com.google.j2objc:j2objc-annotations:jar:2.8:compile -| | \- org.slf4j:jcl-over-slf4j:jar:2.0.17:compile -| +- org.apache.httpcomponents:httpclient:jar:4.5.13:compile -| \- org.apache.httpcomponents:httpcore:jar:4.4.16:compile -+- ca.uhn.hapi.fhir:hapi-fhir-structures-r4:jar:6.8.8:compile -| +- ca.uhn.hapi.fhir:org.hl7.fhir.utilities:jar:6.0.22.2:compile -| | \- com.ibm.icu:icu4j:jar:72.1:compile -| +- ca.uhn.hapi.fhir:org.hl7.fhir.r4:jar:6.0.22.2:compile -| +- ca.uhn.hapi.fhir:hapi-fhir-caching-api:jar:6.8.8:compile -| \- com.google.code.findbugs:jsr305:jar:3.0.2:compile -+- org.mockito:mockito-core:jar:5.4.0:compile -| +- net.bytebuddy:byte-buddy:jar:1.17.8:compile -| +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:compile -| \- org.objenesis:objenesis:jar:3.3:runtime -+- org.fhir:ucum:jar:1.0.3:compile -| +- xpp3:xpp3:jar:1.1.4c:compile -| \- xpp3:xpp3_xpath:jar:1.1.4c:compile -+- com.opencsv:opencsv:jar:5.7.1:compile -| +- org.apache.commons:commons-lang3:jar:3.17.0:compile -| +- org.apache.commons:commons-text:jar:1.10.0:compile -| +- commons-beanutils:commons-beanutils:jar:1.9.4:compile -| | +- commons-logging:commons-logging:jar:1.2:compile -| | \- commons-collections:commons-collections:jar:3.2.2:compile -| \- org.apache.commons:commons-collections4:jar:4.4:compile -+- com.googlecode.json-simple:json-simple:jar:1.1.1:compile -+- junit:junit:jar:4.13.2:test -| \- org.hamcrest:hamcrest-core:jar:3.0:test -+- jakarta.jws:jakarta.jws-api:jar:3.0.0:compile -+- jakarta.xml.ws:jakarta.xml.ws-api:jar:4.0.0:compile -| \- jakarta.xml.soap:jakarta.xml.soap-api:jar:3.0.2:compile -+- org.glassfish.hk2:osgi-resource-locator:jar:2.5.0-b42:compile -+- org.testcontainers:testcontainers:jar:1.18.3:test -| +- org.slf4j:slf4j-api:jar:2.0.17:compile -| +- org.apache.commons:commons-compress:jar:1.23.0:test -| +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:test -| | \- org.jetbrains:annotations:jar:17.0.0:test -| +- com.github.docker-java:docker-java-api:jar:3.3.0:test -| | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.19.4:compile -| \- com.github.docker-java:docker-java-transport-zerodep:jar:3.3.0:test -| +- com.github.docker-java:docker-java-transport:jar:3.3.0:test -| \- net.java.dev.jna:jna:jar:5.12.1:test -+- org.testcontainers:junit-jupiter:jar:1.18.3:test -\- org.projectlombok:lombok:jar:1.18.42:provided