diff --git a/.github/workflows/docker-snapshot.yml b/.github/workflows/docker-snapshot.yml
index 32064420..99628c74 100644
--- a/.github/workflows/docker-snapshot.yml
+++ b/.github/workflows/docker-snapshot.yml
@@ -27,18 +27,22 @@ jobs:
java-version: "21"
- name: Build API
+ working-directory: api
run: mvn package --no-transfer-progress
- name: Upload API jar
uses: actions/upload-artifact@v4
with:
name: app-jar
- path: target/*.jar
+ path: api/target/*.jar
docker:
needs:
- build-snapshot
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
@@ -46,7 +50,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: app-jar
- path: target/
+ path: api/target/
- name: Create docker version tag
id: docker-version
@@ -64,4 +68,4 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
default_branch: ${{ github.ref }}
tags: "snapshot-${{ env.docker_tag }}"
- workdir: .
\ No newline at end of file
+ workdir: api
\ No newline at end of file
diff --git a/.github/workflows/pr-validity.yml b/.github/workflows/pr-validity.yml
index 1575b09e..e5158c6a 100644
--- a/.github/workflows/pr-validity.yml
+++ b/.github/workflows/pr-validity.yml
@@ -7,6 +7,9 @@ on:
jobs:
check-version:
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml
index 5063cf19..c57d5d58 100644
--- a/.github/workflows/release-candidate.yml
+++ b/.github/workflows/release-candidate.yml
@@ -7,6 +7,9 @@ on:
jobs:
check-version:
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
outputs:
release-version: ${{ steps.version.outputs.version }}
steps:
@@ -54,17 +57,21 @@ jobs:
java-version: "21"
- name: Build API
+ working-directory: api
run: mvn package -Dchangelist=-rc --no-transfer-progress
- name: Upload API jar
uses: actions/upload-artifact@v4
with:
name: app-jar
- path: target/*.jar
+ path: api/target/*.jar
create-release-candidate:
needs: [ check-version, build-sources ]
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
with:
@@ -97,6 +104,9 @@ jobs:
docker:
needs: [ check-version, build-sources ]
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
@@ -104,7 +114,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: app-jar
- path: target/
+ path: api/target/
- name: Publish to Docker Hub
uses: elgohr/Publish-Docker-Github-Action@v5
@@ -113,4 +123,5 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
default_branch: ${{ github.ref }}
- tags: ${{ needs.check-version.outputs.release-version }}
\ No newline at end of file
+ tags: ${{ needs.check-version.outputs.release-version }}
+ workdir: api
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e1b89ac4..e31c9c34 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -21,6 +21,7 @@ jobs:
- name: Get source version
id: version-step
+ working-directory: api
run: echo "version=$(mvn -f pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
- name: Print source version
@@ -57,17 +58,21 @@ jobs:
- uses: actions/checkout@v4
- name: Build app
+ working-directory: api
run: mvn package --no-transfer-progress
- name: Upload app jar
uses: actions/upload-artifact@v4
with:
name: app-jar
- path: target/*.jar
+ path: api/target/*.jar
create-release:
needs: [ check-version, build-sources ]
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
with:
@@ -99,6 +104,9 @@ jobs:
docker:
needs: [ check-version, build-sources ]
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
@@ -106,7 +114,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: app-jar
- path: target/
+ path: api/target/
- name: Publish to Docker Hub
uses: elgohr/Publish-Docker-Github-Action@v5
@@ -115,4 +123,5 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
default_branch: ${{ github.ref }}
- tags: ${{ needs.check-version.outputs.release-version }}
\ No newline at end of file
+ tags: ${{ needs.check-version.outputs.release-version }}
+ workdir: api
\ No newline at end of file
diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml
index 0f15a018..3f634c2f 100644
--- a/.github/workflows/snapshot.yml
+++ b/.github/workflows/snapshot.yml
@@ -17,6 +17,9 @@ jobs:
check-version:
needs: verify-branch
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
outputs:
release-version: ${{ steps.version.outputs.version }}
steps:
@@ -52,6 +55,9 @@ jobs:
build-sources:
needs: check-version
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
@@ -68,11 +74,14 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: app-jar
- path: target/*.jar
+ path: api/target/*.jar
publish-docker:
needs: [ check-version, build-sources ]
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
@@ -80,7 +89,7 @@ jobs:
uses: actions/download-artifact@v4
with:
name: app-jar
- path: target/
+ path: api/target/
- name: Publish to Docker Hub
uses: elgohr/Publish-Docker-Github-Action@v5
@@ -89,4 +98,5 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
default_branch: ${{ github.ref }}
- tags: ${{ needs.check-version.outputs.release-version }}
\ No newline at end of file
+ tags: ${{ needs.check-version.outputs.release-version }}
+ workdir: api
\ No newline at end of file
diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml
index 96ee81bb..bbd81e83 100644
--- a/.github/workflows/sonar.yml
+++ b/.github/workflows/sonar.yml
@@ -11,6 +11,9 @@ jobs:
build:
name: Build and analyze
runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: api
steps:
- uses: actions/checkout@v4
with:
diff --git a/.env b/api/.env
similarity index 54%
rename from .env
rename to api/.env
index 0c28b048..2b1d58bf 100644
--- a/.env
+++ b/api/.env
@@ -5,3 +5,8 @@ PEARL_DB=pearl
KEYCLOAK_PORT=7080
KEYCLOAK_ADMIN_PASSWORD=administrator
+
+IMAGES_REGISTRY_DOCKER_IO=docker.io
+IMAGE_ACTIVEMQ=apache/activemq-artemis:2.32.0-alpine
+ARTEMIS_USER=insee
+ARTEMIS_PASSWORD=lille
\ No newline at end of file
diff --git a/Dockerfile b/api/Dockerfile
similarity index 100%
rename from Dockerfile
rename to api/Dockerfile
diff --git a/compose.yml b/api/compose.yml
similarity index 59%
rename from compose.yml
rename to api/compose.yml
index 473983ce..f87765f1 100644
--- a/compose.yml
+++ b/api/compose.yml
@@ -25,4 +25,18 @@ services:
ports:
- "${KEYCLOAK_PORT}:8080"
volumes:
- - ./container/keycloak/realms:/opt/keycloak/data/import
\ No newline at end of file
+ - ./container/keycloak/realms:/opt/keycloak/data/import
+ activemq:
+ image: ${IMAGES_REGISTRY_DOCKER_IO:-docker.io}/${IMAGE_ACTIVEMQ:-apache/activemq-artemis:2.32.0-alpine}
+ environment:
+ ARTEMIS_USER: ${ARTEMIS_USER:-insee}
+ ARTEMIS_PASSWORD: ${ARTEMIS_PASSWORD:-lille}
+ ports:
+ - "61616:61616"
+ - "8161:8161"
+ healthcheck:
+ test: ["CMD-SHELL", "nc -z localhost 61616 || exit 1"]
+ interval: 10s
+ timeout: 5s
+ retries: 10
+ start_period: 30s
\ No newline at end of file
diff --git a/container/keycloak/realms/sabiane.json b/api/container/keycloak/realms/sabiane.json
similarity index 100%
rename from container/keycloak/realms/sabiane.json
rename to api/container/keycloak/realms/sabiane.json
diff --git a/api/pom.xml b/api/pom.xml
new file mode 100644
index 00000000..8a8a52fa
--- /dev/null
+++ b/api/pom.xml
@@ -0,0 +1,249 @@
+
+
+ 4.0.0
+
+
+ fr.insee.pearljam
+ pearljam-back-office
+ ${revision}${changelist}
+
+
+ api
+ Pearl-Jam-Back-Office-API
+ Back-office API services for PearlJam
+
+ UTF-8
+ UTF-8
+ inseefr
+ https://sonarcloud.io
+ 7.21.1
+
+
+
+
+
+ fr.insee.pearljam
+ domain
+ ${revision}${changelist}
+
+
+
+
+ fr.insee.pearljam
+ domain
+ ${revision}${changelist}
+ test-jar
+ test
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+
+ com.h2database
+ h2
+ test
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-docker-compose
+
+
+
+ org.springframework.security
+ spring-security-test
+ test
+
+
+
+ com.tngtech.archunit
+ archunit
+ 1.3.0
+
+
+
+
+ org.junit.platform
+ junit-platform-suite
+ test
+
+
+ io.cucumber
+ cucumber-java
+ ${cucumber.version}
+ test
+
+
+ io.cucumber
+ cucumber-spring
+ ${cucumber.version}
+
+
+ io.cucumber
+ cucumber-junit-platform-engine
+ ${cucumber.version}
+
+
+
+
+
+ coverage
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.12
+
+
+ prepare-agent
+
+ prepare-agent
+
+
+
+ report
+
+ report
+
+
+
+ XML
+ HTML
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ build-info
+
+ build-info
+
+
+
+
+ true
+ true
+ -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+
+ insee
+ dev
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ ${java.version}
+ ${java.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
+
+ org.liquibase
+ liquibase-maven-plugin
+ ${liquibase.version}
+
+
+ org.javassist
+ javassist
+ 3.30.2-GA
+ compile
+
+
+ org.liquibase.ext
+ liquibase-hibernate6
+ ${liquibase.version}
+
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ 4.0.2
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+
+
+ src/main/resources/db/master.xml
+ src/main/resources/db/changelog/new_changelog.xml
+ org.postgresql.Driver
+ jdbc:postgresql://localhost:5432/pearljam_api
+ public
+ test,dev,prod
+
+
+
+ hibernate:spring:fr.insee.pearljam.api.domain?hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
+ public
+ true
+ debug
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.5.2
+
+
+ **/TestAuthKeyCloak
+ **/TestNoAuth
+ **/*Test
+ **/*TestRunner
+ **/*IT
+
+
+
+
+
+
+
diff --git a/src/main/java/fr/insee/pearljam/PearlJamApplication.java b/api/src/main/java/fr/insee/pearljam/PearlJamApplication.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/PearlJamApplication.java
rename to api/src/main/java/fr/insee/pearljam/PearlJamApplication.java
diff --git a/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java b/api/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java
rename to api/src/main/java/fr/insee/pearljam/api/campaign/controller/CommunicationTemplateController.java
diff --git a/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java b/api/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java
rename to api/src/main/java/fr/insee/pearljam/api/campaign/controller/VisibilityController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java b/api/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/CampaignController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/CampaignController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java b/api/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/ClosingCauseController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java b/api/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/ContactOutcomeController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java b/api/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/CustomStompSessionHandler.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/EnumController.java b/api/src/main/java/fr/insee/pearljam/api/controller/EnumController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/EnumController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/EnumController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java b/api/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/InterviewerController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/MessageController.java b/api/src/main/java/fr/insee/pearljam/api/controller/MessageController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/MessageController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/MessageController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java b/api/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/OrganizationUnitController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java b/api/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/PreferenceController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/StateController.java b/api/src/main/java/fr/insee/pearljam/api/controller/StateController.java
similarity index 100%
rename from src/main/java/fr/insee/pearljam/api/controller/StateController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/StateController.java
diff --git a/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java b/api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java
similarity index 99%
rename from src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java
rename to api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java
index 93a96a06..0b5a79d8 100644
--- a/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java
+++ b/api/src/main/java/fr/insee/pearljam/api/controller/SurveyUnitController.java
@@ -102,7 +102,7 @@ public ResponseEntity