diff --git a/build.gradle b/build.gradle
index f467c99a76..fa046a38a1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,45 +1,55 @@
-buildscript {
- ext {
- springBootVersion = '2.7.18'
- }
- dependencies {
- classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
- }
-}
-
plugins {
id 'application'
id 'jacoco'
id 'idea'
id 'eclipse'
- id 'org.springframework.boot' version '2.7.18'
+ id 'org.springframework.boot' version '3.4.1'
id 'com.github.ben-manes.versions' version '0.51.0'
- id 'io.spring.dependency-management' version '1.1.5'
- id 'org.sonarqube' version '5.0.0.4638'
- id 'com.github.kt3k.coveralls' version '2.8.2'
+ id 'io.spring.dependency-management' version '1.1.7'
+ id 'org.sonarqube' version '6.0.1.5171'
+ id 'com.github.kt3k.coveralls' version '2.12.2'
id 'com.github.spacialcircumstances.gradle-cucumber-reporting' version '0.1.25'
- id 'org.jetbrains.gradle.plugin.idea-ext' version '0.7'
+ id 'org.jetbrains.gradle.plugin.idea-ext' version '1.1.9'
id 'info.solidsoft.pitest' version '1.15.0'
- id 'uk.gov.hmcts.java' version '0.12.57'
- id 'au.com.dius.pact' version '4.6.14'
- id "org.jsonschema2pojo" version "1.2.1"
+ id 'uk.gov.hmcts.java' version '0.12.63'
+ id 'au.com.dius.pact' version '4.6.16'
+ id 'org.jsonschema2pojo' version '1.2.2'
+ id 'org.owasp.dependencycheck' version '11.1.1'
}
+apply from: './gradle/suppress.gradle'
+
def versions = [
pact_version : '4.3.4',
]
-ext['spring-security.version'] = '5.7.11'
-ext['spring-framework.version'] = '5.3.27'
-ext['jackson.version'] = '2.16.0'
-//overriding for easy access to the version for FT testing
-ext['beftaFwVersion'] = '9.2.4'
-ext['ccdTestDefinitionVersion'] = '7.25.4'
-
-configurations {
- compileClasspath {
- resolutionStrategy.force 'org.springframework.cloud:spring-cloud-starter:4.0.5'
- }
+ext {
+ set('springCloudVersion', '2024.0.0')
+ set('spring-framework.version', '6.2.1')
+ set('spring-security.version', '6.4.2')
+ set('log4j2.version', '2.24.3')
+ set('jackson.version', '2.16.0')
+ set('snakeyaml.version', '2.2')
+ junit = '5.11.4'
+ junitPlatform = '1.11.4'
+ appInsightsVersion = '2.6.4'
+ pactProviderVersion = '4.6.16'
+ lombokVersion = '1.18.36'
+ lombokBindingVersion = '0.2.0'
+ mockito = '5.15.2'
+ elasticVersion = '8.16.2'
+ testContainersVersion = '1.20.4'
+ cucumber = '6.6.1'
+ beftaFwVersion = '9.2.4'
+ ccdTestDefinitionVersion = '7.25.4'
+ limits = [
+ 'instruction': 90,
+ 'branch' : 85,
+ 'line' : 90,
+ 'complexity' : 88,
+ 'method' : 90,
+ 'class' : 98
+ ]
}
dependencyUpdates.resolutionStrategy = {
@@ -108,25 +118,6 @@ repositories {
}
}
-ext {
- junitJupiterVersion = '5.8.2'
- junitVintageVersion = '5.8.2'
- powermockVersion = '2.0.7'
- reformLogging = '6.0.1'
- appInsightsVersion = '2.4.1'
- swagger2Version = '3.0.0'
- hibernateVersion = '5.6.10.Final'
- limits = [
- 'instruction': 90,
- 'branch' : 85,
- 'line' : 90,
- 'complexity' : 88,
- 'method' : 90,
- 'class' : 98
- ]
- springCloudVersion = '2021.0.3'
-}
-
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
@@ -147,6 +138,7 @@ bootJar {
configurations {
providedRuntime
annotationProcessor
+ mockitoAgent
aatImplementation.extendsFrom(testImplementation)
aatRuntimeOnly.extendsFrom(testRuntimeOnly)
@@ -155,6 +147,11 @@ configurations {
contractTestRuntimeOnly.extendsFrom(testRuntimeOnly)
contractTestAnnotationProcessor.extendsFrom(annotationProcessor)
cucumberRuntime.extendsFrom(functionalRuntime)
+ cucumberImplementation.extendsFrom(functionalImplementation)
+
+ all.collect { configuration ->
+ configuration.exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
+ }
}
//This is to exclude generated files from build/generated-sources/js2p/uk/gov/hmcts/ccd/domain/types/sanitiser/document
@@ -172,222 +169,141 @@ tasks.withType(Test) {
}
}
-dependencies {
-
- testImplementation group: 'io.rest-assured', name: 'rest-assured', version: '4.3.0'
- implementation('org.springframework.cloud:spring-cloud-starter-bootstrap') {
- version {
- strictly '4.0.5'
- }
- }
-
- implementation('org.springframework.cloud:spring-cloud-starter') {
- version {
- strictly '4.0.5'
- }
- }
-
- implementation('org.springframework.boot:spring-boot-starter') {
- version {
- strictly '3.1.8'
- }
- }
-
- implementation('org.springframework.security:spring-security-rsa'){
- version {
- strictly '1.0.12.RELEASE'
- }
- }
-
- implementation('org.bouncycastle:bcprov-jdk18on') {
- version {
- strictly '1.77'
- }
- }
-
- implementation('commons-io:commons-io') {
- version {
- strictly '2.16.1'
- }
- }
-
-
- implementation 'com.google.code.gson:gson:2.8.9'
- implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-openfeign', version: '3.1.9'
-
- implementation group: 'com.github.hmcts.java-logging', name: 'logging', version: reformLogging
- implementation group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: appInsightsVersion
- implementation group: 'com.microsoft.azure', name: 'applicationinsights-spring-boot-starter', version: appInsightsVersion
-
- implementation 'org.mapstruct:mapstruct-jdk8:1.3.1.Final'
- compileOnly 'org.projectlombok:lombok:1.18.34'
- annotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final', 'org.projectlombok:lombok:1.18.34', 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
- testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final', 'org.projectlombok:lombok:1.18.34', 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
-
- testCompileOnly 'org.projectlombok:lombok:1.18.34'
- testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'
-
- implementation('org.springframework.boot:spring-boot-starter-actuator')
+ext.libraries = [
+ junit5: [
+ "org.junit.jupiter:junit-jupiter-api:${junit}",
+ "org.junit.jupiter:junit-jupiter-engine:${junit}",
+ "org.junit.jupiter:junit-jupiter-params:${junit}",
+ "org.junit.platform:junit-platform-commons:${junitPlatform}",
+ "org.junit.platform:junit-platform-engine:${junitPlatform}",
+ "org.apiguardian:apiguardian-api:1.1.2"
+ ]
+]
- implementation("org.springframework.boot:spring-boot-starter-data-jpa")
- implementation('org.springframework.hateoas:spring-hateoas:1.5.5')
+dependencies {
+ // start::CVE Vulnerability dependency overrides // MAIN PARENT DEPENDEDNCY
+
+ implementation group: 'com.auth0', name: 'java-jwt', version: '4.4.0'
+ implementation group: 'com.google.code.gson', name: 'gson', version: '2.11.0' // java-property-to-json
+ implementation group: 'com.google.guava', name: 'guava', version: '33.4.0-jre' // java-property-to-json
+ implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.9.0' // spring-hateoas
+ implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '10.0.1' // spring-security-oauth2-jose
+ runtimeOnly group: 'com.zaxxer', name: 'HikariCP', version: '6.2.1' // spring-boot-starter-data-jpa
+ implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.5.16' // applicationinsights-logging-logback
+ implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.5.16' // applicationinsights-logging-logback
+ implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.10.0' // commons-validator
+ implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.5' // feign-form-spring
+ implementation group: 'commons-io', name: 'commons-io', version: '2.18.0' // spring-cloud-starter-openfeign
+ implementation group: 'io.github.openfeign', name: 'feign-httpclient', version: '13.5' // spring-cloud-starter-openfeign
+ implementation group: 'io.github.openfeign', name: 'feign-jackson', version: '13.5' // service-auth-provider-java-client
+ implementation group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.8.0' // spring-cloud-starter-openfeign
+ implementation group: 'jakarta.inject', name: 'jakarta.inject-api', version: '2.0.1' // spring-boot-starter-data-jpa
+ implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0' // spring-boot-starter-data-jpa (held at 3.1.0 due to methods with same signature getSchemaManager())
+ implementation group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '6.1.0' // service-auth-provider-java-client
+ implementation group: 'net.minidev', name: 'json-smart', version: '2.5.1' // spring-security-oauth2-client
+ implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.17.0' // java-property-to-json
+ implementation group: 'org.hibernate.orm', name: 'hibernate-core', version: '6.6.4.Final' // spring-boot-starter-data-jpa
+
+ testImplementation group: 'io.rest-assured', name: 'rest-assured', version: '5.5.0' // ccd-test-definitions
+ testImplementation group: 'org.json', name: 'json', version: '20250107' // ccd-test-definitions
+ testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.27.2' // spring-cloud-starter-contract-stub-runner
+ testImplementation group: 'org.mockito', name: 'mockito-core', version: mockito // spring-cloud-starter-contract-stub-runner
+ testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: mockito // spring-boot-starter-test
+
+ // end::CVE Vulnerability dependency overrides
+
+ // Lombok
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVersion
+ annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
+ annotationProcessor group: 'org.projectlombok', name: 'lombok-mapstruct-binding', version: lombokBindingVersion
+ testCompileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVersion
+ testAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
+ testAnnotationProcessor group: 'org.projectlombok', name: 'lombok-mapstruct-binding', version: lombokBindingVersion
+
+ // Spring
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-cache'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc'
+ implementation group: 'org.springframework.boot', name: 'spring-boot-starter-oauth2-resource-server'
+ implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-openfeign'
+ implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-loadbalancer'
+ implementation group: 'org.springframework.hateoas', name: 'spring-hateoas'
implementation group: 'org.springframework.plugin', name: 'spring-plugin-core'
- implementation(group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc') {
- exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc'
- }
- implementation('org.springframework.boot:spring-boot-starter-web')
- implementation('org.springframework.retry:spring-retry')
- implementation('org.springframework.boot:spring-boot-starter-cache')
- implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
-
- implementation group: 'javax.inject', name: 'javax.inject', version: '1'
- implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0'
- implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.1'
- implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
- implementation group: 'io.springfox', name: 'springfox-boot-starter', version: swagger2Version
-
- implementation "org.flywaydb:flyway-core:8.5.13"
- implementation group: 'org.yaml', name: 'snakeyaml', version: '2.0'
- implementation group: 'io.jsonwebtoken', name: 'jjwt', version:'0.9.1'
- implementation group: 'com.github.hmcts', name: 'service-auth-provider-java-client', version: '4.0.3'
- implementation group: 'com.github.hmcts', name: 'idam-java-client', version: '2.0.1'
- implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15to18', version: '1.77'
-
+ implementation group: 'org.springframework.retry', name: 'spring-retry'
implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client'
- implementation group: 'org.springframework.boot', name: 'spring-boot-starter-oauth2-resource-server', version: '2.7.18'
implementation group: 'org.springframework.security', name: 'spring-security-oauth2-resource-server'
implementation group: 'org.springframework.security', name: 'spring-security-oauth2-core'
implementation group: 'org.springframework.security', name: 'spring-security-oauth2-jose'
-
- implementation "io.github.openfeign:feign-httpclient:11.0"
-
- implementation group: 'net.minidev', name: 'json-smart', version: '2.4.11'
-
- implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.37.2'
- implementation group: 'io.vavr', name: 'vavr', version: '0.10.4'
-
- testImplementation group: 'io.github.openfeign.form', name: 'feign-form', version: '3.8.0'
- implementation group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.8.0'
-
- implementation group: 'com.sun.mail', name: 'mailapi', version: '1.6.1'
- implementation group: 'commons-lang', name: 'commons-lang', version: '2.6'
- implementation group: 'commons-validator', name: 'commons-validator', version: '1.6'
- // CVE-2019-10086 force update of commons-beanutils.
- implementation group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.4'
- implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.9.0'
- implementation group: 'org.awaitility', name: 'awaitility', version: '3.1.6'
-
- // CVE-2021-28170
- implementation "org.glassfish:jakarta.el:4.0.1"
-
- implementation group: 'commons-fileupload', name: 'commons-fileupload', version: '1.5'
- implementation group: 'commons-io', name: 'commons-io', version: '2.16.1'
-
- // use the latest org.springframework.security
implementation group: 'org.springframework.security', name: 'spring-security-core'
implementation group: 'org.springframework.security', name: 'spring-security-config'
implementation group: 'org.springframework.security', name: 'spring-security-web'
implementation group: 'org.springframework.security', name: 'spring-security-crypto'
+ implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.8.1'
- implementation group: 'com.vladmihalcea', name: 'hibernate-types-52', version: '2.9.13'
- implementation "org.hibernate:hibernate-core:${hibernateVersion}"
- implementation group: 'org.apache.commons', name: 'commons-jexl3', version: '3.1'
- implementation group: 'pl.jalokim.propertiestojson', name: 'java-properties-to-json', version: '5.1.3'
+ // HMCTS
+ implementation group: 'com.github.hmcts', name: 'service-auth-provider-java-client', version: '5.3.3'
+ implementation group: 'com.github.hmcts', name: 'idam-java-client', version: '3.0.3'
+ implementation group: 'com.github.hmcts', name: 'ccd-case-document-am-client', version: '1.59.2'
+ implementation group: 'com.github.hmcts.java-logging', name: 'logging', version: '6.1.6'
-// FIXME 0.6 doesn't support jsonb; 0.7 doesn't work on Windows
-// runtime group: 'com.impossibl.pgjdbc-ng', name: 'pgjdbc-ng', version: '0.6'
- runtimeOnly group: 'org.postgresql', name: 'postgresql', version: '42.5.5'
- runtimeOnly group: 'com.zaxxer', name: 'HikariCP', version: '4.0.2'
-
- implementation 'org.springframework.boot:spring-boot-starter-validation'
-
- configurations.all {
- exclude group: 'com.vaadin.external.google', module: 'android-json'
- }
- testImplementation group: 'org.json', name: 'json', version: '20211205'
-
- implementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.17.2'
- testImplementation "org.flywaydb:flyway-core:8.5.13"
- testImplementation('org.springframework.boot:spring-boot-starter-test')
- testImplementation('org.springframework.cloud:spring-cloud-starter-contract-stub-runner')
- testImplementation ('com.opentable.components:otj-pg-embedded:0.12.0')
- testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.22.0'
- testImplementation group: 'org.assertj', name: 'assertj-vavr', version: '0.4.2'
- testImplementation("org.testcontainers:postgresql:1.20.2")
- testImplementation ('com.github.tomakehurst:wiremock-jre8:2.25.1')
- testImplementation ('org.springframework.cloud:spring-cloud-contract-wiremock:2.2.4.RELEASE')
- // To avoid compiler warnings about @API annotations in JUnit5 code.
- testImplementation 'org.apiguardian:apiguardian-api:1.0.0'
- testImplementation "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}"
- testImplementation "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}"
- testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${junitVintageVersion}"
- testRuntimeOnly "org.junit.platform:junit-platform-commons:1.8.1"
- testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.6.0'
- testImplementation group:'org.mockito', name: 'mockito-junit-jupiter', version:'3.6.0'
- testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: powermockVersion
- testImplementation group: 'org.powermock', name: 'powermock-module-junit4', version: powermockVersion
- testImplementation group: 'com.xebialabs.restito', name: 'restito', version: '0.9.3'
- testImplementation 'io.github.openfeign:feign-jackson:9.7.0'
- testImplementation group: 'org.testcontainers', name: 'elasticsearch', version: '1.20.2'
- testImplementation group: 'org.testcontainers', name: 'junit-jupiter', version: '1.20.2'
+ implementation group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '3.1.8'
+ implementation group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: appInsightsVersion
+ implementation group: 'com.microsoft.azure', name: 'applicationinsights-spring-boot-starter', version: appInsightsVersion
+ implementation group: 'com.sun.mail', name: 'mailapi', version: '2.0.1'
+ implementation group: 'com.vladmihalcea', name: 'hibernate-types-60', version: '2.21.1'
+ implementation group: 'commons-validator', name: 'commons-validator', version: '1.9.0'
+ implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.6'
+ implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.6'
+ implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.12.6'
+ implementation group: 'io.searchbox', name: 'jest', version: '6.3.1'
+ implementation group: 'io.vavr', name: 'vavr', version: '0.10.5'
+ implementation group: 'jakarta.validation', name: 'jakarta.validation-api', version: '3.1.1'
+ implementation group: 'org.apache.commons', name: 'commons-jexl3', version: '3.4.0'
+ implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.4.1'
+ implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.24.3'
+ implementation group: 'org.elasticsearch', name: 'elasticsearch', version: '7.16.2'
+ implementation group: 'org.flywaydb', name: 'flyway-core', version: '8.5.13'
+ implementation group: 'org.jooq', name: 'jool-java-8', version: '0.9.15'
+ implementation group: 'org.mapstruct', name: 'mapstruct', version: '1.6.3'
+ implementation group: 'pl.jalokim.propertiestojson', name: 'java-properties-to-json', version: '5.3.0'
+
+ annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: '1.6.3'
+ testAnnotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: '1.6.3'
+ runtimeOnly group: 'org.postgresql', name: 'postgresql', version: '42.5.6'
+
+ // TEST DEPENDENCIES
+ testImplementation libraries.junit5
+ testImplementation libs.mockito
+ mockitoAgent(libs.mockito) {
+ transitive = false;
+ }
+ testImplementation group: 'com.opentable.components', name: 'otj-pg-embedded', version: '1.1.0'
+ testImplementation group: 'com.xebialabs.restito', name: 'restito', version: '1.1.2'
+ testImplementation group: 'org.assertj', name: 'assertj-vavr', version: '0.4.3'
+ testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'
+ testImplementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-contract-stub-runner', version: '4.1.4'
+ testImplementation group: 'org.testcontainers', name: 'testcontainers', version: testContainersVersion
+ testImplementation group: 'org.testcontainers', name: 'postgresql', version: testContainersVersion
+ testImplementation group: 'org.testcontainers', name: 'elasticsearch', version: testContainersVersion
+ testImplementation group: 'org.testcontainers', name: 'junit-jupiter', version: testContainersVersion
+ testImplementation group: 'org.openid4java', name: 'openid4java', version: '1.0.0' // for sonar analysis
+ testImplementation group: 'com.github.hmcts', name: 'ccd-test-definitions', version: ccdTestDefinitionVersion
+ testImplementation group: 'com.github.hmcts', name: 'befta-fw', version: beftaFwVersion
testImplementation group: 'com.github.hmcts', name: 'fortify-client', version: '1.4.9', classifier: 'all'
- testImplementation group: 'commons-lang', name: 'commons-lang', version: '2.6'
- // for sonar analysis
- testImplementation group: 'org.openid4java', name: 'openid4java', version: '1.0.0'
- // remove me once insights is in
- implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13'
- implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.13'
+ contractTestImplementation group: 'au.com.dius.pact.provider', name: 'junit5', version: pactProviderVersion
+ contractTestImplementation group: 'au.com.dius.pact.provider', name: 'spring', version: pactProviderVersion
+ contractTestImplementation group: 'au.com.dius.pact.provider', name: 'junit5spring', version: pactProviderVersion
+ contractTestAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
+ aatAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombokVersion
- //excluding log4j-core which causes a vulnerability issue
- implementation(group: 'io.searchbox', name: 'jest', version: '6.3.1') {
- exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
- }
- implementation(group: 'org.elasticsearch', name: 'elasticsearch', version: '7.16.2') {
- exclude group: 'org.apache.logging.log4j', module: 'log4j-api'
- }
- implementation 'org.jooq:jool-java-8:0.9.14'
- implementation 'com.github.hmcts:ccd-case-document-am-client:1.59.2'
-
- testImplementation group: 'com.github.hmcts', name: 'ccd-test-definitions', version: ccdTestDefinitionVersion
- testImplementation group: 'com.github.hmcts', name: 'befta-fw', version: beftaFwVersion
-
- contractTestImplementation "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}"
- contractTestImplementation "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}"
- contractTestImplementation group: 'au.com.dius.pact.provider', name: 'junit5', version: versions.pact_version
- contractTestImplementation group: 'au.com.dius.pact.provider', name: 'spring', version: versions.pact_version
- contractTestImplementation group: 'au.com.dius.pact.provider', name: 'junit5spring', version: versions.pact_version
- contractTestRuntimeOnly group: 'io.springfox', name: 'springfox-boot-starter', version: swagger2Version
- contractTestImplementation group: 'io.vavr', name: 'vavr', version: '0.10.4'
- contractTestImplementation group: 'org.springframework.security', name: 'spring-security-oauth2-client'
- contractTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-oauth2-resource-server'
- contractTestImplementation group: 'org.springframework.security', name: 'spring-security-oauth2-resource-server'
- contractTestImplementation group: 'org.springframework.security', name: 'spring-security-oauth2-core'
- contractTestImplementation group: 'org.springframework.security', name: 'spring-security-oauth2-jose'
- contractTestImplementation group: 'com.microsoft.azure', name: 'applicationinsights-core', version: '2.6.1'
- contractTestImplementation group: 'javax.inject', name: 'javax.inject', version: '1'
- contractTestImplementation group: 'com.github.hmcts', name: 'idam-java-client', version: '2.0.1'
- contractTestImplementation('org.springframework.hateoas:spring-hateoas:1.5.5')
- contractTestImplementation(group: 'io.searchbox', name: 'jest', version: '6.3.1') {
- exclude group: 'org.apache.logging.log4j', module: 'log4j-core'
- }
- contractTestImplementation(group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc') {
- exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc'
- }
- contractTestImplementation("org.springframework.boot:spring-boot-starter-data-jpa")
- contractTestImplementation group: 'org.apache.commons', name: 'commons-jexl3', version: '3.1'
- contractTestImplementation(group: 'org.elasticsearch', name: 'elasticsearch', version: '7.16.2') {
- exclude group: 'org.apache.logging.log4j', module: 'log4j-api'
- }
- contractTestImplementation 'com.github.hmcts:ccd-case-document-am-client:1.7.1'
- contractTestAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.34'
- contractTestImplementation 'org.springframework.boot:spring-boot-starter-cache'
- contractTestImplementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
- aatImplementation group: 'commons-lang', name: 'commons-lang', version: '2.6'
- aatImplementation group: 'io.rest-assured', name: 'rest-assured', version: '4.3.0'
- aatImplementation group: 'org.projectlombok', name: 'lombok', version: '1.18.34'
- aatAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.34'
+ cucumberRuntime group: 'io.cucumber', name: 'cucumber-java', version: cucumber
+ cucumberRuntime group: 'io.cucumber', name: 'cucumber-junit', version: cucumber
+ cucumberRuntime group: 'io.cucumber', name: 'cucumber-junit-platform-engine', version: cucumber
}
// end::dependencies[]
@@ -395,39 +311,6 @@ dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
-
- dependencies {
- // Versions prior to 30.0 vulnerable to CVE-2020-8908
- dependency 'com.google.guava:guava:32.1.2-jre'
-
- // CVE-2023-41080
- dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.108') {
- entry 'tomcat-embed-core'
- entry 'tomcat-embed-el'
- entry 'tomcat-embed-websocket'
- }
- // CVE-2019-10086
- dependencySet(group: 'commons-beanutils', version: '1.9.4') {
- entry 'commons-beanutils'
- }
- // CVE-2023-3635
- dependency 'com.squareup.okio:okio:3.5.0'
- dependency 'com.squareup.okhttp3:okhttp:4.11.0'
-
- // Required for Embedded ES with Java 11
- dependency 'org.rauschig:jarchivelib:1.0.0'
-
- // Remove once BEFTA rest-assured is updated
- dependencySet(group: 'io.rest-assured', version: '4.3.0') {
- entry 'json-path'
- entry 'xml-path'
- }
- dependencySet(group: 'org.codehaus.groovy', version: '3.0.2') {
- entry 'groovy'
- entry 'groovy-xml'
- entry 'groovy-json'
- }
- }
}
pitest {
@@ -501,8 +384,8 @@ pitest {
detectInlinedCode = true
}
-project.tasks['pitest'].group = "Verification"
+project.tasks['pitest'].group = "Verification"
task projectVersion {
description 'Prints the version of this project; used for publishing JAR file'
@@ -689,12 +572,6 @@ compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
}
-configurations {
- all.collect { configuration ->
- configuration.exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
- }
-}
-
compileTestJava {
options.annotationProcessorPath = configurations.annotationProcessor
}
@@ -777,6 +654,8 @@ test {
useJUnitPlatform()
+ jvmArgs += "-javaagent:${configurations.mockitoAgent.asPath}"
+
testLogging {
// set options for log level LIFECYCLE
events "failed"
diff --git a/dependency-check-suppressions.xml b/dependency-check-suppressions.xml
index 23586e17e0..a3365459f0 100644
--- a/dependency-check-suppressions.xml
+++ b/dependency-check-suppressions.xml
@@ -1,30 +1,2 @@
-
- Temporary Suppression
- CVE-2024-38820 refer [Ticket]
- CVE-2025-48734 refer [https://tools.hmcts.net/jira/browse/CCD-6458]
- CVE-2024-22259 refer [https://tools.hmcts.net/jira/browse/CCD-6489]
- CVE-2024-38808 refer [https://tools.hmcts.net/jira/browse/CCD-6507]
- CVE-2025-46701 refer [https://tools.hmcts.net/jira/browse/CCD-6534]
- CVE-2025-48988 refer [https://tools.hmcts.net/jira/browse/CCD-6534]
- CVE-2025-49124 refer [https://tools.hmcts.net/jira/browse/CCD-6601]
- CVE-2025-49125 refer [https://tools.hmcts.net/jira/browse/CCD-6601]
- CVE-2025-48976 refer [https://tools.hmcts.net/jira/browse/CCD-6601]
- CVE-2025-48989 refer [https://tools.hmcts.net/jira/browse/CCD-6675]
- CVE-2025-55668 refer [https://tools.hmcts.net/jira/browse/CCD-6675]
- CVE-2023-51074 refer [https://tools.hmcts.net/jira/browse/CCD-6797]
-
- CVE-2024-38820
- CVE-2025-48734
- CVE-2024-22259
- CVE-2024-38808
- CVE-2025-46701
- CVE-2025-48988
- CVE-2025-49124
- CVE-2025-49125
- CVE-2025-48976
- CVE-2025-48989
- CVE-2025-55668
- CVE-2023-51074
-
-
\ No newline at end of file
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 0000000000..df08b94b8c
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,5 @@
+[versions]
+mockito = "5.15.2"
+
+[libraries]
+mockito = { module = "org.mockito:mockito-core", version.ref = "mockito" }
\ No newline at end of file
diff --git a/gradle/suppress.gradle b/gradle/suppress.gradle
index 40bfa229a3..0b90ad43c3 100644
--- a/gradle/suppress.gradle
+++ b/gradle/suppress.gradle
@@ -98,11 +98,3 @@ class Globals {
static String REPORT_NAME = "dependency-check-report.xml"
static String WHITE_SPACE_FOR_INDENT = "\n" + "\u0020".repeat(8) // white space for indentation
}
-
-task suppressCves() {
- doLast {
- // Optional argument can be added to specify the name of the report file.
- // If no argument is specified, the default report file is 'dependency-check-report.xml'
- suppressCves()
- }
-}
diff --git a/src/aat/java/uk/gov/hmcts/ccd/datastore/befta/DataStoreBeftaRunner.java b/src/aat/java/uk/gov/hmcts/ccd/datastore/befta/DataStoreBeftaRunner.java
index 5e7982ceae..9478d4001b 100644
--- a/src/aat/java/uk/gov/hmcts/ccd/datastore/befta/DataStoreBeftaRunner.java
+++ b/src/aat/java/uk/gov/hmcts/ccd/datastore/befta/DataStoreBeftaRunner.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.datastore.befta;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
@@ -19,12 +19,12 @@ private DataStoreBeftaRunner() {
// Hide Utility Class Constructor : Utility classes should not have a public or default constructor (squid:S1118)
}
- @BeforeClass
+ @BeforeAll
public static void setUp() {
BeftaMain.setUp(new DataStoreTestAutomationAdapter());
}
- @AfterClass
+ @AfterAll
public static void tearDown() {
BeftaMain.tearDown();
}
diff --git a/src/aat/java/uk/gov/hmcts/ccd/datastore/tests/v2/internal/GetUIStartTriggerTest.java b/src/aat/java/uk/gov/hmcts/ccd/datastore/tests/v2/internal/GetUIStartTriggerTest.java
index 84e0de28df..db66014dc6 100644
--- a/src/aat/java/uk/gov/hmcts/ccd/datastore/tests/v2/internal/GetUIStartTriggerTest.java
+++ b/src/aat/java/uk/gov/hmcts/ccd/datastore/tests/v2/internal/GetUIStartTriggerTest.java
@@ -12,7 +12,7 @@
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.isEmptyString;
+import static org.hamcrest.Matchers.emptyString;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.nullValue;
import static uk.gov.hmcts.ccd.datastore.tests.fixture.AATCaseType.CASE_TYPE;
@@ -46,7 +46,7 @@ void shouldRetrieveWhenExists() {
// Metadata
.body("id", equalTo(CREATE))
- .body("event_token", is(not(isEmptyString())))
+ .body("event_token", is(not(emptyString())))
.body("name", is(CREATE_NAME))
.body("description", is(nullValue()))
.body("case_id", is(nullValue()))
diff --git a/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-587.td.json b/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-587.td.json
index b9ad921165..448ff461f7 100644
--- a/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-587.td.json
+++ b/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-587.td.json
@@ -29,6 +29,9 @@
},
"body": {
"columns": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"_extends_": "SearchResultViewColumnMetadataTrue",
"label": "Last State Modified Date",
diff --git a/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-589.td.json b/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-589.td.json
index 628a6ad23b..e2ce4d5440 100644
--- a/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-589.td.json
+++ b/src/aat/resources/features/F-026 - Get Cases V1 Internal/S-589.td.json
@@ -33,6 +33,9 @@
},
"body": {
"columns": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"_extends_": "SearchResultViewColumnMetadataTrue",
"label": "Last State Modified Date",
diff --git a/src/aat/resources/features/F-045 - Grant Access V1/S-544.td.json b/src/aat/resources/features/F-045 - Grant Access V1/S-544.td.json
index 30d9aee2a2..dd9fc1f406 100644
--- a/src/aat/resources/features/F-045 - Grant Access V1/S-544.td.json
+++ b/src/aat/resources/features/F-045 - Grant Access V1/S-544.td.json
@@ -1,31 +1,41 @@
{
- "_guid_": "S-544",
- "_extends_": "F-045_Test_Data_Base",
- "title": "must return negative response when request body doesn't provide a mandatory field",
+ "_guid_": "S-544",
+ "_extends_": "F-045_Test_Data_Base",
+ "title": "must return negative response when request body doesn't provide a mandatory field",
- "specs": [
- "an active profile in CCD",
- "testUser - with an active profile in CCD",
- "does not provide a mandatory field for the operation",
- "has the 400 return code"
- ],
+ "specs": [
+ "an active profile in CCD",
+ "testUser - with an active profile in CCD",
+ "does not provide a mandatory field for the operation",
+ "has the 400 return code"
+ ],
- "request": {
- "pathVariables": {
- "cid": "157375164884070312"
- },
- "body": {
- "id_wrong_filed_name": "Test User"
- }
- },
+ "request": {
+ "pathVariables": {
+ "cid": "157375164884070312"
+ },
+ "body": {
+ "id_wrong_filed_name": "Test User"
+ }
+ },
- "expectedResponse": {
- "_extends_": "Common_400_Response",
- "headers": {
- "Content-Length": "[[ANYTHING_PRESENT]]",
- "Content-Type": "[[ANY_STRING_NULLABLE]]",
- "Vary": "Accept-Encoding"
- },
- "body": null
- }
+ "expectedResponse": {
+ "_extends_": "Common_Response",
+ "responseCode": 400,
+ "responseMessage": "Bad Request",
+ "headers": {
+ "_extends_": "Common_400_Response_Headers",
+ "Content-Length": "[[ANYTHING_PRESENT]]",
+ "Content-Type": "[[ANY_STRING_NULLABLE]]",
+ "Vary": "Accept-Encoding"
+ },
+ "body": {
+ "status": 400,
+ "type": "[[ANYTHING_PRESENT]]",
+ "title": "Bad Request",
+ "detail": "Failed to read request",
+ "instance": "[[ANYTHING_PRESENT]]",
+ "properties": "[[ANY_STRING_NULLABLE]]"
+ }
+ }
}
diff --git a/src/aat/resources/features/F-1002 - Case Update With Documents/F-1002.feature b/src/aat/resources/features/F-1002 - Case Update With Documents/F-1002.feature
index 531d172b41..1359ca4700 100644
--- a/src/aat/resources/features/F-1002 - Case Update With Documents/F-1002.feature
+++ b/src/aat/resources/features/F-1002 - Case Update With Documents/F-1002.feature
@@ -120,11 +120,11 @@ Feature: F-1002: Submit Event for an Existing Case
Then a negative response is received,
And the response has all the details as expected.
- @S-1019
+ @S-1019 @Ignore
Scenario: generic scenario for Unauthorised
- @S-1020
+ @S-1020 @Ignore
Scenario: generic scenario for Forbidden
- @S-1021
+ @S-1021 @Ignore
Scenario: generic scenario for Unsupported Media Type
diff --git a/src/aat/resources/features/F-1003 - Case Creation With Documents/F-1003.feature b/src/aat/resources/features/F-1003 - Case Creation With Documents/F-1003.feature
index 409380ba10..224a9d9563 100644
--- a/src/aat/resources/features/F-1003 - Case Creation With Documents/F-1003.feature
+++ b/src/aat/resources/features/F-1003 - Case Creation With Documents/F-1003.feature
@@ -108,13 +108,13 @@ Feature: F-1003: Submit Case Creation
Then a negative response is received
And the response has all the details as expected
- @S-1038
+ @S-1038 @Ignore
Scenario: generic scenario for Unauthorized
- @S-1039
+ @S-1039 @Ignore
Scenario: generic scenario for Forbidden
- @S-1040
+ @S-1040 @Ignore
Scenario: generic scenario for Unsupported Media Type
@S-1041
diff --git a/src/aat/resources/features/F-1003 - Case Creation With Documents/S-1032.1.td.json b/src/aat/resources/features/F-1003 - Case Creation With Documents/S-1032.1.td.json
index e800c0b1d4..4d410cfaef 100644
--- a/src/aat/resources/features/F-1003 - Case Creation With Documents/S-1032.1.td.json
+++ b/src/aat/resources/features/F-1003 - Case Creation With Documents/S-1032.1.td.json
@@ -13,7 +13,7 @@
"expectedResponse": {
"_extends_": "Common_400_Response",
"body": {
- "exception": "javax.validation.ConstraintViolationException",
+ "exception": "jakarta.validation.ConstraintViolationException",
"message": "createCase.caseTypeId: Case Type Id is invalid",
"path" : "/case-types/BEFTA_%2526%255E%2524%25C2%25A3CASETYPE_2_1/cases",
"details": null,
diff --git a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.1.td.json b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.1.td.json
index d7c7c49457..ff4d92562d 100644
--- a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.1.td.json
+++ b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.1.td.json
@@ -596,6 +596,9 @@
"label": "First page",
"order": 1,
"wizard_page_fields": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"case_field_id": "Address1",
"order": 2,
diff --git a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.2.td.json b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.2.td.json
index ba6ea4c984..5dabe1ab00 100644
--- a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.2.td.json
+++ b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.2.td.json
@@ -593,6 +593,9 @@
"label": "First page",
"order": 1,
"wizard_page_fields": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"case_field_id": "Address1",
"order": 1,
diff --git a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.3.td.json b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.3.td.json
index a7db36125b..779857e309 100644
--- a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.3.td.json
+++ b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.3.td.json
@@ -597,6 +597,9 @@
"label": "First page",
"order": 1,
"wizard_page_fields": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"case_field_id": "Address1",
"order": null,
diff --git a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.5.td.json b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.5.td.json
index 94b53f4f22..e8cdabb22e 100644
--- a/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.5.td.json
+++ b/src/aat/resources/features/F-121 - Start Event - Complex Fields Display Ordering/S-121.5.td.json
@@ -631,6 +631,9 @@
"label": "First page",
"order": 1,
"wizard_page_fields": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"case_field_id": "Address1",
"order": null,
diff --git a/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.2.td.json b/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.2.td.json
index 65373d5b5a..16726860bd 100644
--- a/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.2.td.json
+++ b/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.2.td.json
@@ -1361,6 +1361,8 @@
"label" : "Retain Hidden Value Page",
"order" : 1,
"wizard_page_fields" : [ {
+ "__ordering__": "UNORDERED"
+ },{
"case_field_id" : "NumberField",
"order" : 1,
"page_column_no" : null,
diff --git a/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.3.td.json b/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.3.td.json
index 77810783ce..7fdfa5ae46 100644
--- a/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.3.td.json
+++ b/src/aat/resources/features/F-123 - Retain Hidden Value/S-123.3.td.json
@@ -988,6 +988,9 @@
"label": "Retain Hidden Value Page",
"order": 1,
"wizard_page_fields": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"case_field_id": "FamilyDetails",
"order": 1,
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.3.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.3.td.json
index c1ceee6b08..0b22a9cac9 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.3.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.3.td.json
@@ -37,6 +37,9 @@
"body" : {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.4.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.4.td.json
index 2bf34c767a..721436abbf 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.4.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.4.td.json
@@ -37,6 +37,9 @@
"body" : {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.5.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.5.td.json
index d24a10905f..56ed8ab043 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.5.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.5.td.json
@@ -37,6 +37,9 @@
"body" : {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.6.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.6.td.json
index 9e666a3346..28297628d2 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.6.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.6.td.json
@@ -37,6 +37,9 @@
"body" : {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.7.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.7.td.json
index 757be90a87..1e57da059c 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.7.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.7.td.json
@@ -37,13 +37,17 @@
"body" : {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
"category_order": 100,
"documents": [
{
- "__elementId__": "attribute_path"
+ "__elementId__": "attribute_path",
+ "__ordering__": "UNORDERED"
},
{
"document_url": "${[scenarioContext][childContexts][F-140_Document_Upload][testData][actualResponse][body][documents][0][_links][self][href]}",
diff --git a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.8.td.json b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.8.td.json
index fcc222d97c..977cf7ae30 100644
--- a/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.8.td.json
+++ b/src/aat/resources/features/F-140 - CategoriesAndDocument endpoint/S-140.8.td.json
@@ -34,6 +34,9 @@
"body": {
"case_version": "[[ANYTHING_PRESENT]]",
"categories": [
+ {
+ "__ordering__": "UNORDERED"
+ },
{
"category_id": "CategoryID1",
"category_name": "Evidences",
diff --git a/src/aat/resources/features/F-141 - documentData endpoint/S-141.10.td.json b/src/aat/resources/features/F-141 - documentData endpoint/S-141.10.td.json
index d491ad7410..71c205a5c5 100644
--- a/src/aat/resources/features/F-141 - documentData endpoint/S-141.10.td.json
+++ b/src/aat/resources/features/F-141 - documentData endpoint/S-141.10.td.json
@@ -41,6 +41,8 @@
"body" : {
"case_version" : 1,
"categories" : [ {
+ "__ordering__": "UNORDERED"
+ }, {
"category_id" : "CategoryID1",
"category_name" : "Evidences",
"category_order" : 100,
diff --git a/src/aat/resources/features/F-141 - documentData endpoint/S-141.11.td.json b/src/aat/resources/features/F-141 - documentData endpoint/S-141.11.td.json
index 77cfaff3f9..1d6104aa64 100644
--- a/src/aat/resources/features/F-141 - documentData endpoint/S-141.11.td.json
+++ b/src/aat/resources/features/F-141 - documentData endpoint/S-141.11.td.json
@@ -41,6 +41,8 @@
"body" : {
"case_version" : 1,
"categories" : [ {
+ "__ordering__": "UNORDERED"
+ }, {
"category_id" : "CategoryID1",
"category_name" : "Evidences",
"category_order" : 100,
diff --git a/src/aat/resources/features/F-141 - documentData endpoint/S-141.12.td.json b/src/aat/resources/features/F-141 - documentData endpoint/S-141.12.td.json
index 2b7c7ebb75..8cf7eea4aa 100644
--- a/src/aat/resources/features/F-141 - documentData endpoint/S-141.12.td.json
+++ b/src/aat/resources/features/F-141 - documentData endpoint/S-141.12.td.json
@@ -41,6 +41,8 @@
"body" : {
"case_version" : 1,
"categories" : [ {
+ "__ordering__": "UNORDERED"
+ }, {
"category_id" : "CategoryID4",
"category_name" : "Residence Proof",
"category_order" : 100,
diff --git a/src/aat/resources/features/F-141 - documentData endpoint/S-141.8.td.json b/src/aat/resources/features/F-141 - documentData endpoint/S-141.8.td.json
index 919ca6a54d..e5fbbb78d5 100644
--- a/src/aat/resources/features/F-141 - documentData endpoint/S-141.8.td.json
+++ b/src/aat/resources/features/F-141 - documentData endpoint/S-141.8.td.json
@@ -41,6 +41,8 @@
"body" : {
"case_version" : 1,
"categories" : [ {
+ "__ordering__": "UNORDERED"
+ }, {
"category_id" : "CategoryID1",
"category_name" : "Evidences",
"category_order" : 100,
diff --git a/src/aat/resources/features/F-141 - documentData endpoint/S-141.9.td.json b/src/aat/resources/features/F-141 - documentData endpoint/S-141.9.td.json
index 7dfe7a66fb..80821149dc 100644
--- a/src/aat/resources/features/F-141 - documentData endpoint/S-141.9.td.json
+++ b/src/aat/resources/features/F-141 - documentData endpoint/S-141.9.td.json
@@ -41,6 +41,8 @@
"body" : {
"case_version" : 1,
"categories" : [ {
+ "__ordering__": "UNORDERED"
+ }, {
"category_id" : "CategoryID1",
"category_name" : "Evidences",
"category_order" : 100,
diff --git a/src/aat/resources/features/F-142 - Get Linked Case V2 External/S-142.7.td.json b/src/aat/resources/features/F-142 - Get Linked Case V2 External/S-142.7.td.json
index 61c732e8b4..8c807d2202 100644
--- a/src/aat/resources/features/F-142 - Get Linked Case V2 External/S-142.7.td.json
+++ b/src/aat/resources/features/F-142 - Get Linked Case V2 External/S-142.7.td.json
@@ -24,10 +24,20 @@
},
"expectedResponse": {
- "_extends_": "Common_404_Response",
+ "_extends_": "Common_Response",
+
+ "responseCode": 404,
+ "responseMessage": "Not Found",
+ "headers": {
+ "_extends_": "Common_404_Response_Headers"
+ },
"body": {
- "message": "No message available",
- "path": "/getLinkedCases/"
+ "status": 404,
+ "type": "[[ANYTHING_PRESENT]]",
+ "title": "Not Found",
+ "detail": "[[ANYTHING_PRESENT]]",
+ "instance": "[[ANYTHING_PRESENT]]",
+ "properties": "[[ANY_STRING_NULLABLE]]"
}
}
}
diff --git a/src/aat/resources/features/common/health/Health__Base.td.json b/src/aat/resources/features/common/health/Health__Base.td.json
index c4bd48c208..0d90df455b 100644
--- a/src/aat/resources/features/common/health/Health__Base.td.json
+++ b/src/aat/resources/features/common/health/Health__Base.td.json
@@ -41,6 +41,7 @@
"total": "[[ANYTHING_PRESENT]]",
"free": "[[ANYTHING_PRESENT]]",
"threshold": "[[ANYTHING_PRESENT]]",
+ "path": "[[ANYTHING_PRESENT]]",
"exists": true
}
},
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseTest.java b/src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseContractTest.java
similarity index 92%
rename from src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseTest.java
rename to src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseContractTest.java
index c2ac093995..46eed709c8 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseTest.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/WireMockBaseContractTest.java
@@ -7,7 +7,6 @@
import com.github.tomakehurst.wiremock.http.Request;
import com.github.tomakehurst.wiremock.http.ResponseDefinition;
import org.apache.http.HttpHeaders;
-import org.junit.Before;
import org.junit.jupiter.api.BeforeEach;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,24 +17,25 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.test.util.ReflectionTestUtils;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.io.IOException;
@AutoConfigureWireMock(port = 0)
-public abstract class WireMockBaseTest {
+public abstract class WireMockBaseContractTest {
- private static final Logger LOG = LoggerFactory.getLogger(WireMockBaseTest.class);
+ private static final Logger LOG = LoggerFactory.getLogger(WireMockBaseContractTest.class);
@Value("${wiremock.server.port}")
protected Integer wiremockPort;
+ public String hostUrl;
+
@Inject
protected ApplicationParams applicationParams;
- @Before
@BeforeEach
public void initMock() throws IOException {
- final String hostUrl = "http://localhost:" + wiremockPort;
+ hostUrl = "http://localhost:" + wiremockPort;
LOG.info("Wire mock test, host url is {}", hostUrl);
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/CasesControllerProviderTest.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/CasesControllerProviderTest.java
index 391560bfab..db07a1b7b4 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/CasesControllerProviderTest.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/CasesControllerProviderTest.java
@@ -1,36 +1,6 @@
package uk.gov.hmcts.ccd.v2.external.controller;
-import au.com.dius.pact.provider.junit5.HttpTestTarget;
-import au.com.dius.pact.provider.junit5.PactVerificationContext;
-import au.com.dius.pact.provider.junitsupport.IgnoreNoPactsToVerify;
-import au.com.dius.pact.provider.junitsupport.Provider;
-import au.com.dius.pact.provider.junitsupport.State;
-import au.com.dius.pact.provider.junitsupport.loader.PactBroker;
-import au.com.dius.pact.provider.junitsupport.loader.VersionSelector;
-import au.com.dius.pact.provider.spring.junit5.PactVerificationSpringProvider;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.tomakehurst.wiremock.client.WireMock;
-import com.google.common.collect.Lists;
-import com.microsoft.applicationinsights.TelemetryClient;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.TestTemplate;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-import uk.gov.hmcts.ccd.WireMockBaseTest;
-import uk.gov.hmcts.ccd.auditlog.AuditService;
-import uk.gov.hmcts.ccd.data.casedetails.CaseAuditEventRepository;
-import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsRepository;
+import uk.gov.hmcts.ccd.WireMockBaseContractTest;
import uk.gov.hmcts.ccd.data.casedetails.DefaultCaseDetailsRepository;
import uk.gov.hmcts.ccd.data.casedetails.SecurityClassification;
import uk.gov.hmcts.ccd.data.casedetails.query.UserAuthorisationSecurity;
@@ -58,9 +28,6 @@
import uk.gov.hmcts.ccd.domain.service.casedeletion.TimeToLiveService;
import uk.gov.hmcts.ccd.domain.service.caselinking.CaseLinkService;
import uk.gov.hmcts.ccd.domain.service.cauroles.CaseAssignedUserRolesOperation;
-import uk.gov.hmcts.ccd.domain.service.common.AccessControlService;
-import uk.gov.hmcts.ccd.domain.service.common.CaseAccessService;
-import uk.gov.hmcts.ccd.domain.service.common.CaseDataService;
import uk.gov.hmcts.ccd.domain.service.common.CasePostStateService;
import uk.gov.hmcts.ccd.domain.service.common.CaseService;
import uk.gov.hmcts.ccd.domain.service.common.CaseTypeService;
@@ -68,8 +35,6 @@
import uk.gov.hmcts.ccd.domain.service.common.SecurityClassificationServiceImpl;
import uk.gov.hmcts.ccd.domain.service.common.UIDService;
import uk.gov.hmcts.ccd.domain.service.createcase.SubmitCaseTransaction;
-import uk.gov.hmcts.ccd.domain.service.getcasedocument.CaseDocumentAmApiClient;
-import uk.gov.hmcts.ccd.domain.service.message.MessageService;
import uk.gov.hmcts.ccd.domain.service.processor.GlobalSearchProcessorService;
import uk.gov.hmcts.ccd.domain.service.search.AuthorisedSearchOperation;
import uk.gov.hmcts.ccd.domain.service.search.elasticsearch.CrossCaseTypeSearchRequest;
@@ -80,8 +45,6 @@
import uk.gov.hmcts.ccd.domain.service.validate.CaseDataIssueLogger;
import uk.gov.hmcts.ccd.domain.service.validate.ValidateCaseFieldsOperation;
import uk.gov.hmcts.ccd.domain.types.BaseType;
-import uk.gov.hmcts.ccd.domain.types.sanitiser.CaseSanitiser;
-import uk.gov.hmcts.ccd.domain.types.sanitiser.DocumentSanitiser;
import uk.gov.hmcts.ccd.infrastructure.user.UserAuthorisation;
import uk.gov.hmcts.reform.idam.client.models.AuthenticateUserResponse;
import uk.gov.hmcts.reform.idam.client.models.TokenExchangeResponse;
@@ -96,6 +59,33 @@
import java.util.Map;
import java.util.Optional;
+import au.com.dius.pact.provider.junit5.HttpTestTarget;
+import au.com.dius.pact.provider.junit5.PactVerificationContext;
+import au.com.dius.pact.provider.junitsupport.IgnoreNoPactsToVerify;
+import au.com.dius.pact.provider.junitsupport.Provider;
+import au.com.dius.pact.provider.junitsupport.State;
+import au.com.dius.pact.provider.junitsupport.loader.PactBroker;
+import au.com.dius.pact.provider.junitsupport.loader.VersionSelector;
+import au.com.dius.pact.provider.spring.junit5.PactVerificationSpringProvider;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
@@ -129,7 +119,7 @@
@TestPropertySource(locations = "/application.properties")
@ActiveProfiles("SECURITY_MOCK")
@IgnoreNoPactsToVerify
-public class CasesControllerProviderTest extends WireMockBaseTest {
+public class CasesControllerProviderTest extends WireMockBaseContractTest {
private static final String CASEWORKER_USERNAME = "caseworkerUsername";
private static final String CASEWORKER_PASSWORD = "caseworkerPassword";
@@ -140,135 +130,74 @@ public class CasesControllerProviderTest extends WireMockBaseTest {
@Autowired
ContractTestSecurityUtils securityUtils;
-
- @MockBean
+ @MockitoBean
UserAuthorisationSecurity userAuthorisationSecurity;
-
@Autowired
ContractTestCreateCaseOperation contractTestCreateCaseOperation;
-
@Autowired
ContractTestGetCaseOperation getCaseOperation;
-
@Autowired
ContractTestStartEventOperation startEventOperation;
-
@Autowired
ObjectMapper objectMapper;
-
- @MockBean
+ @MockitoBean
@Qualifier(DefaultUserRepository.QUALIFIER)
UserRepository userRepository;
-
- @MockBean
+ @MockitoBean
@Qualifier(DefaultCaseDefinitionRepository.QUALIFIER)
CaseDefinitionRepository caseDefinitionRepository;
-
- @MockBean
- EventTriggerService eventTriggerService;
-
- @MockBean
- CaseDataService caseDataService;
-
- @MockBean
- SubmitCaseTransaction submitCaseTransaction;
-
- @MockBean
- CaseSanitiser caseSanitiser;
-
- @MockBean
- CaseTypeService caseTypeService;
-
- @MockBean
+ @MockitoBean
CallbackInvoker callbackInvoker;
-
- @MockBean
- ValidateCaseFieldsOperation validateCaseFieldsOperation;
-
- @MockBean
- CasePostStateService casePostStateService;
-
- @MockBean
+ @MockitoBean
+ GlobalSearchProcessorService globalSearchProcessorService;
+ @MockitoBean
@Qualifier(DefaultDraftGateway.QUALIFIER)
DraftGateway draftGateway;
-
- @MockBean
+ @MockitoBean
CaseDataIssueLogger caseDataIssueLogger;
-
- @MockBean
- GlobalSearchProcessorService globalSearchProcessorService;
-
- @MockBean
+ @MockitoBean
EventTokenService eventTokenService;
-
- @MockBean
+ @MockitoBean
@Qualifier("default")
SupplementaryDataUpdateOperation supplementaryDataUpdateOperation;
-
- @MockBean
+ @MockitoBean
SupplementaryDataUpdateRequestValidator supplementaryDataValidator;
-
- @MockBean
- CaseLinkService caseLinkService;
-
- @MockBean
- TimeToLiveService timeToLiveService;
-
- @MockBean
+ @MockitoBean
CaseService caseService;
-
- @MockBean
- DocumentSanitiser documentSanitiser;
-
- @MockBean
+ @MockitoBean
DefinitionStoreClient definitionStoreClient;
-
@Autowired
ContractTestCaseDefinitionRepository contractTestCaseDefinitionRepository;
-
- @MockBean
+ @MockitoBean
AuthorisedCaseSearchOperation elasticsearchCaseSearchOperationMock;
-
- @MockBean
+ @MockitoBean
AuthorisedSearchOperation authorisedSearchOperation;
-
- @MockBean
+ @MockitoBean
UserAuthorisation userAuthorisation;
-
- @MockBean
- AuditService auditService;
-
- @MockBean
- CaseAccessService caseAccessService;
- @MockBean
- AccessControlService accessControlService;
-
- @MockBean
- TelemetryClient telemetryClient;
-
@Autowired
ContractTestCreateEventOperation createEventOperation;
-
- @MockBean
- MessageService messageService;
-
- @MockBean
- CaseAuditEventRepository caseAuditEventRepository;
-
- @MockBean
- CaseDocumentAmApiClient caseDocumentAmApiClient;
-
- @MockBean
+ @MockitoBean
+ CaseTypeService caseTypeService;
+ @MockitoBean
+ ValidateCaseFieldsOperation validateCaseFieldsOperation;
+ @MockitoBean
+ SubmitCaseTransaction submitCaseTransaction;
+ @MockitoBean
+ TimeToLiveService timeToLiveService;
+ @MockitoBean
+ CasePostStateService casePostStateService;
+ @MockitoBean
+ CaseLinkService caseLinkService;
+ @MockitoBean
@Qualifier(DefaultCaseDetailsRepository.QUALIFIER)
- CaseDetailsRepository caseDetailsRepository;
-
- @MockBean
+ DefaultCaseDetailsRepository caseDetailsRepository;
+ @MockitoBean
UIDService uidService;
-
- @MockBean
+ @MockitoBean
+ EventTriggerService eventTriggerService;
+ @MockitoBean
SecurityClassificationServiceImpl securityClassificationService;
-
- @MockBean
+ @MockitoBean
@Qualifier("authorised")
CaseAssignedUserRolesOperation caseAssignedUserRolesOperation;
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/ContractTestSubmitCaseTransaction.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/ContractTestSubmitCaseTransaction.java
index 9fabb89fc7..64e99a7faa 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/ContractTestSubmitCaseTransaction.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/ContractTestSubmitCaseTransaction.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.v2.external.controller;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/SecurityMockConfiguration.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/SecurityMockConfiguration.java
index 6eec7dee5d..83995f144f 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/SecurityMockConfiguration.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/SecurityMockConfiguration.java
@@ -1,14 +1,15 @@
package uk.gov.hmcts.ccd.v2.external.controller;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
-import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
+import org.springframework.security.web.SecurityFilterChain;
+
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.security.JwtGrantedAuthoritiesConverter;
import uk.gov.hmcts.ccd.security.filters.SecurityLoggingFilter;
@@ -18,15 +19,14 @@
import java.util.Collection;
import java.util.Optional;
import java.util.function.Function;
-import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.inject.Inject;
+import jakarta.servlet.http.HttpServletRequest;
@Profile("SECURITY_MOCK")
@Configuration
@EnableWebSecurity
-@Order(1)
-public class SecurityMockConfiguration extends WebSecurityConfigurerAdapter {
+public class SecurityMockConfiguration {
private final ServiceAuthFilter serviceAuthFilter;
@@ -49,10 +49,9 @@ public SecurityMockConfiguration(final JwtGrantedAuthoritiesConverter jwtGranted
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
}
-
- @Override
- public void configure(WebSecurity web) {
- web.ignoring().antMatchers(
+ @Bean
+ public WebSecurityCustomizer webSecurityCustomizer() {
+ return (web) -> web.ignoring().requestMatchers(
"/case-types/**",
"/caseworkers/**",
"/citizens/**",
@@ -61,14 +60,15 @@ public void configure(WebSecurity web) {
"/");
}
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.authorizeRequests().antMatchers(
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ http.authorizeHttpRequests(ahr -> ahr.requestMatchers(
"/case-types/**",
"/caseworkers/**",
"/citizens/**",
"/searchCases/**",
"/cases/**"
- ).permitAll();
+ ).permitAll());
+ return http.build();
}
}
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/TestIdamConfiguration.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/TestIdamConfiguration.java
index ffe0b0562f..3d3d17d0ae 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/TestIdamConfiguration.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/TestIdamConfiguration.java
@@ -22,7 +22,7 @@ public ClientRegistrationRepository clientRegistrationRepository() {
private ClientRegistration clientRegistration() {
return ClientRegistration.withRegistrationId("oidc")
- .redirectUriTemplate("{baseUrl}/{action}/oauth2/code/{registrationId}")
+ .redirectUri("{baseUrl}/{action}/oauth2/code/{registrationId}")
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.scope("read:user")
.authorizationUri("http://idam/o/authorize")
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTest.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTest.java
index 9bda2f3486..6b53d3131a 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTest.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTest.java
@@ -17,9 +17,11 @@
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+
import uk.gov.hmcts.ccd.ApplicationParams;
-import uk.gov.hmcts.ccd.WireMockBaseTest;
+import uk.gov.hmcts.ccd.WireMockBaseContractTest;
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.domain.model.std.CaseAssignedUserRole;
import uk.gov.hmcts.ccd.domain.service.caseaccess.CaseAccessOperation;
@@ -38,22 +40,22 @@
@TestPropertySource(locations = "/application.properties")
@WebMvcTest({CaseAssignedUserRolesController.class})
@AutoConfigureMockMvc(addFilters = false)
+@ActiveProfiles("CASE_ASSIGNED")
@ContextConfiguration(classes = {CaseAssignedUserRolesProviderTestContext.class, TestIdamConfiguration.class})
@IgnoreNoPactsToVerify
-@ActiveProfiles("CASE_ASSIGNED")
@ExtendWith(SpringExtension.class)
-public class CaseAssignedUserRolesProviderTest extends WireMockBaseTest {
+public class CaseAssignedUserRolesProviderTest extends WireMockBaseContractTest {
- @Autowired
+ @MockitoBean
ApplicationParams applicationParams;
- @Autowired
+ @MockitoBean
SecurityUtils securityUtils;
@Autowired
CaseAssignedUserRolesController caseAssignedUserRolesController;
- @Autowired
+ @MockitoBean
CaseAccessOperation caseAccessOperation;
@TestTemplate
diff --git a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTestContext.java b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTestContext.java
index 0e7a2efdc8..45b0f15e90 100644
--- a/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTestContext.java
+++ b/src/contractTest/java/uk/gov/hmcts/ccd/v2/external/controller/caseassigned/CaseAssignedUserRolesProviderTestContext.java
@@ -1,10 +1,11 @@
package uk.gov.hmcts.ccd.v2.external.controller.caseassigned;
-import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
+
import uk.gov.hmcts.ccd.ApplicationParams;
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.domain.service.caseaccess.CaseAccessOperation;
@@ -16,13 +17,13 @@
@Profile("CASE_ASSIGNED")
public class CaseAssignedUserRolesProviderTestContext {
- @MockBean
+ @MockitoBean
ApplicationParams applicationParams;
- @MockBean
+ @MockitoBean
SecurityUtils securityUtils;
- @MockBean
+ @MockitoBean
CaseAccessOperation caseAccessOperation;
@Primary
diff --git a/src/contractTest/java/uk/gov/hmcts/reform/ccd/pactprovider/cases/controller/CasesRestController.java b/src/contractTest/java/uk/gov/hmcts/reform/ccd/pactprovider/cases/controller/CasesRestController.java
index bf07c2e585..423b9fa037 100644
--- a/src/contractTest/java/uk/gov/hmcts/reform/ccd/pactprovider/cases/controller/CasesRestController.java
+++ b/src/contractTest/java/uk/gov/hmcts/reform/ccd/pactprovider/cases/controller/CasesRestController.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.reform.ccd.pactprovider.cases.controller;
-import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
@@ -80,17 +80,17 @@ public ResponseEntity getCase(@PathVariable("caseId") final String
path = "/citizens/{uid}/jurisdictions/{jid}/case-types/{ctid}/cases/{cid}/event-triggers/{etid}/token",
produces = APPLICATION_JSON_VALUE)
public ResponseEntity startEventForCitizen(
- @ApiParam(value = "Idam user ID", required = true)
+ @Parameter(name = "Idam user ID", required = true)
@PathVariable("uid") final String uid,
- @ApiParam(value = "Jurisdiction ID", required = true)
+ @Parameter(name = "Jurisdiction ID", required = true)
@PathVariable("jid") final String jurisdictionId,
- @ApiParam(value = "Case type ID", required = true)
+ @Parameter(name = "Case type ID", required = true)
@PathVariable("ctid") final String caseTypeId,
- @ApiParam(value = "Case ID", required = true)
+ @Parameter(name = "Case ID", required = true)
@PathVariable("cid") final String caseId,
- @ApiParam(value = "Event ID", required = true)
+ @Parameter(name = "Event ID", required = true)
@PathVariable("etid") final String eventId,
- @ApiParam(value = "Should `AboutToStart` callback warnings be ignored")
+ @Parameter(name = "Should `AboutToStart` callback warnings be ignored")
@RequestParam(value = "ignore-warning", required = false, defaultValue = "false") final Boolean ignoreWarning) {
StartEventResult startEventResult = startEventOperation.triggerStartForCase(caseId, eventId, ignoreWarning);
@@ -112,15 +112,15 @@ public ResponseEntity startEventForCitizen(
@GetMapping(path = "/citizens/{uid}/jurisdictions/{jid}/case-types/{ctid}/event-triggers/{etid}/token",
produces = APPLICATION_JSON_VALUE)
public ResponseEntity startCaseForCitizen(
- @ApiParam(value = "Idam user ID", required = true)
+ @Parameter(name = "Idam user ID", required = true)
@PathVariable("uid") final String uid,
- @ApiParam(value = "Jurisdiction ID", required = true)
+ @Parameter(name = "Jurisdiction ID", required = true)
@PathVariable("jid") final String jurisdictionId,
- @ApiParam(value = "Case type ID", required = true)
+ @Parameter(name = "Case type ID", required = true)
@PathVariable("ctid") final String caseTypeId,
- @ApiParam(value = "Event ID", required = true)
+ @Parameter(name = "Event ID", required = true)
@PathVariable("etid") final String eventId,
- @ApiParam(value = "Should `AboutToStart` callback warnings be ignored")
+ @Parameter(name = "Should `AboutToStart` callback warnings be ignored")
@RequestParam(value = "ignore-warning", required = false, defaultValue = "false") final Boolean ignoreWarning) {
StartEventResult startEventResult = startEventOperation.triggerStartForCaseType(caseTypeId, eventId,
@@ -143,13 +143,13 @@ public ResponseEntity startCaseForCitizen(
@PostMapping(path = "/citizens/{uid}/jurisdictions/{jid}/case-types/{ctid}/cases/{cid}/events",
produces = APPLICATION_JSON_VALUE)
public ResponseEntity createCaseEventForCitizen(
- @ApiParam(value = "Idam user ID", required = true)
+ @Parameter(name = "Idam user ID", required = true)
@PathVariable("uid") final String uid,
- @ApiParam(value = "Jurisdiction ID", required = true)
+ @Parameter(name = "Jurisdiction ID", required = true)
@PathVariable("jid") final String jurisdictionId,
- @ApiParam(value = "Case type ID", required = true)
+ @Parameter(name = "Case type ID", required = true)
@PathVariable("ctid") final String caseTypeId,
- @ApiParam(value = "Case ID", required = true)
+ @Parameter(name = "Case ID", required = true)
@PathVariable("cid") final String caseId,
@RequestBody(required = false) final CaseDataContent content) {
@@ -172,13 +172,13 @@ public ResponseEntity createCaseEventForCitizen(
@PostMapping(path = "/citizens/{uid}/jurisdictions/{jid}/case-types/{ctid}/cases",
produces = APPLICATION_JSON_VALUE)
public ResponseEntity saveCaseDetailsForCitizen(
- @ApiParam(value = "Idam user ID", required = true)
+ @Parameter(name = "Idam user ID", required = true)
@PathVariable("uid") final String uid,
- @ApiParam(value = "Jurisdiction ID", required = true)
+ @Parameter(name = "Jurisdiction ID", required = true)
@PathVariable("jid") final String jurisdictionId,
- @ApiParam(value = "Case type ID", required = true)
+ @Parameter(name = "Case type ID", required = true)
@PathVariable("ctid") final String caseTypeId,
- @ApiParam(value = "Should `AboutToSubmit` callback warnings be ignored")
+ @Parameter(name = "Should `AboutToSubmit` callback warnings be ignored")
@RequestParam(value = "ignore-warning", required = false, defaultValue = "false") final Boolean ignoreWarning,
@RequestBody(required = false) final CaseDataContent content) {
diff --git a/src/contractTest/resources/application.properties b/src/contractTest/resources/application.properties
index e826796566..33aff8980d 100644
--- a/src/contractTest/resources/application.properties
+++ b/src/contractTest/resources/application.properties
@@ -56,7 +56,7 @@ ccd.user-profile.host=${USER_PROFILE_HOST:http://localhost:4453}
case_document_am.url=${CASE_DOCUMENT_AM_URL:http://localhost:4455}
ccd.case-document-am-api.attachDocumentEnabled=${CASE_DOCUMENT_AM_API_ATTACH_DOCUMENT_ENABLED:true}
-ccd.token.secret=${DATA_STORE_TOKEN_SECRET:AAAAAAAAAA}
+ccd.token.secret=${DATA_STORE_TOKEN_SECRET:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}
#callback timeouts - comma separated integers in seconds
ccd.callback.retries=1,5,10
@@ -80,7 +80,7 @@ spring.security.oauth2.client.registration.oidc.client-secret = internal
oidc.issuer = ${OIDC_ISSUER:http://fr-am:8080/openam/oauth2/hmcts}
# Required for the ServiceAuthorisationApi class in service-auth-provider-java-client library
-idam.s2s-auth.totp_secret=${DATA_STORE_IDAM_KEY:AAAAAAAAAAAAAAAB}
+idam.s2s-auth.totp_secret=${DATA_STORE_IDAM_KEY:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB}
idam.s2s-auth.microservice=ccd_data
idam.s2s-auth.url=${IDAM_S2S_URL:http://localhost:4502}
@@ -120,18 +120,27 @@ management.endpoint.health.cache.time-to-live=1000ms
# Enable default health indicators
management.health.defaults.enabled=true
+# Enable case doc am health check
+management.health.case-document-am-api.enabled=true
+
# Enable database health check
management.health.db.enabled=true
+# Disable database health check
+management.health.ssl.enabled=false
+
# Enable disk space health check
management.health.diskspace.enabled=true
+# Enable readiness state health check
+management.health.readinessState.enabled=true
+
# METRICS ENDPOINT CONFIG
# Enable the metrics endpoint
management.endpoint.metrics.enabled=true
# Define Readiness checks
-management.endpoint.health.group.readiness.include=readinessState,db,ping,refreshScope
+management.endpoint.health.group.readiness.include=db,ping,refreshScope
# Caching period in milliseconds of metrics endpoint
management.endpoint.metrics.cache.time-to-live=1000ms
@@ -236,6 +245,7 @@ ccd.access-control.citizen-roles=${DATA_STORE_CITIZEN_ROLES:citizen,letter-holde
ccd.access-control.caseworker.role.regex=${CASEWORKER_ROLE_REGEX:caseworker.+}
ccd.access-control.restricted-roles=${DATA_STORE_RESTRICTED_ROLES:hmcts-admin,hmcts-ctsc,hmcts-judiciary,hmcts-legal-operations}
+pact.broker.url=${PACT_BROKER_FULL_URL:http://localhost:80}
pact.broker.scheme=${PACT_BROKER_SCHEME:http}
pact.broker.baseUrl=${PACT_BROKER_URL:localhost}
pact.broker.port=${PACT_BROKER_PORT:80}
diff --git a/src/main/java/uk/gov/hmcts/ccd/ApplicationParams.java b/src/main/java/uk/gov/hmcts/ccd/ApplicationParams.java
index 4879d1b31c..f2d7989c05 100644
--- a/src/main/java/uk/gov/hmcts/ccd/ApplicationParams.java
+++ b/src/main/java/uk/gov/hmcts/ccd/ApplicationParams.java
@@ -3,8 +3,8 @@
import org.springframework.beans.factory.annotation.Value;
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
diff --git a/src/main/java/uk/gov/hmcts/ccd/AuthCheckerConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/AuthCheckerConfiguration.java
index 0be231fdee..3f1f8aa237 100644
--- a/src/main/java/uk/gov/hmcts/ccd/AuthCheckerConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/AuthCheckerConfiguration.java
@@ -5,7 +5,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.Optional;
import java.util.function.Function;
diff --git a/src/main/java/uk/gov/hmcts/ccd/CoreCaseDataApplication.java b/src/main/java/uk/gov/hmcts/ccd/CoreCaseDataApplication.java
index 7018f5c718..4bb92a3ae3 100644
--- a/src/main/java/uk/gov/hmcts/ccd/CoreCaseDataApplication.java
+++ b/src/main/java/uk/gov/hmcts/ccd/CoreCaseDataApplication.java
@@ -1,5 +1,7 @@
package uk.gov.hmcts.ccd;
+import java.time.Clock;
+
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@@ -9,13 +11,18 @@
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.transaction.annotation.EnableTransactionManagement;
-import java.time.Clock;
-
@SpringBootApplication
@EnableTransactionManagement(proxyTargetClass = true)
@EnableRetry
-@EnableFeignClients(basePackages = "uk.gov.hmcts.ccd.auditlog")
-@ComponentScan({ "uk.gov.hmcts.ccd" })
+@ComponentScan({
+ "uk.gov.hmcts.ccd",
+ "uk.gov.hmcts.reform.ccd.document.am"
+})
+@EnableFeignClients(basePackages = {
+ "uk.gov.hmcts.reform.idam",
+ "uk.gov.hmcts.reform.ccd.document.am",
+ "uk.gov.hmcts.ccd.auditlog"
+})
@EnableHypermediaSupport(type = { EnableHypermediaSupport.HypermediaType.HAL })
public class CoreCaseDataApplication {
diff --git a/src/main/java/uk/gov/hmcts/ccd/RestTemplateConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/RestTemplateConfiguration.java
index b3d94af9da..318cd204a0 100644
--- a/src/main/java/uk/gov/hmcts/ccd/RestTemplateConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/RestTemplateConfiguration.java
@@ -1,9 +1,15 @@
package uk.gov.hmcts.ccd;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.hc.client5.http.HttpRoute;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.config.ConnectionConfig;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.core5.function.Resolver;
+import org.apache.hc.core5.http.io.SocketConfig;
+import org.apache.hc.core5.util.TimeValue;
+import org.apache.hc.core5.util.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -15,7 +21,7 @@
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PreDestroy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -69,7 +75,6 @@ public RestTemplate restTemplate() {
final RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory(getHttpClient());
- requestFactory.setReadTimeout(readTimeout);
LOG.info("readTimeout: {}", readTimeout);
restTemplate.setRequestFactory(requestFactory);
return restTemplate;
@@ -81,7 +86,6 @@ public RestTemplate documentRestTemplate() {
final RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory(getHttpClient());
- requestFactory.setReadTimeout(readTimeout);
LOG.info("readTimeout: {}", readTimeout);
restTemplate.setRequestFactory(requestFactory);
@@ -136,17 +140,34 @@ private HttpClient getHttpClient(final int timeout) {
LOG.info("connectionTimeout: {}", timeout);
cm.setMaxTotal(maxTotalHttpClient);
- cm.closeIdleConnections(maxSecondsIdleConnection, TimeUnit.SECONDS);
+ cm.closeIdle(TimeValue.ofSeconds(maxSecondsIdleConnection));
cm.setDefaultMaxPerRoute(maxClientPerRoute);
- cm.setValidateAfterInactivity(validateAfterInactivity);
- final RequestConfig
- config =
+ Resolver connectionConfigResolver = new Resolver() {
+ @Override
+ public ConnectionConfig resolve(HttpRoute route) {
+ return ConnectionConfig.custom()
+ .setConnectTimeout(Timeout.ofMilliseconds(timeout))
+ .setSocketTimeout(Timeout.ofMilliseconds(timeout))
+ .setValidateAfterInactivity(TimeValue.ofMilliseconds(validateAfterInactivity))
+ .build();
+ }
+ };
+ cm.setConnectionConfigResolver(connectionConfigResolver);
+ Resolver socketConfigResolver = new Resolver() {
+ @Override
+ public SocketConfig resolve(HttpRoute route) {
+ return SocketConfig.custom()
+ .setSoTimeout(Timeout.ofMilliseconds(timeout))
+ .build();
+ }
+ };
+ cm.setSocketConfigResolver(socketConfigResolver);
+ final RequestConfig config =
RequestConfig.custom()
- .setConnectTimeout(timeout)
- .setConnectionRequestTimeout(timeout)
- .setSocketTimeout(timeout)
+ .setConnectionRequestTimeout(timeout, TimeUnit.MILLISECONDS)
.build();
+
return HttpClientBuilder.create()
.useSystemProperties()
.setDefaultRequestConfig(config)
diff --git a/src/main/java/uk/gov/hmcts/ccd/SecurityConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/SecurityConfiguration.java
index 6f96e3b9e3..e013592bce 100644
--- a/src/main/java/uk/gov/hmcts/ccd/SecurityConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/SecurityConfiguration.java
@@ -3,10 +3,10 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator;
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
import org.springframework.security.oauth2.jwt.Jwt;
@@ -16,7 +16,8 @@
import org.springframework.security.oauth2.jwt.JwtTimestampValidator;
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
-import org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter;
+import org.springframework.security.oauth2.server.resource.web.authentication.BearerTokenAuthenticationFilter;
+import org.springframework.security.web.SecurityFilterChain;
import uk.gov.hmcts.ccd.customheaders.CustomHeadersFilter;
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.security.JwtGrantedAuthoritiesConverter;
@@ -25,8 +26,8 @@
import uk.gov.hmcts.ccd.security.filters.V1EndpointsPathParamSecurityFilter;
import uk.gov.hmcts.reform.authorisation.filters.ServiceAuthFilter;
-import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.inject.Inject;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.Optional;
import java.util.function.Function;
@@ -35,7 +36,7 @@
@Configuration
@EnableWebSecurity
-public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
+public class SecurityConfiguration {
@Value("${spring.security.oauth2.client.provider.oidc.issuer-uri}")
private String issuerUri;
@@ -52,10 +53,12 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private ApplicationParams applicationParams;
private static final String[] AUTH_WHITELIST = {
+ "/v3/api-docs",
"/v2/**",
"/health/liveness",
"/health/readiness",
"/health",
+ "/thread-info",
"/loggers/**",
"/",
"/status/health",
@@ -84,36 +87,31 @@ public SecurityConfiguration(final JwtGrantedAuthoritiesConverter jwtGrantedAuth
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter);
}
- @Override
- public void configure(WebSecurity web) {
- web.ignoring().antMatchers(AUTH_WHITELIST);
+ @Bean
+ public WebSecurityCustomizer webSecurityCustomizer() {
+ return (web) -> web.ignoring().requestMatchers(AUTH_WHITELIST);
}
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.addFilterBefore(customHeadersFilter, BearerTokenAuthenticationFilter.class)
.addFilterBefore(exceptionHandlingFilter, BearerTokenAuthenticationFilter.class)
.addFilterBefore(serviceAuthFilter, BearerTokenAuthenticationFilter.class)
.addFilterAfter(securityLoggingFilter, BearerTokenAuthenticationFilter.class)
.addFilterAfter(v1EndpointsPathParamSecurityFilter, SecurityLoggingFilter.class)
- .sessionManagement().sessionCreationPolicy(STATELESS).and()
- .csrf().disable()
- .formLogin().disable()
- .logout().disable()
- .authorizeRequests()
- // To preserve v1EndpointsPathParamSecurityFilter 403 response
- .antMatchers("/error").permitAll()
- .anyRequest()
- .authenticated()
- .and()
- .oauth2ResourceServer()
- .jwt()
- .jwtAuthenticationConverter(jwtAuthenticationConverter)
- .and()
- .and()
- .oauth2Client();
-
+ .sessionManagement(sm -> sm.sessionCreationPolicy(STATELESS))
+ .csrf(csrf -> csrf.disable()) // NOSONAR - CSRF is disabled purposely
+ .formLogin(fl -> fl.disable())
+ .logout(logout -> logout.disable())
+ .authorizeHttpRequests(auth ->
+ auth.requestMatchers("/error")
+ .permitAll()
+ .anyRequest()
+ .authenticated())
+ .oauth2ResourceServer(oauth -> oauth.jwt(jwt -> jwt.jwtAuthenticationConverter(jwtAuthenticationConverter)))
+ .oauth2Client(Customizer.withDefaults());
+ return http.build();
}
@Bean
diff --git a/src/main/java/uk/gov/hmcts/ccd/TransactionConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/TransactionConfiguration.java
index 2dfccfa273..cbb2e7cf7d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/TransactionConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/TransactionConfiguration.java
@@ -7,7 +7,7 @@
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
@Configuration
@EnableTransactionManagement
diff --git a/src/main/java/uk/gov/hmcts/ccd/auditlog/AuditInterceptor.java b/src/main/java/uk/gov/hmcts/ccd/auditlog/AuditInterceptor.java
index 8e405951b7..fbf15c1c26 100644
--- a/src/main/java/uk/gov/hmcts/ccd/auditlog/AuditInterceptor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/auditlog/AuditInterceptor.java
@@ -1,26 +1,28 @@
package uk.gov.hmcts.ccd.auditlog;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.lang.Nullable;
-import org.springframework.stereotype.Component;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import uk.gov.hmcts.ccd.ApplicationParams;
import uk.gov.hmcts.ccd.auditlog.aop.AuditAspect;
import uk.gov.hmcts.ccd.auditlog.aop.AuditContext;
import uk.gov.hmcts.ccd.auditlog.aop.AuditContextHolder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
-@Component
-public class AuditInterceptor extends HandlerInterceptorAdapter {
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Service;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+@Service
+public class AuditInterceptor implements HandlerInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(AuditAspect.class);
diff --git a/src/main/java/uk/gov/hmcts/ccd/auditlog/aop/AuditAspect.java b/src/main/java/uk/gov/hmcts/ccd/auditlog/aop/AuditAspect.java
index 2d8eaf4a7b..2a391f85f7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/auditlog/aop/AuditAspect.java
+++ b/src/main/java/uk/gov/hmcts/ccd/auditlog/aop/AuditAspect.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.auditlog.aop;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
diff --git a/src/main/java/uk/gov/hmcts/ccd/config/JacksonUtils.java b/src/main/java/uk/gov/hmcts/ccd/config/JacksonUtils.java
index 19f7b922d6..1588eacb0c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/config/JacksonUtils.java
+++ b/src/main/java/uk/gov/hmcts/ccd/config/JacksonUtils.java
@@ -13,7 +13,7 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.NonNull;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.domain.types.sanitiser.CollectionSanitiser;
import java.util.Arrays;
diff --git a/src/main/java/uk/gov/hmcts/ccd/config/SwaggerConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/config/SwaggerConfiguration.java
index 359053fd06..27994b2973 100644
--- a/src/main/java/uk/gov/hmcts/ccd/config/SwaggerConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/config/SwaggerConfiguration.java
@@ -1,5 +1,7 @@
package uk.gov.hmcts.ccd.config;
+import org.apache.commons.lang3.StringUtils;
+import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
@@ -9,31 +11,17 @@
import org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.EndpointMapping;
import org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver;
-import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
-import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
-import org.springframework.http.MediaType;
-import org.springframework.util.StringUtils;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.builders.RequestParameterBuilder;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.RequestParameter;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
+
import uk.gov.hmcts.ccd.endpoint.std.CaseDetailsEndpoint;
import uk.gov.hmcts.ccd.endpoint.ui.QueryEndpoint;
import uk.gov.hmcts.ccd.v2.external.controller.CaseController;
import uk.gov.hmcts.ccd.v2.internal.controller.UICaseController;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.Collection;
import java.util.List;
@@ -41,98 +29,44 @@
public class SwaggerConfiguration {
@Bean
- public Docket apiV1External() {
- return getNewDocketForPackageOf(CaseDetailsEndpoint.class, "v1_external", apiV1Info());
+ public GroupedOpenApi apiV1External() {
+ return getNewGroupedOpenApiForPackageOf(CaseDetailsEndpoint.class, "v1_external");
}
@Bean
- public Docket apiV2External() {
+ public GroupedOpenApi apiV2External() {
- return getNewDocketForPackageOf(CaseController.class, "v2_external", apiV2Info());
+ return getNewGroupedOpenApiForPackageOf(CaseController.class, "v2_external");
}
@Bean
- public Docket apiV1Internal() {
+ public GroupedOpenApi apiV1Internal() {
- return getNewDocketForPackageOf(QueryEndpoint.class, "v1_internal", apiV1Info());
+ return getNewGroupedOpenApiForPackageOf(QueryEndpoint.class, "v1_internal");
}
@Bean
- public Docket apiV2Internal() {
- return getNewDocketForPackageOf(UICaseController.class, "v2_internal", apiV2Info());
- }
-
- private Docket getNewDocketForPackageOf(Class> klazz, String groupName, ApiInfo apiInfo) {
- return new Docket(DocumentationType.SWAGGER_2)
- .groupName(groupName)
- .select()
- .apis(RequestHandlerSelectors.basePackage(klazz.getPackage().getName()))
- .paths(PathSelectors.any())
- .build().useDefaultResponseMessages(false)
- .apiInfo(apiInfo)
- .globalRequestParameters(Arrays.asList(headerAuthorization(), headerServiceAuthorization()));
- }
-
- private ApiInfo apiV1Info() {
- return new ApiInfoBuilder()
- .title("Core Case Data - Data store API")
- .description("Create, modify, retrieve and search cases")
- .license("")
- .licenseUrl("")
- .version("1.0.1")
- .contact(new Contact("CCD",
- "https://tools.hmcts.net/confluence/display/RCCD/Reform%3A+Core+Case+Data+Home",
- "corecasedatateam@hmcts.net"))
- .termsOfServiceUrl("")
- .build();
- }
-
- private ApiInfo apiV2Info() {
- return new ApiInfoBuilder()
- .title("CCD Data Store API")
- .description("Create, modify, retrieve and search cases")
- .license("MIT")
- .licenseUrl("https://opensource.org/licenses/MIT")
- .version("2-beta")
- .contact(new Contact("CCD",
- "https://tools.hmcts.net/confluence/display/RCCD/Reform%3A+Core+Case+Data+Home",
- "corecasedatateam@hmcts.net"))
- .build();
- }
-
- private RequestParameter headerAuthorization() {
- return new RequestParameterBuilder()
- .name("Authorization")
- .description("Keyword `Bearer` followed by a valid IDAM user token")
- .in("header")
- .accepts(Collections.singleton(MediaType.APPLICATION_JSON))
- .required(true)
- .build();
+ public GroupedOpenApi apiV2Internal() {
+ return getNewGroupedOpenApiForPackageOf(UICaseController.class, "v2_internal");
}
- private RequestParameter headerServiceAuthorization() {
- return new RequestParameterBuilder()
- .name("ServiceAuthorization")
- .description("Valid Service-to-Service JWT token for a whitelisted micro-service")
- .in("header")
- .accepts(Collections.singleton(MediaType.APPLICATION_JSON))
- .required(true)
- .build();
+ private GroupedOpenApi getNewGroupedOpenApiForPackageOf(Class> klazz, String groupName) {
+ return GroupedOpenApi.builder()
+ .group(groupName)
+ .packagesToScan(klazz.getPackage().getName())
+ .build();
}
//CCD-3509 CVE-2021-22044 required to fix null pointers in integration tests,
//conflict in Springfox after Springboot 2.6.10
@Bean
public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier,
- ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier,
EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties,
WebEndpointProperties webEndpointProperties, Environment environment) {
List> allEndpoints = new ArrayList<>();
Collection webEndpoints = webEndpointsSupplier.getEndpoints();
allEndpoints.addAll(webEndpoints);
- allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
- allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
String basePath = webEndpointProperties.getBasePath();
EndpointMapping endpointMapping = new EndpointMapping(basePath);
boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment,
@@ -140,12 +74,12 @@ public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpoint
return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes,
corsProperties.toCorsConfiguration(),
new EndpointLinksResolver(allEndpoints, basePath),
- shouldRegisterLinksMapping, null);
+ shouldRegisterLinksMapping);
}
private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment,
String basePath) {
- return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath)
+ return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.isNotBlank(basePath)
|| ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
}
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/config/VirtualThreadConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/config/VirtualThreadConfiguration.java
new file mode 100644
index 0000000000..abb0ec63dd
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/ccd/config/VirtualThreadConfiguration.java
@@ -0,0 +1,17 @@
+package uk.gov.hmcts.ccd.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Configuration
+public class VirtualThreadConfiguration {
+
+ @Bean(name = "virtualThreadPerTaskExecutor", destroyMethod = "close")
+ public ExecutorService virtualThreadPerTaskExecutor() {
+ return Executors.newVirtualThreadPerTaskExecutor();
+ }
+}
+
diff --git a/src/main/java/uk/gov/hmcts/ccd/customheaders/CustomHeadersFilter.java b/src/main/java/uk/gov/hmcts/ccd/customheaders/CustomHeadersFilter.java
index 72ad3bfa67..b12d73fb59 100644
--- a/src/main/java/uk/gov/hmcts/ccd/customheaders/CustomHeadersFilter.java
+++ b/src/main/java/uk/gov/hmcts/ccd/customheaders/CustomHeadersFilter.java
@@ -7,13 +7,13 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
import uk.gov.hmcts.ccd.util.ClientContextUtil;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CustomHeadersFilter implements Filter {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/JsonDataConverter.java b/src/main/java/uk/gov/hmcts/ccd/data/JsonDataConverter.java
index a5b06ac1d2..296e2ccbb7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/JsonDataConverter.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/JsonDataConverter.java
@@ -4,8 +4,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import javax.persistence.AttributeConverter;
-import javax.persistence.Converter;
+import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
import java.io.IOException;
@Converter(autoApply = true)
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/ReferenceDataRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/ReferenceDataRepository.java
index fa0e4a2517..7db9a51440 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/ReferenceDataRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/ReferenceDataRepository.java
@@ -14,8 +14,8 @@
import uk.gov.hmcts.ccd.domain.model.refdata.BuildingLocation;
import uk.gov.hmcts.ccd.domain.model.refdata.ServiceReferenceData;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/SignificantItemEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/SignificantItemEntity.java
index 95099fffc2..eace9f2652 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/SignificantItemEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/SignificantItemEntity.java
@@ -3,17 +3,18 @@
import uk.gov.hmcts.ccd.data.casedetails.CaseAuditEventEntity;
import uk.gov.hmcts.ccd.domain.model.callbacks.SignificantItemType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.SequenceGenerator;
+import jakarta.persistence.Table;
@Table(name = "case_event_significant_items")
@Entity
@@ -21,7 +22,10 @@ public class SignificantItemEntity {
@Id
@Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE,
+ generator = "case_event_significant_items_id_seq_generator")
+ @SequenceGenerator(name = "case_event_significant_items_id_seq_generator",
+ sequenceName = "case_event_significant_items_id_seq", allocationSize = 1)
private Long id;
@Column(name = "type", nullable = false)
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/AMSwitch.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/AMSwitch.java
index ab397f9309..bee2de547a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/AMSwitch.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/AMSwitch.java
@@ -3,8 +3,8 @@
import com.google.common.collect.Maps;
import uk.gov.hmcts.ccd.ApplicationParams;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Map;
@Named
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditEntity.java
index e78eb53fa6..ce06000d5c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditEntity.java
@@ -1,17 +1,19 @@
package uk.gov.hmcts.ccd.data.caseaccess;
-import org.hibernate.annotations.CreationTimestamp;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
import java.time.LocalDateTime;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.SequenceGenerator;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.SourceType;
+
@Entity
@Table(name = "case_users_audit")
public class CaseUserAuditEntity {
@@ -21,7 +23,10 @@ public enum Action {
}
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE,
+ generator = "case_users_audit_id_seq_generator")
+ @SequenceGenerator(name = "case_users_audit_id_seq_generator",
+ sequenceName = "case_users_audit_id_seq", allocationSize = 1)
private Long id;
@Column(name = "case_data_id")
private long caseDataId;
@@ -32,7 +37,7 @@ public enum Action {
@Column(name = "changed_by_id")
private String changedById;
@Column(name = "changed_at")
- @CreationTimestamp
+ @CreationTimestamp(source = SourceType.DB)
private LocalDateTime changedAt;
@Enumerated(EnumType.STRING)
private Action action;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditRepository.java
index d57fc42eac..4699f708b8 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserAuditRepository.java
@@ -3,11 +3,11 @@
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.data.caseaccess.CaseUserAuditEntity.Action;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
import static uk.gov.hmcts.ccd.data.caseaccess.CaseUserAuditEntity.Action.GRANT;
import static uk.gov.hmcts.ccd.data.caseaccess.CaseUserAuditEntity.Action.REVOKE;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserEntity.java
index 5a95a917d6..641ac0f822 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/CaseUserEntity.java
@@ -1,11 +1,11 @@
package uk.gov.hmcts.ccd.data.caseaccess;
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
import java.io.Serializable;
@Entity
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseRoleRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseRoleRepository.java
index 6216a2a0e2..c7cfbca268 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseRoleRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseRoleRepository.java
@@ -17,12 +17,7 @@
import uk.gov.hmcts.ccd.data.SecurityUtils;
import uk.gov.hmcts.ccd.domain.model.definition.CaseRoleDefinition;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.inject.Inject;
-
-import static org.springframework.http.HttpMethod.GET;
+import jakarta.inject.Inject;
@Service
@Qualifier(DefaultCaseRoleRepository.QUALIFIER)
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseUserRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseUserRepository.java
index 816fc87d1e..91989d1c22 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseUserRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caseaccess/DefaultCaseUserRepository.java
@@ -4,10 +4,10 @@
import org.springframework.stereotype.Repository;
import uk.gov.hmcts.ccd.domain.service.casedataaccesscontrol.RoleAssignmentCategoryService;
-import javax.inject.Inject;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.TypedQuery;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedataaccesscontrol/DefaultRoleAssignmentRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/casedataaccesscontrol/DefaultRoleAssignmentRepository.java
index f301bd303a..7dcceaeb15 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedataaccesscontrol/DefaultRoleAssignmentRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedataaccesscontrol/DefaultRoleAssignmentRepository.java
@@ -123,7 +123,7 @@ public RoleAssignmentResponse getRoleAssignments(String userId) {
} catch (Exception e) {
log.warn("Error while retrieving Role Assignments", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == HttpStatus.NOT_FOUND.value()) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == HttpStatus.NOT_FOUND.value()) {
throw new ResourceNotFoundException(String.format(ROLE_ASSIGNMENTS_NOT_FOUND,
userId, e.getMessage()));
} else {
@@ -255,7 +255,7 @@ private RoleAssignmentResponse findRoleAssignmentsByCasesAndUsers(RoleAssignment
private RuntimeException mapException(Exception exception, ResourceNotFoundException resourceNotFoundException) {
if (exception instanceof HttpClientErrorException
- && ((HttpClientErrorException) exception).getRawStatusCode() == HttpStatus.NOT_FOUND.value()) {
+ && ((HttpClientErrorException) exception).getStatusCode().value() == HttpStatus.NOT_FOUND.value()) {
return resourceNotFoundException;
} else {
return mapException(exception, "getting");
@@ -265,7 +265,7 @@ private RuntimeException mapException(Exception exception, ResourceNotFoundExcep
private RuntimeException mapException(Exception exception, String processDescription) {
if (exception instanceof HttpClientErrorException
- && HttpStatus.valueOf(((HttpClientErrorException) exception).getRawStatusCode()).is4xxClientError()) {
+ && HttpStatus.valueOf(((HttpClientErrorException) exception).getStatusCode().value()).is4xxClientError()) {
return new BadRequestException(
String.format(ROLE_ASSIGNMENTS_CLIENT_ERROR, processDescription, exception.getMessage()));
} else {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CachedCaseDetailsRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CachedCaseDetailsRepository.java
index b7c13ad38a..8b5b84ead2 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CachedCaseDetailsRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CachedCaseDetailsRepository.java
@@ -15,7 +15,7 @@
import java.util.function.Function;
import java.util.stream.Collectors;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventEntity.java
index 75226ce6e4..59ae3158fe 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventEntity.java
@@ -1,25 +1,27 @@
package uk.gov.hmcts.ccd.data.casedetails;
-import com.fasterxml.jackson.databind.JsonNode;
-import lombok.Data;
import uk.gov.hmcts.ccd.data.JsonDataConverter;
import uk.gov.hmcts.ccd.data.SignificantItemEntity;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Convert;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
import java.time.LocalDateTime;
+import com.fasterxml.jackson.databind.JsonNode;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Convert;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.SequenceGenerator;
+import jakarta.persistence.Table;
+import lombok.Data;
+
import static uk.gov.hmcts.ccd.data.casedetails.CaseAuditEventEntity.FIND_BY_CASE_DATA_ID_HQL;
import static uk.gov.hmcts.ccd.data.casedetails.CaseAuditEventEntity.FIND_BY_CASE_DATA_ID_HQL_EXCLUDE_DATA;
import static uk.gov.hmcts.ccd.data.casedetails.CaseAuditEventEntity.FIND_BY_ID_HQL;
@@ -73,7 +75,10 @@ public class CaseAuditEventEntity {
@Id
@Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE,
+ generator = "case_event_id_seq_generator")
+ @SequenceGenerator(name = "case_event_id_seq_generator",
+ sequenceName = "case_event_id_seq", allocationSize = 1)
private Long id;
@Column(name = "user_id")
private String userId;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventMapper.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventMapper.java
index 8fa0e74b5e..3338df8457 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventMapper.java
@@ -2,8 +2,8 @@
import java.util.List;
import java.util.stream.Collectors;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.config.JacksonUtils;
import uk.gov.hmcts.ccd.data.SignificantItemEntity;
import uk.gov.hmcts.ccd.domain.model.callbacks.SignificantItem;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventRepository.java
index 24e3bd1e91..902dbd0df5 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseAuditEventRepository.java
@@ -7,13 +7,13 @@
import uk.gov.hmcts.ccd.domain.model.std.AuditEvent;
import uk.gov.hmcts.ccd.endpoint.exceptions.ResourceNotFoundException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
import java.util.List;
import java.util.Optional;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsEntity.java
index e7c5e6e0f7..77523e89cf 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsEntity.java
@@ -1,23 +1,25 @@
package uk.gov.hmcts.ccd.data.casedetails;
-import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.data.JsonDataConverter;
-import javax.persistence.Column;
-import javax.persistence.Convert;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Version;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import com.fasterxml.jackson.databind.JsonNode;
+import jakarta.persistence.Column;
+import jakarta.persistence.Convert;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.SequenceGenerator;
+import jakarta.persistence.Table;
+import jakarta.persistence.Version;
+
@SuppressWarnings("checkstyle:OperatorWrap")
// too many legacy OperatorWrap occurrences on JSON strings so suppress until move to Java12+
@NamedQueries({
@@ -99,7 +101,10 @@ public class CaseDetailsEntity {
@Id
@Column(name = ID_FIELD_COL)
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE,
+ generator = "case_data_id_seq_generator")
+ @SequenceGenerator(name = "case_data_id_seq_generator",
+ sequenceName = "case_data_id_seq", allocationSize = 1)
private Long id;
@Column(name = REFERENCE_FIELD_COL, nullable = false)
private Long reference;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsMapper.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsMapper.java
index 6664d010cf..134d2b864b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/CaseDetailsMapper.java
@@ -3,8 +3,8 @@
import uk.gov.hmcts.ccd.config.JacksonUtils;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/DefaultCaseDetailsRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/DefaultCaseDetailsRepository.java
index 130115ae71..c4a436385d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/DefaultCaseDetailsRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/DefaultCaseDetailsRepository.java
@@ -18,14 +18,14 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ReferenceKeyUniqueConstraintException;
import uk.gov.hmcts.ccd.endpoint.exceptions.ResourceNotFoundException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.OptimisticLockException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.PersistenceException;
-import javax.persistence.Query;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.OptimisticLockException;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.PersistenceException;
+import jakarta.persistence.Query;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Collections;
@@ -82,7 +82,8 @@ public CaseDetails set(final CaseDetails caseDetails) {
another action happened at the same time.
Please review the case and try again.""");
} catch (PersistenceException e) {
- if (e.getCause() instanceof ConstraintViolationException && isDuplicateReference(e)) {
+ if ((e instanceof ConstraintViolationException || e.getCause() instanceof ConstraintViolationException)
+ && isDuplicateReference(e)) {
LOG.warn("ConstraintViolationException happen for UUID={}. ConstraintName: {}",
caseDetails.getReference(), UNIQUE_REFERENCE_KEY_CONSTRAINT);
throw new ReferenceKeyUniqueConstraintException(e.getMessage());
@@ -259,7 +260,10 @@ private void paginateSetLimit(Query query, int limit) {
query.setMaxResults(limit);
}
- private boolean isDuplicateReference(PersistenceException e) {
+ private boolean isDuplicateReference(Exception e) {
+ if (e instanceof ConstraintViolationException) {
+ return ((ConstraintViolationException) e).getConstraintName().equals(UNIQUE_REFERENCE_KEY_CONSTRAINT);
+ }
return ((ConstraintViolationException) e.getCause()).getConstraintName()
.equals(UNIQUE_REFERENCE_KEY_CONSTRAINT);
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/JurisdictionMapper.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/JurisdictionMapper.java
index 64dd001a82..35785b0d29 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/JurisdictionMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/JurisdictionMapper.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.data.casedetails;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.domain.model.aggregated.JurisdictionDisplayProperties;
import uk.gov.hmcts.ccd.domain.model.definition.JurisdictionDefinition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/MetaDataQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/MetaDataQueryBuilder.java
index ac8cecbdc6..59c2721ec7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/MetaDataQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/MetaDataQueryBuilder.java
@@ -1,10 +1,10 @@
package uk.gov.hmcts.ccd.data.casedetails;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilder.java
index 1c94ff9180..81ce686177 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilder.java
@@ -6,15 +6,15 @@
import uk.gov.hmcts.ccd.data.casedetails.SecurityClassification;
import uk.gov.hmcts.ccd.data.casedetails.search.MetaData;
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Order;
-import javax.persistence.criteria.Path;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.persistence.criteria.Subquery;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Order;
+import jakarta.persistence.criteria.Path;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Root;
+import jakarta.persistence.criteria.Subquery;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilderFactory.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilderFactory.java
index baa4105b09..7f5e89eece 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilderFactory.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CaseDetailsQueryBuilderFactory.java
@@ -5,7 +5,7 @@
import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsEntity;
import uk.gov.hmcts.ccd.data.casedetails.search.MetaData;
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
import java.util.List;
@Component
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CountCaseDetailsQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CountCaseDetailsQueryBuilder.java
index fb48ab9b1a..d0c2b9d7c9 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CountCaseDetailsQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/CountCaseDetailsQueryBuilder.java
@@ -1,9 +1,9 @@
package uk.gov.hmcts.ccd.data.casedetails.query;
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
public class CountCaseDetailsQueryBuilder extends CaseDetailsQueryBuilder {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsQueryBuilder.java
index f91753b649..62670d7143 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsQueryBuilder.java
@@ -2,10 +2,10 @@
import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsEntity;
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
public class SelectCaseDetailsQueryBuilder extends CaseDetailsQueryBuilder {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsReferenceQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsReferenceQueryBuilder.java
index 0d893361ec..d4b80abc1d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsReferenceQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/query/SelectCaseDetailsReferenceQueryBuilder.java
@@ -1,9 +1,9 @@
package uk.gov.hmcts.ccd.data.casedetails.query;
-import javax.persistence.EntityManager;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.TypedQuery;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Predicate;
public class SelectCaseDetailsReferenceQueryBuilder extends CaseDetailsQueryBuilder {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/CriterionFactory.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/CriterionFactory.java
index b20b4953f5..f6d613306e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/CriterionFactory.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/CriterionFactory.java
@@ -10,8 +10,8 @@
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsEntity;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/FieldMapSanitizeOperation.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/FieldMapSanitizeOperation.java
index abf37668cb..13001200d5 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/FieldMapSanitizeOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/FieldMapSanitizeOperation.java
@@ -4,8 +4,8 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.BadRequestException;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.AbstractMap;
import java.util.Map;
import java.util.Map.Entry;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/SearchQueryFactoryOperation.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/SearchQueryFactoryOperation.java
index 8954f67464..fb7058b348 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/SearchQueryFactoryOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/search/SearchQueryFactoryOperation.java
@@ -5,11 +5,11 @@
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
import lombok.extern.slf4j.Slf4j;
import uk.gov.hmcts.ccd.ApplicationParams;
import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsEntity;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/DefaultSupplementaryDataRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/DefaultSupplementaryDataRepository.java
index c4577681ea..e16274ee2f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/DefaultSupplementaryDataRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/DefaultSupplementaryDataRepository.java
@@ -3,10 +3,10 @@
import com.fasterxml.jackson.databind.JsonNode;
import java.util.List;
import java.util.Set;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/FindSupplementaryDataQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/FindSupplementaryDataQueryBuilder.java
index 84be890a3a..466e80985a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/FindSupplementaryDataQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/FindSupplementaryDataQueryBuilder.java
@@ -1,8 +1,8 @@
package uk.gov.hmcts.ccd.data.casedetails.supplementarydata;
-import com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
+
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@@ -21,7 +21,7 @@ public Query build(EntityManager entityManager,
Query selectQuery = entityManager.createNativeQuery(SUPPLEMENTARY_DATA_QUERY);
selectQuery.setParameter("reference", caseReference);
selectQuery.unwrap(org.hibernate.query.NativeQuery.class)
- .addScalar("supplementary_data", JsonNodeBinaryType.INSTANCE);
+ .addScalar("supplementary_data", SupplementaryDataUserType.CUSTOM_TYPE);
return selectQuery;
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/IncrementSupplementaryDataQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/IncrementSupplementaryDataQueryBuilder.java
index 113f0438d8..fc78b0b296 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/IncrementSupplementaryDataQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/IncrementSupplementaryDataQueryBuilder.java
@@ -1,9 +1,8 @@
package uk.gov.hmcts.ccd.data.casedetails.supplementarydata;
-import java.util.Arrays;
import java.util.regex.Pattern;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@@ -13,15 +12,15 @@ public class IncrementSupplementaryDataQueryBuilder implements SupplementaryData
@SuppressWarnings("checkstyle:LineLength") //don't want to break long SQL statement
private static final String INC_UPDATE_QUERY = "UPDATE case_data SET "
+ "supplementary_data= (CASE"
- + " WHEN COALESCE(supplementary_data, '{}') = '{}' "
- + " THEN COALESCE(supplementary_data, '{}') || :json_value\\:\\:jsonb"
- + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), :parent_path) IS NULL AND :value > 0"
- + " THEN jsonb_insert(COALESCE(supplementary_data, '{}'), :parent_key, :json_value_insert\\:\\:jsonb)"
- + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), :node_path) IS NULL "
- + " THEN jsonb_set(COALESCE(supplementary_data, '{}'), :leaf_node_key, :value\\:\\:TEXT\\:\\:jsonb)"
- + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), :node_path) IS NOT NULL "
- + " THEN jsonb_set(COALESCE(supplementary_data, '{}'), :leaf_node_key,"
- + " (jsonb_extract_path_text(supplementary_data, :node_path)\\:\\:INT + :value) \\:\\:TEXT\\:\\:jsonb, false)"
+ + " WHEN COALESCE(supplementary_data, '{}') = '{}' "
+ + " THEN COALESCE(supplementary_data, '{}') || :json_value\\:\\:jsonb"
+ + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), :parent_path) IS NULL AND :value > 0"
+ + " THEN jsonb_insert(COALESCE(supplementary_data, '{}'), :parent_key, :json_value_insert\\:\\:jsonb)"
+ + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), VARIADIC regexp_split_to_array(:node_path, '\\.')) IS NULL "
+ + " THEN jsonb_set(COALESCE(supplementary_data, '{}'), :leaf_node_key, :value\\:\\:TEXT\\:\\:jsonb)"
+ + " WHEN jsonb_extract_path_text(COALESCE(supplementary_data, '{}'), VARIADIC regexp_split_to_array(:node_path, '\\.')) IS NOT NULL "
+ + " THEN jsonb_set(COALESCE(supplementary_data, '{}'), :leaf_node_key,"
+ + " (jsonb_extract_path_text(supplementary_data, VARIADIC regexp_split_to_array(:node_path, '\\.'))\\:\\:INT + :value) \\:\\:TEXT\\:\\:jsonb, false)"
+ " END) "
+ "WHERE reference = :reference";
@@ -37,10 +36,9 @@ public Query build(EntityManager entityManager,
query.setParameter("json_value", jsonValue);
String parentKeyJsonValue = requestedDataJsonForPath(fieldPath, fieldValue, parentKey);
query.setParameter("json_value_insert", parentKeyJsonValue);
- query.setParameter("node_path", Arrays.asList(fieldPath.split(Pattern.quote("."))));
+ query.setParameter("node_path", fieldPath);
query.setParameter("parent_key", "{" + parentKey + "}");
- query.setParameter("parent_path", Arrays.asList(parentKey));
-
+ query.setParameter("parent_path", parentKey);
return query;
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SetSupplementaryDataQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SetSupplementaryDataQueryBuilder.java
index 05eaa09c2e..4c50825b1e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SetSupplementaryDataQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SetSupplementaryDataQueryBuilder.java
@@ -1,9 +1,8 @@
package uk.gov.hmcts.ccd.data.casedetails.supplementarydata;
-import java.util.Arrays;
import java.util.regex.Pattern;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@@ -45,7 +44,7 @@ public Query build(EntityManager entityManager,
query.setParameter("json_value", jsonValue);
String parentKeyJsonValue = requestedDataJsonForPath(fieldPath, fieldValue, parentKey);
query.setParameter("json_value_insert", parentKeyJsonValue);
- query.setParameter("parent_path", Arrays.asList(parentKey));
+ query.setParameter("parent_path", parentKey);
query.setParameter("parent_key", "{" + parentKey + "}");
return query;
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataQueryBuilder.java
index e1326c84c9..a33acb6061 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataQueryBuilder.java
@@ -5,11 +5,11 @@
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.PathNotFoundException;
-import com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType;
+
import java.util.Properties;
import java.util.regex.Pattern;
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.Query;
import org.hibernate.query.NativeQuery;
import pl.jalokim.propertiestojson.util.PropertiesToJsonConverter;
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
@@ -32,7 +32,7 @@ default void setCommonProperties(Query query,
query.setParameter("value", fieldValue);
query.setParameter("reference", caseReference);
query.unwrap(NativeQuery.class)
- .addScalar("supplementary_data", JsonNodeBinaryType.INSTANCE);
+ .addScalar("supplementary_data", SupplementaryDataUserType.CUSTOM_TYPE);
}
default String requestedDataToJson(String fieldPath, Object fieldValue) {
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataUserType.java b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataUserType.java
new file mode 100644
index 0000000000..365c502614
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/ccd/data/casedetails/supplementarydata/SupplementaryDataUserType.java
@@ -0,0 +1,112 @@
+package uk.gov.hmcts.ccd.data.casedetails.supplementarydata;
+
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import org.hibernate.HibernateException;
+import org.hibernate.engine.spi.SharedSessionContractImplementor;
+import org.hibernate.type.CustomType;
+import org.hibernate.type.SqlTypes;
+import org.hibernate.type.spi.TypeConfiguration;
+import org.hibernate.usertype.UserType;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class SupplementaryDataUserType implements UserType {
+
+ private final ObjectMapper mapper = new ObjectMapper();
+
+ public static CustomType CUSTOM_TYPE = new CustomType(
+ new SupplementaryDataUserType(), new TypeConfiguration()
+ );
+
+ @Override
+ public int getSqlType() {
+ return SqlTypes.JSON;
+ }
+
+ @Override
+ public Class returnedClass() {
+ return JsonNode.class;
+ }
+
+ @Override
+ public boolean equals(JsonNode x, JsonNode y) throws HibernateException {
+ return x.equals(y);
+ }
+
+ @Override
+ public int hashCode(JsonNode x) throws HibernateException {
+ assert (x != null);
+ return x.hashCode();
+ }
+
+ @Override
+ public JsonNode nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner)
+ throws SQLException {
+ try {
+ final String cellContent = rs.getString(position);
+ if (cellContent == null) {
+ return null;
+ }
+ return mapper.readValue(cellContent.getBytes("UTF-8"), returnedClass());
+ } catch (final Exception ex) {
+ throw new RuntimeException("Failed to convert String to MyJson: " + ex.getMessage(), ex);
+ }
+ }
+
+ @Override
+ public void nullSafeSet(PreparedStatement st, JsonNode value, int index, SharedSessionContractImplementor session)
+ throws SQLException {
+ if (value == null) {
+ st.setNull(index, SqlTypes.JSON);
+ return;
+ }
+ try {
+ final StringWriter w = new StringWriter();
+ mapper.writeValue(w, value);
+ w.flush();
+ st.setObject(index, w.toString(), SqlTypes.JSON);
+ } catch (final Exception ex) {
+ throw new RuntimeException("Failed to convert MyJson to String: " + ex.getMessage(), ex);
+ }
+ }
+
+ @Override
+ public JsonNode deepCopy(JsonNode value) {
+ if (value == null) {
+ return null;
+ }
+ return value.deepCopy();
+ }
+
+ @Override
+ public boolean isMutable() {
+ return true;
+ }
+
+ @Override
+ public Serializable disassemble(JsonNode value) {
+ if (value == null) {
+ return null;
+ }
+ return (Serializable) value;
+ }
+
+ @Override
+ public JsonNode assemble(Serializable cached, Object owner) {
+ if (cached == null) {
+ return null;
+ }
+ return (JsonNode) cached;
+ }
+
+ @Override
+ public JsonNode replace(JsonNode detached, JsonNode managed, Object owner) {
+ return detached;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/caselinking/CaseLinkEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/caselinking/CaseLinkEntity.java
index 1ed245064f..87cc2391ba 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/caselinking/CaseLinkEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/caselinking/CaseLinkEntity.java
@@ -2,10 +2,10 @@
import lombok.EqualsAndHashCode;
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
@Entity
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/definition/CachedUIDefinitionGateway.java b/src/main/java/uk/gov/hmcts/ccd/data/definition/CachedUIDefinitionGateway.java
index 2dc3a43889..795f252caa 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/definition/CachedUIDefinitionGateway.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/definition/CachedUIDefinitionGateway.java
@@ -13,9 +13,9 @@
import uk.gov.hmcts.ccd.domain.model.definition.WizardPage;
import uk.gov.hmcts.ccd.domain.model.definition.WorkbasketInputFieldsDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/definition/DefaultCaseDefinitionRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/definition/DefaultCaseDefinitionRepository.java
index 6722535671..e0b63d816d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/definition/DefaultCaseDefinitionRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/definition/DefaultCaseDefinitionRepository.java
@@ -63,7 +63,7 @@ public List getCaseTypesForJurisdiction(final String jurisdi
} catch (Exception e) {
LOG.warn("Error while retrieving base type", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException("Resource not found when getting case types for Jurisdiction:"
+ jurisdictionId + " because of " + e.getMessage());
} else {
@@ -95,7 +95,7 @@ public CaseTypeDefinition getCaseType(final String caseTypeId) {
} catch (Exception e) {
LOG.warn("Error while retrieving case type", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException("Resource not found when getting case type definition for "
+ caseTypeId + " because of " + e.getMessage());
} else {
@@ -119,7 +119,7 @@ public List getBaseTypes() {
} catch (Exception e) {
LOG.warn("Error while retrieving base types", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException(
"Problem getting base types definition from definition store because of " + e.getMessage());
} else {
@@ -139,7 +139,7 @@ public UserRole getUserRoleClassifications(String userRole) {
UserRole.class, queryParams).getBody();
} catch (Exception e) {
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
LOG.debug("No classification found for user role {} because of ", userRole, e);
return null;
} else {
@@ -186,7 +186,7 @@ public CaseTypeDefinitionVersion getLatestVersionFromDefinitionStore(String case
} catch (Exception e) {
LOG.warn("Error while retrieving case type version", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException(
"Error when getting case type version. Unknown case type '" + caseTypeId + "'.", e);
} else {
@@ -257,7 +257,7 @@ private List getJurisdictionsFromDefinitionStore(Optiona
} catch (Exception e) {
LOG.warn("Error while retrieving jurisdictions definition", e);
if (e instanceof HttpClientErrorException
- && ((HttpClientErrorException) e).getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ && ((HttpClientErrorException) e).getStatusCode().value() == RESOURCE_NOT_FOUND) {
LOG.warn("Jurisdiction object(s) configured for user couldn't be found on definition store: {}.",
jurisdictionIds.orElse(Collections.emptyList()));
return new ArrayList<>();
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/definition/HttpUIDefinitionGateway.java b/src/main/java/uk/gov/hmcts/ccd/data/definition/HttpUIDefinitionGateway.java
index ca3a2ef70f..bce290d136 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/definition/HttpUIDefinitionGateway.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/definition/HttpUIDefinitionGateway.java
@@ -13,9 +13,9 @@
import uk.gov.hmcts.ccd.domain.model.definition.WorkbasketInputFieldsDefinition;
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.net.URI;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/definition/UIDefinitionRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/definition/UIDefinitionRepository.java
index ce6fe50c50..3f8e5a5c96 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/definition/UIDefinitionRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/definition/UIDefinitionRepository.java
@@ -9,9 +9,9 @@
import uk.gov.hmcts.ccd.domain.model.definition.WizardPage;
import uk.gov.hmcts.ccd.domain.model.definition.WorkbasketInputFieldsDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/documentdata/DocumentDataRequest.java b/src/main/java/uk/gov/hmcts/ccd/data/documentdata/DocumentDataRequest.java
index 9fb9e6fe04..356be951be 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/documentdata/DocumentDataRequest.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/documentdata/DocumentDataRequest.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.data.documentdata;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -9,7 +9,7 @@
@NoArgsConstructor
@AllArgsConstructor
@Data
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class DocumentDataRequest {
String attributePath;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/draft/DefaultDraftGateway.java b/src/main/java/uk/gov/hmcts/ccd/data/draft/DefaultDraftGateway.java
index ebb1e95697..1fbc0e8490 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/draft/DefaultDraftGateway.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/draft/DefaultDraftGateway.java
@@ -13,7 +13,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.io.IOException;
import java.net.URI;
@@ -97,7 +97,7 @@ public DraftResponse update(final UpdateCaseDraftRequest draft, final String dra
HttpMethod.PUT, requestEntity, HttpEntity.class);
} catch (HttpClientErrorException e) {
LOG.warn("Error while updating draftId={}", draftId, e);
- if (e.getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ if (e.getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException(String.format(RESOURCE_NOT_FOUND_MSG, draftId));
}
throw new ApiException(DRAFT_STORE_DOWN_ERR_MESSAGE, e);
@@ -122,7 +122,7 @@ public DraftResponse get(final String draftId) {
applicationParams.draftURL(draftId), HttpMethod.GET, requestEntity, Draft.class).getBody();
} catch (HttpClientErrorException e) {
LOG.warn("Error while getting draftId={}", draftId, e);
- if (e.getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ if (e.getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException(String.format(RESOURCE_NOT_FOUND_MSG, draftId));
}
throw new ApiException(DRAFT_STORE_DOWN_ERR_MESSAGE, e);
@@ -150,7 +150,7 @@ public void delete(final String draftId) {
requestEntity, Draft.class);
} catch (HttpClientErrorException e) {
LOG.warn("Error while deleting draftId=" + draftId, e);
- if (e.getRawStatusCode() == RESOURCE_NOT_FOUND) {
+ if (e.getStatusCode().value() == RESOURCE_NOT_FOUND) {
throw new ResourceNotFoundException(String.format(RESOURCE_NOT_FOUND_MSG, draftId));
}
throw new ApiException(DRAFT_STORE_DOWN_ERR_MESSAGE, e);
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateMapper.java b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateMapper.java
index d2029dbb81..a2d3ef3724 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateMapper.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.std.MessageQueueCandidate;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateRepository.java
index 8d83229f1f..64552b4b5b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageCandidateRepository.java
@@ -2,11 +2,11 @@
import uk.gov.hmcts.ccd.domain.model.std.MessageQueueCandidate;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageQueueCandidateEntity.java b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageQueueCandidateEntity.java
index 594bb774a3..a7a5b051ae 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/message/MessageQueueCandidateEntity.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/message/MessageQueueCandidateEntity.java
@@ -1,27 +1,33 @@
package uk.gov.hmcts.ccd.data.message;
-import com.fasterxml.jackson.databind.JsonNode;
-import lombok.Data;
-import org.hibernate.annotations.CreationTimestamp;
import uk.gov.hmcts.ccd.data.JsonDataConverter;
-import javax.persistence.Convert;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
import java.time.LocalDateTime;
+import com.fasterxml.jackson.databind.JsonNode;
+import jakarta.persistence.Convert;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.SequenceGenerator;
+import jakarta.persistence.Table;
+import lombok.Data;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.SourceType;
+
@Table(name = "message_queue_candidates")
@Entity
@Data
public class MessageQueueCandidateEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE,
+ generator = "message_queue_candidates_id_seq_generator")
+ @SequenceGenerator(name = "message_queue_candidates_id_seq_generator",
+ sequenceName = "message_queue_candidates_id_seq", allocationSize = 1)
private Long id;
private String messageType;
- @CreationTimestamp
+ @CreationTimestamp(source = SourceType.DB)
private LocalDateTime timeStamp;
private LocalDateTime published;
@Convert(converter = JsonDataConverter.class)
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/persistence/CasePointerRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/persistence/CasePointerRepository.java
index d5d6d90296..abf8bbb40f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/persistence/CasePointerRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/persistence/CasePointerRepository.java
@@ -1,8 +1,7 @@
package uk.gov.hmcts.ccd.data.persistence;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.NoResultException;
import java.time.LocalDate;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/user/DefaultUserRepository.java b/src/main/java/uk/gov/hmcts/ccd/data/user/DefaultUserRepository.java
index 98246b43ad..31d651ea62 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/user/DefaultUserRepository.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/user/DefaultUserRepository.java
@@ -13,9 +13,9 @@
import static java.util.Comparator.comparingInt;
import static java.util.function.Predicate.not;
-import static org.apache.commons.lang.StringUtils.startsWithIgnoreCase;
+import static org.apache.commons.lang3.StringUtils.startsWithIgnoreCase;
-import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.elasticsearch.rest.RestRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/user/IdamJurisdictionsResolver.java b/src/main/java/uk/gov/hmcts/ccd/data/user/IdamJurisdictionsResolver.java
index ec99a8188c..eb4d152a94 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/user/IdamJurisdictionsResolver.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/user/IdamJurisdictionsResolver.java
@@ -4,7 +4,7 @@
import org.springframework.stereotype.Service;
import org.springframework.web.context.annotation.RequestScope;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.List;
@Service
diff --git a/src/main/java/uk/gov/hmcts/ccd/data/user/UserService.java b/src/main/java/uk/gov/hmcts/ccd/data/user/UserService.java
index a15502face..5195c4d092 100644
--- a/src/main/java/uk/gov/hmcts/ccd/data/user/UserService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/data/user/UserService.java
@@ -14,7 +14,7 @@
import uk.gov.hmcts.ccd.domain.model.aggregated.WorkbasketDefault;
import uk.gov.hmcts.ccd.domain.model.definition.JurisdictionDefinition;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/decentralised/service/SynchronisedCaseProcessor.java b/src/main/java/uk/gov/hmcts/ccd/decentralised/service/SynchronisedCaseProcessor.java
index 0254a7a6b1..bf35a223cb 100644
--- a/src/main/java/uk/gov/hmcts/ccd/decentralised/service/SynchronisedCaseProcessor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/decentralised/service/SynchronisedCaseProcessor.java
@@ -1,5 +1,7 @@
package uk.gov.hmcts.ccd.decentralised.service;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -8,8 +10,6 @@
import uk.gov.hmcts.ccd.decentralised.dto.DecentralisedCaseDetails;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
import java.util.function.Consumer;
/**
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/enablingcondition/jexl/JexlEnablingConditionParser.java b/src/main/java/uk/gov/hmcts/ccd/domain/enablingcondition/jexl/JexlEnablingConditionParser.java
index 0ba45a8e5d..c8370610ca 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/enablingcondition/jexl/JexlEnablingConditionParser.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/enablingcondition/jexl/JexlEnablingConditionParser.java
@@ -11,7 +11,7 @@
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.apache.commons.jexl3.JexlBuilder;
import org.apache.commons.jexl3.JexlEngine;
import org.apache.commons.jexl3.JexlScript;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseUpdateViewEventBuilder.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseUpdateViewEventBuilder.java
index 6032cd6695..bcd4eb8920 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseUpdateViewEventBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseUpdateViewEventBuilder.java
@@ -1,8 +1,8 @@
package uk.gov.hmcts.ccd.domain.model.aggregated;
import java.util.List;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import org.springframework.beans.factory.annotation.Qualifier;
import uk.gov.hmcts.ccd.data.definition.CachedCaseDefinitionRepository;
import uk.gov.hmcts.ccd.data.definition.CaseDefinitionRepository;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseViewFieldBuilder.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseViewFieldBuilder.java
index 04f9238c68..834c07e9f9 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseViewFieldBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CaseViewFieldBuilder.java
@@ -3,8 +3,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseEventFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CompoundFieldOrderService.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CompoundFieldOrderService.java
index 5a67576e3d..1ddc0c7367 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CompoundFieldOrderService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/CompoundFieldOrderService.java
@@ -7,8 +7,8 @@
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import org.apache.commons.collections.CollectionUtils;
import uk.gov.hmcts.ccd.domain.model.definition.CaseEventFieldComplexDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefault.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefault.java
index 607f711c74..783001e728 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefault.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefault.java
@@ -6,22 +6,23 @@
import static java.util.stream.Collectors.toList;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import uk.gov.hmcts.ccd.domain.model.definition.JurisdictionDefinition;
public class UserDefault {
private String id;
private List jurisdictionDefinitions;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("work_basket_default_jurisdiction")
private String workBasketDefaultJurisdiction;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("work_basket_default_case_type")
private String workBasketDefaultCaseType;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("work_basket_default_state")
private String workBasketDefaultState;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefaultCollection.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefaultCollection.java
index fbf69deb07..050e435ce1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefaultCollection.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/aggregated/UserDefaultCollection.java
@@ -1,12 +1,12 @@
package uk.gov.hmcts.ccd.domain.model.aggregated;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
-@ApiModel
+@Schema
public class UserDefaultCollection {
private List userDefaults;
@@ -18,7 +18,7 @@ public UserDefaultCollection(List userDefaults) {
this.userDefaults = userDefaults;
}
- @ApiModelProperty
+ @Schema
@JsonProperty("user_profiles")
public List getUserDefaults() {
return userDefaults;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/callbacks/CallbackResponse.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/callbacks/CallbackResponse.java
index 74f234348c..ffe0889e4c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/callbacks/CallbackResponse.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/callbacks/CallbackResponse.java
@@ -4,7 +4,9 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.base.Strings;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import uk.gov.hmcts.ccd.data.casedetails.SecurityClassification;
@@ -18,10 +20,12 @@
public class CallbackResponse {
private static final String CALLBACK_RESPONSE_KEY_STATE = "state";
- @ApiModelProperty("Case data as defined in case type definition. See `docs/api/case-data.md` for data structure.")
+ @Schema(
+ description = "Case data as defined in case type definition. See `docs/api/case-data.md` for data structure."
+ )
private Map data;
@JsonProperty("data_classification")
- @ApiModelProperty("Same structure as `data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ @Schema(description = "Same structure as `data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ "as field's value.")
private Map dataClassification;
@JsonProperty("security_classification")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/casedeletion/TTL.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/casedeletion/TTL.java
index db3b8ddd0b..0477543b1f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/casedeletion/TTL.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/casedeletion/TTL.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.model.casedeletion;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -10,7 +10,7 @@
import java.time.LocalDate;
import java.util.Objects;
-@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
@Builder
@AllArgsConstructor
@NoArgsConstructor
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/CategoriesAndDocuments.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/CategoriesAndDocuments.java
index 5b19a09748..933d6e8307 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/CategoriesAndDocuments.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/CategoriesAndDocuments.java
@@ -1,13 +1,13 @@
package uk.gov.hmcts.ccd.domain.model.casefileview;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Value;
import java.util.List;
@Value
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class CategoriesAndDocuments {
Integer caseVersion;
List categories;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Category.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Category.java
index a71879e7c0..c9ae741f60 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Category.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Category.java
@@ -1,13 +1,13 @@
package uk.gov.hmcts.ccd.domain.model.casefileview;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Value;
import java.util.List;
@Value
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class Category {
String categoryId;
String categoryName;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Document.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Document.java
index 85c470403f..36ae45f01c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Document.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/casefileview/Document.java
@@ -1,15 +1,16 @@
package uk.gov.hmcts.ccd.domain.model.casefileview;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import io.swagger.annotations.ApiModel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Value;
import java.time.LocalDateTime;
@Value
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
-@ApiModel(value = "Document definition")
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
+@Schema(description = "Document definition")
public class Document {
String documentURL;
String documentFilename;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/common/HttpError.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/common/HttpError.java
index ec47556230..dd9b63f0a3 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/common/HttpError.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/common/HttpError.java
@@ -6,7 +6,7 @@
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.util.UriUtils;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/AccessTypeDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/AccessTypeDefinition.java
index 4d562a2ec2..be826b8a3e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/AccessTypeDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/AccessTypeDefinition.java
@@ -10,7 +10,7 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-import javax.persistence.Column;
+import jakarta.persistence.Column;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/BannersResult.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/BannersResult.java
index e40144e617..336836e953 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/BannersResult.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/BannersResult.java
@@ -1,12 +1,13 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
import java.io.Serializable;
import java.util.List;
-@ApiModel(description = "")
+@Schema
public class BannersResult implements Serializable {
private List banners;
@@ -19,7 +20,7 @@ public BannersResult(List banners) {
this.banners = banners;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("banners")
public List getBanners() {
return banners;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseDetails.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseDetails.java
index d9c19bd98d..8043d8a629 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseDetails.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseDetails.java
@@ -5,7 +5,9 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.databind.JsonNode;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,11 +82,13 @@ public class CaseDetails implements Cloneable {
private SecurityClassification securityClassification;
@JsonProperty("case_data")
- @ApiModelProperty("Case data as defined in case type definition. See `docs/api/case-data.md` for data structure.")
+ @Schema(
+ description = "Case data as defined in case type definition. See `docs/api/case-data.md` for data structure."
+ )
private Map data;
@JsonProperty("data_classification")
- @ApiModelProperty("Same structure as `case_data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ @Schema(description = "Same structure as `case_data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ "as field's value.")
private Map dataClassification;
@@ -300,12 +304,12 @@ public CaseDetails shallowClone() throws CloneNotSupportedException {
@JsonIgnore
public void setDeleteDraftResponseEntity(final String draftId, final ResponseEntity
draftResponse) {
- if (SC_OK == draftResponse.getStatusCodeValue()) {
+ if (SC_OK == draftResponse.getStatusCode().value()) {
setDeleteDraftResponseEntity();
} else {
LOG.warn("Incomplete delete draft response for draft={}, statusCode={}",
draftId,
- draftResponse.getStatusCodeValue());
+ draftResponse.getStatusCode().value());
setIncompleteDeleteDraftResponse();
}
}
@@ -319,13 +323,13 @@ private void setDeleteDraftResponseEntity() {
@SuppressWarnings("java:S2259")
public void setAfterSubmitCallbackResponseEntity(final ResponseEntity
callBackResponse) {
- if (SC_OK == callBackResponse.getStatusCodeValue()) {
+ if (SC_OK == callBackResponse.getStatusCode().value()) {
setAfterSubmitCallbackResponseEntity(callBackResponse.getBody());
} else {
LOG.warn("Incomplete call back response for case {} (db id={}); status code {}, body {}",
reference,
id,
- callBackResponse.getStatusCodeValue(),
+ callBackResponse.getStatusCode().value(),
callBackResponse.getBody().toJson());
setIncompleteCallbackResponse();
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseEventFieldDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseEventFieldDefinition.java
index 91974fc8fd..71fe9c62e0 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseEventFieldDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseEventFieldDefinition.java
@@ -1,18 +1,18 @@
package uk.gov.hmcts.ccd.domain.model.definition;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.ToString;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.ToString;
+
@ToString
-@ApiModel(description = "")
+@Schema
public class CaseEventFieldDefinition implements Serializable, CommonDCPModel, Copyable {
private String caseFieldId = null;
@@ -30,7 +30,7 @@ public class CaseEventFieldDefinition implements Serializable, CommonDCPModel, C
private String defaultValue;
private Boolean nullifyByDefault;
- @ApiModelProperty(required = true, value = "Foreign key to CaseField.id")
+ @Schema(required = true, description = "Foreign key to CaseField.id")
@JsonProperty("case_field_id")
public String getCaseFieldId() {
return caseFieldId;
@@ -40,7 +40,7 @@ public void setCaseFieldId(String caseFieldId) {
this.caseFieldId = caseFieldId;
}
- @ApiModelProperty(value = "whether this field is optional, mandatory or read only for this event")
+ @Schema(description = "whether this field is optional, mandatory or read only for this event")
@JsonProperty("display_context")
public String getDisplayContext() {
return displayContext;
@@ -55,7 +55,7 @@ public void setDisplayContext(String displayContext) {
this.displayContext = displayContext;
}
- @ApiModelProperty(value = "contain names of fields for list or table")
+ @Schema(description = "contain names of fields for list or table")
@JsonProperty("display_context_parameter")
public String getDisplayContextParameter() {
return displayContextParameter;
@@ -65,7 +65,7 @@ public void setDisplayContextParameter(String displayContextParameter) {
this.displayContextParameter = displayContextParameter;
}
- @ApiModelProperty(value = "Show Condition expression for this field")
+ @Schema(description = "Show Condition expression for this field")
@JsonProperty("show_condition")
public String getShowCondition() {
return showCondition;
@@ -75,7 +75,7 @@ public void setShowCondition(String showCondition) {
this.showCondition = showCondition;
}
- @ApiModelProperty(value = "Show Summary Change Option")
+ @Schema(description = "Show Summary Change Option")
@JsonProperty("show_summary_change_option")
public Boolean getShowSummaryChangeOption() {
return showSummaryChangeOption;
@@ -85,7 +85,7 @@ public void setShowSummaryChangeOption(final Boolean showSummaryChangeOption) {
this.showSummaryChangeOption = showSummaryChangeOption;
}
- @ApiModelProperty(value = "Show Summary Content Option")
+ @Schema(description = "Show Summary Content Option")
@JsonProperty("show_summary_content_option")
public Integer getShowSummaryContentOption() {
return showSummaryContentOption;
@@ -98,7 +98,7 @@ public void setShowSummaryContentOption(Integer showSummaryContentOption) {
/**
* event case field label.
**/
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("label")
public String getLabel() {
return label;
@@ -111,7 +111,7 @@ public void setLabel(String label) {
/**
* event case field hint text.
**/
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("hint_text")
public String getHintText() {
return hintText;
@@ -121,7 +121,7 @@ public void setHintText(String hintText) {
this.hintText = hintText;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_fields_complex")
public List getCaseEventFieldComplexDefinitions() {
return caseEventFieldComplexDefinitions;
@@ -131,7 +131,7 @@ public void setCaseEventFieldComplexDefinitions(List {
private static final long serialVersionUID = -4257574164546267919L;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseRoleDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseRoleDefinition.java
index 8f0dcbd803..170ed38783 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseRoleDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseRoleDefinition.java
@@ -3,11 +3,11 @@
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.ToString;
-@ApiModel(description = "")
+@Schema
@ToString
public class CaseRoleDefinition implements Serializable {
@@ -15,7 +15,7 @@ public class CaseRoleDefinition implements Serializable {
private String name = null;
private String description = null;
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("id")
public String getId() {
return id;
@@ -25,7 +25,7 @@ public void setId(String id) {
this.id = id;
}
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("name")
public String getName() {
return name;
@@ -35,7 +35,7 @@ public void setName(String name) {
this.name = name;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("description")
public String getDescription() {
return description;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseStateDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseStateDefinition.java
index ec47b10c36..124bdf8761 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseStateDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseStateDefinition.java
@@ -2,13 +2,13 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.List;
-@ApiModel(description = "")
+@Schema
public class CaseStateDefinition implements Serializable, Copyable {
@JsonIgnore
@@ -21,7 +21,7 @@ public class CaseStateDefinition implements Serializable, Copyable accessControlLists;
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("id")
public String getId() {
return id;
@@ -34,7 +34,7 @@ public void setId(String id) {
/**
* Short name to display.
**/
- @ApiModelProperty(value = "Short name to display.")
+ @Schema(description = "Short name to display.")
@JsonProperty("name")
public String getName() {
return name;
@@ -44,7 +44,7 @@ public void setName(String name) {
this.name = name;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("description")
public String getDescription() {
return description;
@@ -63,7 +63,7 @@ public void setDisplayOrder(Integer displayOrder) {
this.displayOrder = displayOrder;
}
- @ApiModelProperty(value = "Title label to be displayed for state")
+ @Schema(description = "Title label to be displayed for state")
@JsonProperty("title_display")
public String getTitleDisplay() {
return titleDisplay;
@@ -73,7 +73,7 @@ public void setTitleDisplay(String titleDisplay) {
this.titleDisplay = titleDisplay;
}
- @ApiModelProperty(value = "State Access Control Lists")
+ @Schema(description = "State Access Control Lists")
@JsonProperty("acls")
public List getAccessControlLists() {
return accessControlLists;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabDefinition.java
index 10e33b03b3..46a19c6d01 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabDefinition.java
@@ -1,14 +1,15 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-@ApiModel(description = "")
+@Schema
public class CaseTypeTabDefinition implements Serializable, CommonDCPModel {
private String id = null;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabField.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabField.java
index 1c9baf4eca..c593ec4858 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CaseTypeTabField.java
@@ -3,18 +3,18 @@
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
-@ApiModel(description = "")
+@Schema
public class CaseTypeTabField implements Serializable, CommonDCPModel {
private CaseFieldDefinition caseFieldDefinition = null;
private Integer displayOrder = null;
private String showCondition = null;
private String displayContextParameter;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_field")
public CaseFieldDefinition getCaseFieldDefinition() {
return caseFieldDefinition;
@@ -24,7 +24,7 @@ public void setCaseFieldDefinition(final CaseFieldDefinition caseFieldDefinition
this.caseFieldDefinition = caseFieldDefinition;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("order")
public Integer getDisplayOrder() {
return displayOrder;
@@ -34,7 +34,7 @@ public void setDisplayOrder(final Integer displayOrder) {
this.displayOrder = displayOrder;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("show_condition")
public String getShowCondition() {
return showCondition;
@@ -44,7 +44,7 @@ public void setShowCondition(String showCondition) {
this.showCondition = showCondition;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("display_context_parameter")
public String getDisplayContextParameter() {
return displayContextParameter;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CriteriaField.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CriteriaField.java
index 9e0f748f72..3f92f00b4c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CriteriaField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/CriteriaField.java
@@ -3,7 +3,8 @@
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
public class CriteriaField implements Serializable, CommonDCPModel {
@@ -15,7 +16,7 @@ public class CriteriaField implements Serializable, CommonDCPModel {
private String displayContextParameter = null;
private String showCondition;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_field_id")
public String getCaseFieldId() {
return caseFieldId;
@@ -25,7 +26,7 @@ public void setCaseFieldId(String caseFieldId) {
this.caseFieldId = caseFieldId;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_field_element_path")
public String getCaseFieldPath() {
return caseFieldPath;
@@ -35,7 +36,7 @@ public void setCaseFieldPath(String caseFieldPath) {
this.caseFieldPath = caseFieldPath;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("label")
public String getLabel() {
return label;
@@ -45,7 +46,7 @@ public void setLabel(String label) {
this.label = label;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("order")
public Integer getDisplayOrder() {
return displayOrder;
@@ -55,7 +56,7 @@ public void setDisplayOrder(Integer displayOrder) {
this.displayOrder = displayOrder;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("role")
public String getRole() {
return role;
@@ -65,7 +66,7 @@ public void setRole(final String role) {
this.role = role;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("display_context_parameter")
public String getDisplayContextParameter() {
return displayContextParameter;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/DraftResponseToCaseDetailsBuilder.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/DraftResponseToCaseDetailsBuilder.java
index 469aae8fb4..4bec0a58cd 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/DraftResponseToCaseDetailsBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/DraftResponseToCaseDetailsBuilder.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.model.definition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.domain.model.draft.CaseDraft;
import uk.gov.hmcts.ccd.domain.model.draft.DraftResponse;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/EventPostStateDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/EventPostStateDefinition.java
index 30b3d1921f..4a859e5667 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/EventPostStateDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/EventPostStateDefinition.java
@@ -2,13 +2,15 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
import java.io.Serializable;
import lombok.NoArgsConstructor;
import lombok.ToString;
@ToString
-@ApiModel(description = "")
+@Schema
@NoArgsConstructor
public class EventPostStateDefinition implements Serializable, Copyable {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/FixedListItemDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/FixedListItemDefinition.java
index 0ed4a2d915..bf78fded13 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/FixedListItemDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/FixedListItemDefinition.java
@@ -4,10 +4,10 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-@ApiModel(description = "")
+import io.swagger.v3.oas.annotations.media.Schema;
+
+@Schema
public class FixedListItemDefinition implements Serializable, Copyable {
private static final long serialVersionUID = 6196146295016140921L;
@@ -15,7 +15,7 @@ public class FixedListItemDefinition implements Serializable, Copyable {
@@ -24,7 +25,7 @@ public class JurisdictionDefinition implements Serializable, Copyable caseTypeDefinitions = new ArrayList<>();
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("id")
public String getId() {
return id;
@@ -34,7 +35,7 @@ public void setId(String id) {
this.id = id;
}
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("name")
public String getName() {
return name;
@@ -44,7 +45,7 @@ public void setName(String name) {
this.name = name;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("description")
public String getDescription() {
return description;
@@ -54,7 +55,7 @@ public void setDescription(String description) {
this.description = description;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("live_from")
public Date getLiveFrom() {
return liveFrom;
@@ -64,7 +65,7 @@ public void setLiveFrom(Date liveFrom) {
this.liveFrom = liveFrom;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("live_until")
public Date getLiveUntil() {
return liveUntil;
@@ -74,7 +75,7 @@ public void setLiveUntil(Date liveUntil) {
this.liveUntil = liveUntil;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_types")
public List getCaseTypeDefinitions() {
return caseTypeDefinitions;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/JurisdictionUiConfigResult.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/JurisdictionUiConfigResult.java
index 36f7797b2d..727405624b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/JurisdictionUiConfigResult.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/JurisdictionUiConfigResult.java
@@ -5,11 +5,11 @@
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+
@SuppressWarnings("checkstyle:SummaryJavadoc")
-@ApiModel(description = "")
+@Schema
public class JurisdictionUiConfigResult implements Serializable {
private List configs;
@@ -24,7 +24,7 @@ public JurisdictionUiConfigResult(List configs)
/**
*
**/
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("configs")
public List getConfigs() {
return configs;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputField.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputField.java
index 5cf3e0fcd8..be526a44df 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputField.java
@@ -2,10 +2,10 @@
import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.ToString;
@ToString
-@ApiModel(description = "")
+@Schema
public class SearchInputField extends CriteriaField implements Serializable {
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputFieldsDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputFieldsDefinition.java
index 529553a644..885ed3f2de 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputFieldsDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/SearchInputFieldsDefinition.java
@@ -1,8 +1,8 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.ToString;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
@@ -11,14 +11,14 @@
import java.util.List;
@ToString
-@ApiModel(description = "")
+@Schema
public class SearchInputFieldsDefinition implements Serializable, CommonDCPModel {
private String caseTypeId = null;
private List fields = new ArrayList<>();
private String displayContextParameter = null;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_type_id")
public String getCaseTypeId() {
return caseTypeId;
@@ -28,7 +28,7 @@ public void setCaseTypeId(String caseTypeId) {
this.caseTypeId = caseTypeId;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("fields")
public List getFields() {
return fields;
@@ -38,7 +38,7 @@ public void setFields(List fields) {
this.fields = fields;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("display_context_parameter")
public String getDisplayContextParameter() {
return displayContextParameter;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/UserRole.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/UserRole.java
index e8d1b730d6..4c8dbd140c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/UserRole.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/UserRole.java
@@ -1,14 +1,14 @@
package uk.gov.hmcts.ccd.domain.model.definition;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-@ApiModel(description = "")
+import io.swagger.v3.oas.annotations.media.Schema;
+
+@Schema
public class UserRole implements Serializable {
private static final long serialVersionUID = -6867026961393510122L;
@@ -32,7 +32,7 @@ public class UserRole implements Serializable {
@NotNull
private String securityClassification;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("id")
public Integer getId() {
return id;
@@ -42,7 +42,7 @@ public void setId(final Integer id) {
this.id = id;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("created_at")
public String getCreatedAt() {
return createdAt;
@@ -60,7 +60,7 @@ public void setLiveTo(final String liveTo) {
this.liveTo = liveTo;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("role")
public String getRole() {
return role;
@@ -70,7 +70,7 @@ public void setRole(final String role) {
this.role = role;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("security_classification")
public String getSecurityClassification() {
return securityClassification;
@@ -80,13 +80,13 @@ public void setSecurityClassification(final String securityClassification) {
this.securityClassification = securityClassification;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("live_from")
public String getLiveFrom() {
return liveFrom;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("live_to")
public String getLiveTo() {
return liveTo;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/Version.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/Version.java
index 100d9d8e47..3aab8b99b8 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/Version.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/Version.java
@@ -1,20 +1,20 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.Date;
-@ApiModel(description = "")
+@Schema
public class Version implements Serializable, Copyable {
private Integer number = null;
private Date liveFrom = null;
private Date liveUntil = null;
- @ApiModelProperty(required = true, value = "Sequantial version number")
+ @Schema(required = true, description = "Sequantial version number")
@JsonProperty("number")
public Integer getNumber() {
return number;
@@ -27,7 +27,7 @@ public void setNumber(Integer number) {
/**
* Date and time from when this version is valid from.
**/
- @ApiModelProperty(required = true, value = "Date and time from when this version is valid from")
+ @Schema(required = true, description = "Date and time from when this version is valid from")
@JsonProperty("live_from")
public Date getLiveFrom() {
return liveFrom;
@@ -40,7 +40,7 @@ public void setLiveFrom(Date liveFrom) {
/**
* Date and time this version is to be retired.
**/
- @ApiModelProperty(value = "Date and time this version is to be retired")
+ @Schema(description = "Date and time this version is to be retired")
@JsonProperty("live_until")
public Date getLiveUntil() {
return liveUntil;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPage.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPage.java
index 389ec32060..c855f79f37 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPage.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPage.java
@@ -2,8 +2,8 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.ArrayList;
@@ -12,7 +12,7 @@
import java.util.Set;
import java.util.stream.Collectors;
-@ApiModel(description = "")
+@Schema
public class WizardPage implements Serializable, Copyable {
private String id = null;
@@ -23,7 +23,7 @@ public class WizardPage implements Serializable, Copyable {
private String callBackURLMidEvent;
private List retriesTimeoutMidEvent;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("id")
public String getId() {
return id;
@@ -42,7 +42,7 @@ public void setOrder(Integer order) {
this.order = order;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("label")
public String getLabel() {
return label;
@@ -52,7 +52,7 @@ public void setLabel(String label) {
this.label = label;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("wizard_page_fields")
public List getWizardPageFields() {
return wizardPageFields;
@@ -62,7 +62,7 @@ public void setWizardPageFields(List wizardPageFields) {
this.wizardPageFields = wizardPageFields;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("callback_url_mid_event")
public String getCallBackURLMidEvent() {
return callBackURLMidEvent;
@@ -72,7 +72,7 @@ public void setCallBackURLMidEvent(String callBackURLMidEvent) {
this.callBackURLMidEvent = callBackURLMidEvent;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("retries_timeout_mid_event")
public List getRetriesTimeoutMidEvent() {
return retriesTimeoutMidEvent == null ? Collections.emptyList() : retriesTimeoutMidEvent;
@@ -82,7 +82,7 @@ public void setRetriesTimeoutMidEvent(List retriesTimeoutMidEvent) {
this.retriesTimeoutMidEvent = retriesTimeoutMidEvent;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("show_condition")
public String getShowCondition() {
return showCondition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageCollection.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageCollection.java
index 70b9154d2f..4a0797a488 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageCollection.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageCollection.java
@@ -1,13 +1,13 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.util.ArrayList;
import java.util.List;
-@ApiModel(description = "")
+@Schema
public class WizardPageCollection {
private String caseTypeId = null;
@@ -25,7 +25,7 @@ public WizardPageCollection(String caseTypeId, String eventId) {
/**
* Unique identifier for a Case Type.
**/
- @ApiModelProperty(required = true, value = "Unique identifier for a Case Type.")
+ @Schema(required = true, description = "Unique identifier for a Case Type.")
@JsonProperty("case_type_id")
public String getCaseTypeId() {
return caseTypeId;
@@ -38,7 +38,7 @@ public void setCaseTypeId(String caseTypeId) {
/**
* Identifier for the Event that is related to CaseTypeId.
**/
- @ApiModelProperty(required = true, value = "Event Trigger Id")
+ @Schema(required = true, description = "Event Trigger Id")
@JsonProperty("event_id")
public String getEventId() {
return eventId;
@@ -48,7 +48,7 @@ public void setEventId(String eventId) {
this.eventId = eventId;
}
- @ApiModelProperty(required = true, value = "")
+ @Schema(required = true)
@JsonProperty("wizard_pages")
public List getWizardPages() {
return wizardPages;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageComplexFieldOverride.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageComplexFieldOverride.java
index a08de80965..716661a70f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageComplexFieldOverride.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageComplexFieldOverride.java
@@ -2,12 +2,13 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.Optional;
-@ApiModel(description = "")
+@Schema
public class WizardPageComplexFieldOverride implements Serializable, Copyable {
private String complexFieldElementId;
private String displayContext;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageField.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageField.java
index ac042495e8..2b36c0b288 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WizardPageField.java
@@ -1,14 +1,15 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
-@ApiModel(description = "")
+@Schema
public class WizardPageField implements Serializable, Copyable {
private String caseFieldId = null;
private Integer order = null;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputField.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputField.java
index 6eebe53d20..f6b136212f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputField.java
@@ -2,8 +2,9 @@
import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
+import io.swagger.v3.oas.annotations.media.Schema;
-@ApiModel(description = "")
+
+@Schema
public class WorkbasketInputField extends CriteriaField implements Serializable {
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputFieldsDefinition.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputFieldsDefinition.java
index dde1789699..41471d5170 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputFieldsDefinition.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/definition/WorkbasketInputFieldsDefinition.java
@@ -1,22 +1,22 @@
package uk.gov.hmcts.ccd.domain.model.definition;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import uk.gov.hmcts.ccd.domain.model.common.CommonDCPModel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-@ApiModel(description = "")
+@Schema
public class WorkbasketInputFieldsDefinition implements Serializable, CommonDCPModel {
private String caseTypeId = null;
private List fields = new ArrayList<>();
private String displayContextParameter = null;
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("case_type_id")
public String getCaseTypeId() {
return caseTypeId;
@@ -26,7 +26,7 @@ public void setCaseTypeId(String caseTypeId) {
this.caseTypeId = caseTypeId;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("fields")
public List getFields() {
return fields;
@@ -36,7 +36,7 @@ public void setFields(List fields) {
this.fields = fields;
}
- @ApiModelProperty(value = "")
+ @Schema
@JsonProperty("display_context_parameter")
public String getDisplayContextParameter() {
return displayContextParameter;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/CreateCaseDraftRequest.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/CreateCaseDraftRequest.java
index 8f3127cb2a..9cebbf3553 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/CreateCaseDraftRequest.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/CreateCaseDraftRequest.java
@@ -1,11 +1,12 @@
package uk.gov.hmcts.ccd.domain.model.draft;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.ToString;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
@ToString
public class CreateCaseDraftRequest {
@@ -15,9 +16,9 @@ public class CreateCaseDraftRequest {
@NotNull
private String type;
- @ApiModelProperty(
+ @Schema(
name = "max_stale_days",
- notes = "Number of days before removing a draft that hasn't been updated"
+ description = "Number of days before removing a draft that hasn't been updated"
)
@Min(value = 1L)
@JsonProperty("max_age")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/UpdateCaseDraftRequest.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/UpdateCaseDraftRequest.java
index dcdf387420..d91c571176 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/UpdateCaseDraftRequest.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/draft/UpdateCaseDraftRequest.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.model.draft;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotNull;
public class UpdateCaseDraftRequest {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchCriteria.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchCriteria.java
index b86df697bc..500f0012e2 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchCriteria.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchCriteria.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -11,7 +11,7 @@
import java.util.List;
-@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
@Builder
@AllArgsConstructor
@NoArgsConstructor
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchPartyValue.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchPartyValue.java
index 69bdd5ef26..5e1d664880 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchPartyValue.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/globalsearch/SearchPartyValue.java
@@ -2,15 +2,15 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
-@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
@AllArgsConstructor
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/BuildingLocation.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/BuildingLocation.java
index c2e39cb1d5..f2bf94882e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/BuildingLocation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/BuildingLocation.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.model.refdata;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Builder;
import lombok.Value;
@@ -12,7 +12,7 @@
@Value
@Builder
@Jacksonized
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class BuildingLocation implements Serializable {
String buildingLocationId;
String buildingLocationName;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/CourtVenue.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/CourtVenue.java
index 94ae0c41f4..2c568412b7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/CourtVenue.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/CourtVenue.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.model.refdata;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Builder;
import lombok.Value;
@@ -12,7 +12,7 @@
@Value
@Builder
@Jacksonized
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class CourtVenue implements Serializable {
String courtVenueId;
String epimmsId;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/ServiceReferenceData.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/ServiceReferenceData.java
index 78ced0946f..6a001b5fc0 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/ServiceReferenceData.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/refdata/ServiceReferenceData.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.model.refdata;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Builder;
import lombok.Value;
@@ -13,7 +13,7 @@
@Value
@Builder
@Jacksonized
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class ServiceReferenceData implements Serializable {
long serviceId;
String orgUnit;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/elasticsearch/SearchResultViewHeaderGroup.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/elasticsearch/SearchResultViewHeaderGroup.java
index a3e4e99b97..87e85e509b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/elasticsearch/SearchResultViewHeaderGroup.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/elasticsearch/SearchResultViewHeaderGroup.java
@@ -1,7 +1,5 @@
package uk.gov.hmcts.ccd.domain.model.search.elasticsearch;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -10,19 +8,21 @@
import java.util.List;
+import io.swagger.v3.oas.annotations.media.Schema;
+
@Data
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
-@ApiModel(description = "Definition of a case type in the context of the search")
+@Schema(description = "Definition of a case type in the context of the search")
public class SearchResultViewHeaderGroup {
@NonNull
- @ApiModelProperty(value = "Metadata for the case type")
+ @Schema(description = "Metadata for the case type")
private HeaderGroupMetadata metadata;
@NonNull
- @ApiModelProperty(value = "Definition of the fields for the case type")
+ @Schema(description = "Definition of the fields for the case type")
private List fields;
@NonNull
- @ApiModelProperty(value = "Case references for the case type that are returned in the search")
+ @Schema(description = "Case references for the case type that are returned in the search")
private List cases;
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/GlobalSearchRequestPayload.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/GlobalSearchRequestPayload.java
index 52c2f0dfd2..fcfd6830b1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/GlobalSearchRequestPayload.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/GlobalSearchRequestPayload.java
@@ -7,8 +7,8 @@
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
import uk.gov.hmcts.ccd.domain.model.std.validator.globalsearch.ValidSearchCriteria;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.Min;
import java.util.List;
@Getter
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/Party.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/Party.java
index 92fa964cb2..7384f22ca6 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/Party.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/Party.java
@@ -4,7 +4,7 @@
import lombok.Setter;
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.validation.constraints.Pattern;
+import jakarta.validation.constraints.Pattern;
@Getter
@Setter
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/SearchCriteria.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/SearchCriteria.java
index f52d9abba8..35eb2b3ca4 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/SearchCriteria.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/search/global/SearchCriteria.java
@@ -5,9 +5,9 @@
import lombok.Setter;
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.validation.Valid;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
import java.util.List;
@Getter
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/AuditEvent.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/AuditEvent.java
index f5456a3f41..444e1287e4 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/AuditEvent.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/AuditEvent.java
@@ -3,7 +3,8 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@@ -41,10 +42,13 @@ public class AuditEvent extends Event {
@JsonProperty("state_name")
private String stateName;
@JsonProperty("data")
- @ApiModelProperty("Case data as defined in case type definition. See `docs/api/case-data.md` for data structure.")
+ @Schema(
+ description = "Case data as defined in case type definition. "
+ + "See `docs/api/case-data.md` for data structure."
+ )
private Map data;
@JsonProperty("data_classification")
- @ApiModelProperty("Same structure as `data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ @Schema(description = "Same structure as `data` with classification (`PUBLIC`, `PRIVATE`, `RESTRICTED`) "
+ "as field's value.")
private Map dataClassification;
@JsonProperty("security_classification")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageInformation.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageInformation.java
index b40509c49e..d5ad23ba64 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageInformation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageInformation.java
@@ -2,7 +2,8 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.annotations.ApiModelProperty;
+
+import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDateTime;
@@ -29,8 +30,10 @@ public class MessageInformation {
@JsonProperty("NewStateId")
private String newStateId;
@JsonProperty("AdditionalData")
- @ApiModelProperty("A JSON object (for future use) that contains additional case fields that have been configured "
- + "to be included in the event information that is published.")
+ @Schema(
+ description = "A JSON object (for future use) that contains additional case fields that have been configured "
+ + "to be included in the event information that is published."
+ )
private AdditionalMessageInformation data;
public Long getId() {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageQueueCandidate.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageQueueCandidate.java
index d12903bb2e..0e30db6d94 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageQueueCandidate.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/MessageQueueCandidate.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Data;
-import javax.persistence.Id;
+import jakarta.persistence.Id;
import java.time.LocalDateTime;
@Data
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/EventValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/EventValidator.java
index 27f03ec517..28475eaac1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/EventValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/EventValidator.java
@@ -3,8 +3,8 @@
import uk.gov.hmcts.ccd.domain.model.std.Event;
import uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/SupplementaryDataUpdateRequestValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/SupplementaryDataUpdateRequestValidator.java
index d3158708b7..af1731daa2 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/SupplementaryDataUpdateRequestValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/SupplementaryDataUpdateRequestValidator.java
@@ -2,8 +2,8 @@
import java.util.Optional;
import java.util.regex.Pattern;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.data.casedetails.supplementarydata.SupplementaryDataOperation;
import uk.gov.hmcts.ccd.domain.model.std.SupplementaryDataUpdateRequest;
import uk.gov.hmcts.ccd.endpoint.exceptions.BadRequestException;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SearchCriteriaValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SearchCriteriaValidator.java
index 8c2ad76462..e6559c3867 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SearchCriteriaValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SearchCriteriaValidator.java
@@ -3,8 +3,8 @@
import org.springframework.util.CollectionUtils;
import uk.gov.hmcts.ccd.domain.model.search.global.SearchCriteria;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
public class SearchCriteriaValidator implements ConstraintValidator {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortByValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortByValidator.java
index 9b25f066ac..80f14114ed 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortByValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortByValidator.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.search.global.GlobalSearchSortByCategory;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
public class SortByValidator implements ConstraintValidator {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortDirectionValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortDirectionValidator.java
index a8de9a8c3f..ff786d32af 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortDirectionValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/SortDirectionValidator.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.search.global.GlobalSearchSortDirection;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
public class SortDirectionValidator implements ConstraintValidator {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSearchCriteria.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSearchCriteria.java
index 2538066061..7fd9029e4f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSearchCriteria.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSearchCriteria.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortBy.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortBy.java
index 8fc3532dd9..53b7d50f71 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortBy.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortBy.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortDirection.java b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortDirection.java
index 89b24319d1..321e2dc8ac 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortDirection.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/model/std/validator/globalsearch/ValidSortDirection.java
@@ -2,8 +2,8 @@
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.validation.Constraint;
-import javax.validation.Payload;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/AuthorisationMapper.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/AuthorisationMapper.java
index 7a5b497c33..77759ceea4 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/AuthorisationMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/AuthorisationMapper.java
@@ -6,7 +6,7 @@
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AbstractAuthorisedCaseViewOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AbstractAuthorisedCaseViewOperation.java
index 0ea53a297f..103572e7f1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AbstractAuthorisedCaseViewOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AbstractAuthorisedCaseViewOperation.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
import java.util.Optional;
import java.util.Set;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.data.casedetails.CaseDetailsRepository;
import uk.gov.hmcts.ccd.data.definition.CaseDefinitionRepository;
import uk.gov.hmcts.ccd.domain.model.aggregated.AbstractCaseView;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetCriteriaOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetCriteriaOperation.java
index bc6c4d5e55..3e452dbfc3 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetCriteriaOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetCriteriaOperation.java
@@ -6,7 +6,7 @@
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.ccd.domain.model.casedataaccesscontrol.AccessProfile;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetEventTriggerOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetEventTriggerOperation.java
index 65ddf7656f..f36ad53104 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetEventTriggerOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/AuthorisedGetEventTriggerOperation.java
@@ -153,6 +153,7 @@ private void updateWithAccessControlMetadata(CaseUpdateViewEvent caseUpdateViewE
private CaseDetails getCaseDetails(String caseReference) {
CaseDetails caseDetails;
try {
+ Long.parseLong(caseReference); // Check if case reference is a number
caseDetails = caseDetailsRepository.findByReference(caseReference)
.orElseThrow(() -> new ResourceNotFoundException("No case exist with id=" + caseReference));
} catch (NumberFormatException nfe) {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/MergeDataToSearchResultOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/MergeDataToSearchResultOperation.java
index 5b4f65ddb8..a781218b45 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/MergeDataToSearchResultOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/aggregated/MergeDataToSearchResultOperation.java
@@ -8,8 +8,8 @@
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.domain.model.aggregated.CommonField;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/CallbackService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/CallbackService.java
index d3024a8e51..1f9ead80ac 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/CallbackService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/CallbackService.java
@@ -29,7 +29,7 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.CallbackException;
import uk.gov.hmcts.ccd.util.ClientContextUtil;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.time.Duration;
import java.time.Instant;
import java.util.Objects;
@@ -159,14 +159,14 @@ private Optional> sendRequest(final String url,
storePassThroughHeadersAsRequestAttributes(responseEntity, requestEntity, request);
responseEntity = replaceResponseEntityWithUpdatedHeaders(responseEntity, CLIENT_CONTEXT);
- httpStatus = responseEntity.getStatusCodeValue();
+ httpStatus = responseEntity.getStatusCode().value();
return Optional.of(responseEntity);
} catch (RestClientException e) {
LOG.warn("Unable to connect to callback service {} because of {} {}",
url, e.getClass().getSimpleName(), e.getMessage());
LOG.debug("", e); // debug stack trace
if (e instanceof HttpStatusCodeException) {
- httpStatus = ((HttpStatusCodeException) e).getRawStatusCode();
+ httpStatus = ((HttpStatusCodeException) e).getStatusCode().value();
}
return Optional.empty();
} finally {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/EventTokenService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/EventTokenService.java
index eda34a28ff..f371587db8 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/EventTokenService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/callbacks/EventTokenService.java
@@ -14,6 +14,8 @@
import java.util.Date;
+import javax.crypto.SecretKey;
+
import com.google.common.collect.Maps;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
@@ -21,6 +23,8 @@
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.SignatureException;
import io.jsonwebtoken.impl.TextCodec;
+import io.jsonwebtoken.security.Keys;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -76,9 +80,12 @@ public String generateToken(final String uid,
public EventTokenProperties parseToken(final String token) {
try {
+ SecretKey key = Keys.hmacShaKeyFor(tokenSecret.getBytes());
final Claims claims = Jwts.parser()
- .setSigningKey(TextCodec.BASE64.encode(tokenSecret))
- .parseClaimsJws(token).getBody();
+ .verifyWith(key)
+ .build()
+ .parseSignedClaims(token)
+ .getPayload();
return new EventTokenProperties(
claims.getSubject(),
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsService.java
index d2e1fface9..cb38737e14 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/CategoriesAndDocumentsService.java
@@ -21,8 +21,8 @@
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import static java.util.Collections.emptyList;
import static java.util.stream.Collectors.collectingAndThen;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/FileViewDocumentService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/FileViewDocumentService.java
index 4da51bcfc0..8f17e8f89d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/FileViewDocumentService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/casefileview/FileViewDocumentService.java
@@ -16,7 +16,7 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-import javax.inject.Named;
+import jakarta.inject.Named;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNumeric;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkExtractor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkExtractor.java
index 03cd061739..7bb4c60453 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkExtractor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkExtractor.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.service.caselinking;
import com.fasterxml.jackson.databind.JsonNode;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.ccd.config.JacksonUtils;
import uk.gov.hmcts.ccd.domain.model.caselinking.CaseLink;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkService.java
index 683157c1e6..b8cd2ec48e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/caselinking/CaseLinkService.java
@@ -12,7 +12,7 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseDataExtractor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseDataExtractor.java
index acd78b9bd9..415a571e67 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseDataExtractor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseDataExtractor.java
@@ -17,8 +17,8 @@
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import static uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition.COLLECTION;
import static uk.gov.hmcts.ccd.domain.service.common.CaseFieldMetadataExtractor.FIELD_SEPARATOR;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseEventEnablingService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseEventEnablingService.java
index cdd056d203..684f5a18e6 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseEventEnablingService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseEventEnablingService.java
@@ -6,7 +6,7 @@
import uk.gov.hmcts.ccd.domain.model.aggregated.CaseViewField;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateEvaluationService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateEvaluationService.java
index fe7e3fc7b4..35d8027293 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateEvaluationService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateEvaluationService.java
@@ -2,7 +2,7 @@
import java.util.List;
import java.util.Map;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.ccd.domain.enablingcondition.EnablingConditionParser;
import uk.gov.hmcts.ccd.domain.model.definition.EventPostStateDefinition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateService.java
index b523227d57..cfa33a8d73 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CasePostStateService.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.service.common;
import java.util.List;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.springframework.stereotype.Service;
import uk.gov.hmcts.ccd.domain.enablingcondition.PrioritiseEnablingCondition;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseTypeService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseTypeService.java
index b39c151c91..0603994030 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseTypeService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/CaseTypeService.java
@@ -13,9 +13,9 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.CaseValidationException;
import uk.gov.hmcts.ccd.endpoint.exceptions.ResourceNotFoundException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
import java.util.Map;
import java.util.Optional;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/ComplexCaseTypeMetadataExtractor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/ComplexCaseTypeMetadataExtractor.java
index d28f37ab44..58d18d868c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/ComplexCaseTypeMetadataExtractor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/ComplexCaseTypeMetadataExtractor.java
@@ -11,7 +11,7 @@
import java.util.List;
import java.util.Map;
-import javax.inject.Named;
+import jakarta.inject.Named;
import static uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition.COMPLEX;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/EventTriggerService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/EventTriggerService.java
index 0126554bfb..fc6f6ab4b7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/EventTriggerService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/EventTriggerService.java
@@ -5,8 +5,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseTypeDefinition;
import uk.gov.hmcts.ccd.endpoint.exceptions.InvalidDefinitionException;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import static uk.gov.hmcts.ccd.domain.model.definition.CaseStateDefinition.ANY;
@Named
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/PersistenceStrategyResolver.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/PersistenceStrategyResolver.java
index ce92d9bdcf..30f518129c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/PersistenceStrategyResolver.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/PersistenceStrategyResolver.java
@@ -2,6 +2,7 @@
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
+import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -9,7 +10,6 @@
import uk.gov.hmcts.ccd.data.persistence.CasePointerRepository;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
-import javax.validation.constraints.NotNull;
import java.net.URI;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SecurityClassificationUtils.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SecurityClassificationUtils.java
index e179f12d96..5a6d98569d 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SecurityClassificationUtils.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SecurityClassificationUtils.java
@@ -2,9 +2,10 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.util.StringUtils;
import uk.gov.hmcts.ccd.data.casedetails.SecurityClassification;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SimpleCaseTypeMetadataExtractor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SimpleCaseTypeMetadataExtractor.java
index 8bb7c78295..380d86a9dc 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SimpleCaseTypeMetadataExtractor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/SimpleCaseTypeMetadataExtractor.java
@@ -13,7 +13,7 @@
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.inject.Named;
+import jakarta.inject.Named;
import static java.util.Collections.singletonList;
import static uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition.COLLECTION;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/UIDService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/UIDService.java
index 6ba77bc525..36dfa39799 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/common/UIDService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/common/UIDService.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.service.common;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.security.SecureRandom;
import static java.lang.Character.getNumericValue;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/DefaultCreateCaseOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/DefaultCreateCaseOperation.java
index b0151664f8..e41e97b820 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/DefaultCreateCaseOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/DefaultCreateCaseOperation.java
@@ -43,7 +43,7 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException;
import uk.gov.hmcts.ccd.infrastructure.IdempotencyKeyHolder;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/SubmitCaseTransaction.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/SubmitCaseTransaction.java
index f43990f07c..dec8db3854 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/SubmitCaseTransaction.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/createcase/SubmitCaseTransaction.java
@@ -39,7 +39,7 @@
import uk.gov.hmcts.ccd.v2.external.domain.DocumentHashToken;
import uk.gov.hmcts.ccd.ApplicationParams;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java
index a16a8a9a87..273a2e1376 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/CreateCaseEventService.java
@@ -61,7 +61,7 @@
import uk.gov.hmcts.ccd.infrastructure.user.UserAuthorisation;
import uk.gov.hmcts.ccd.v2.external.domain.DocumentHashToken;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.time.Clock;
import java.time.LocalDateTime;
import java.util.HashMap;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/DefaultCreateEventOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/DefaultCreateEventOperation.java
index 0c477d6595..af432949f5 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/DefaultCreateEventOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/createevent/DefaultCreateEventOperation.java
@@ -16,8 +16,8 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.CallbackException;
import uk.gov.hmcts.ccd.infrastructure.IdempotencyKeyHolder;
-import javax.inject.Inject;
-import javax.transaction.Transactional;
+import jakarta.inject.Inject;
+import jakarta.transaction.Transactional;
import java.util.UUID;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentAmApiClient.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentAmApiClient.java
index b9e63572e6..83c675ca67 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentAmApiClient.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentAmApiClient.java
@@ -10,8 +10,8 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
import uk.gov.hmcts.reform.ccd.document.am.feign.CaseDocumentClientApi;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
@Named
public class CaseDocumentAmApiClient {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentService.java
index 967853d78f..4ebdac6b7e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentService.java
@@ -11,8 +11,8 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException;
import uk.gov.hmcts.ccd.v2.external.domain.DocumentHashToken;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import java.util.List;
import java.util.Map;
import java.util.Set;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentTimestampService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentTimestampService.java
index e0fe757241..f6a3b28310 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentTimestampService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentTimestampService.java
@@ -6,8 +6,8 @@
import uk.gov.hmcts.ccd.ApplicationParams;
import uk.gov.hmcts.ccd.domain.model.definition.CaseDetails;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import java.time.Clock;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentUtils.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentUtils.java
index 68d8f4ea6c..294d3fdc75 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentUtils.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/CaseDocumentUtils.java
@@ -6,7 +6,7 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.BadRequestException;
import uk.gov.hmcts.ccd.v2.external.domain.DocumentHashToken;
-import javax.inject.Named;
+import jakarta.inject.Named;
import java.util.List;
import java.util.Map;
import java.util.Objects;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/DocumentIdValidationService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/DocumentIdValidationService.java
index b6f87629c3..0bdffea075 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/DocumentIdValidationService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getcasedocument/DocumentIdValidationService.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.service.getcasedocument;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.UUID;
@Named
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/getdraft/DefaultGetDraftsOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/getdraft/DefaultGetDraftsOperation.java
index 4968afa0ee..207cb3f5e5 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/getdraft/DefaultGetDraftsOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/getdraft/DefaultGetDraftsOperation.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.service.getdraft;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/lau/AuditCaseRemoteOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/lau/AuditCaseRemoteOperation.java
index 502a056582..bca3ec9bc3 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/lau/AuditCaseRemoteOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/lau/AuditCaseRemoteOperation.java
@@ -23,6 +23,7 @@
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
@Service
@Slf4j
@@ -44,13 +45,18 @@ public class AuditCaseRemoteOperation implements AuditRemoteOperation {
private final AuditCaseRemoteConfiguration auditCaseRemoteConfiguration;
+ private final ExecutorService virtualThreadPerTaskExecutor;
+
@Autowired
public AuditCaseRemoteOperation(@Lazy final SecurityUtils securityUtils,
LogAndAuditFeignClient logAndAuditFeignClient,
- final AuditCaseRemoteConfiguration auditCaseRemoteConfiguration) {
+ final AuditCaseRemoteConfiguration auditCaseRemoteConfiguration,
+ @Qualifier("virtualThreadPerTaskExecutor")
+ ExecutorService virtualThreadPerTaskExecutor) {
this.securityUtils = securityUtils;
this.logAndAuditFeignClient = logAndAuditFeignClient;
this.auditCaseRemoteConfiguration = auditCaseRemoteConfiguration;
+ this.virtualThreadPerTaskExecutor = virtualThreadPerTaskExecutor;
}
@Override
@@ -120,12 +126,14 @@ public void postAsyncAuditRequestAndHandleResponse(
if (LAU_CASE_ACTION_CREATE.equals(activity) || LAU_CASE_ACTION_UPDATE.equals(activity)
|| LAU_CASE_ACTION_VIEW.equals(activity)) {
CompletableFuture> future = CompletableFuture.supplyAsync(() ->
- logAndAuditFeignClient.postCaseAction(securityUtils.getServiceAuthorization(), capr));
+ logAndAuditFeignClient.postCaseAction(securityUtils.getServiceAuthorization(), capr),
+ virtualThreadPerTaskExecutor);
future.whenComplete((response, error) ->
handleAuditResponse(response, error, entry.getRequestId(), activity, url, auditLogId));
} else if ("SEARCH".equals(activity)) {
CompletableFuture> future = CompletableFuture.supplyAsync(() ->
- logAndAuditFeignClient.postCaseSearch(securityUtils.getServiceAuthorization(), cspr));
+ logAndAuditFeignClient.postCaseSearch(securityUtils.getServiceAuthorization(), cspr),
+ virtualThreadPerTaskExecutor);
future.whenComplete((response, error) ->
handleAuditResponse(response, error, entry.getRequestId(), activity, url, auditLogId));
}
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/message/CaseEventMessageService.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/message/CaseEventMessageService.java
index 0a9246cb0b..34ded349de 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/message/CaseEventMessageService.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/message/CaseEventMessageService.java
@@ -13,7 +13,7 @@
import uk.gov.hmcts.ccd.domain.service.message.additionaldata.DefinitionBlockGenerator;
import uk.gov.hmcts.ccd.domain.service.message.additionaldata.DataBlockGenerator;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
@Service
@Qualifier("caseEventMessageService")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/message/additionaldata/PublishableField.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/message/additionaldata/PublishableField.java
index eced259dc4..71f94f460f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/message/additionaldata/PublishableField.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/message/additionaldata/PublishableField.java
@@ -5,7 +5,7 @@
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.domain.model.aggregated.CommonField;
import uk.gov.hmcts.ccd.domain.model.definition.CaseEventFieldComplexDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.CaseEventFieldDefinition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeEntryProcessor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeEntryProcessor.java
index 3303e3ce15..1cd423ca5a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeEntryProcessor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeEntryProcessor.java
@@ -13,7 +13,6 @@
import uk.gov.hmcts.ccd.domain.model.aggregated.CommonField;
import uk.gov.hmcts.ccd.domain.model.definition.WizardPageComplexFieldOverride;
import uk.gov.hmcts.ccd.domain.service.processor.CaseDataFieldProcessor;
-import uk.gov.hmcts.ccd.domain.service.processor.date.DateTimeFormatParser;
import uk.gov.hmcts.ccd.domain.types.BaseType;
import uk.gov.hmcts.ccd.endpoint.exceptions.DataProcessingException;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeSearchInputProcessor.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeSearchInputProcessor.java
index 2785c3e81d..5a2a3393a5 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeSearchInputProcessor.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/processor/date/DateTimeSearchInputProcessor.java
@@ -13,7 +13,6 @@
import uk.gov.hmcts.ccd.domain.model.search.CriteriaType;
import uk.gov.hmcts.ccd.domain.service.aggregated.DefaultGetCriteriaOperation;
import uk.gov.hmcts.ccd.domain.service.aggregated.GetCriteriaOperation;
-import uk.gov.hmcts.ccd.domain.service.processor.date.DateTimeFormatParser;
import uk.gov.hmcts.ccd.endpoint.exceptions.DataProcessingException;
import java.util.HashMap;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchMappings.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchMappings.java
index cc078d4022..a35a777cf1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchMappings.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/ElasticsearchMappings.java
@@ -3,14 +3,13 @@
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.ConstructorBinding;
+import org.springframework.boot.context.properties.bind.ConstructorBinding;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
import java.util.List;
-@ConstructorBinding
@ConfigurationProperties("elasticsearch")
-@AllArgsConstructor
+@AllArgsConstructor(onConstructor = @__({@ConstructorBinding}))
@Getter
public class ElasticsearchMappings {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/SearchRoleAssignment.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/SearchRoleAssignment.java
index e0e97f25c3..51c04e532a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/SearchRoleAssignment.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/SearchRoleAssignment.java
@@ -2,7 +2,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.domain.model.casedataaccesscontrol.RoleAssignment;
import java.util.Optional;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/dto/ElasticSearchCaseDetailsDTO.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/dto/ElasticSearchCaseDetailsDTO.java
index 60590579fd..2726deb76f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/dto/ElasticSearchCaseDetailsDTO.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/dto/ElasticSearchCaseDetailsDTO.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import uk.gov.hmcts.ccd.data.casedetails.SecurityClassification;
@@ -10,7 +10,7 @@
import java.util.Map;
@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class ElasticSearchCaseDetailsDTO {
private String id;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/mapper/CaseDetailsMapper.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/mapper/CaseDetailsMapper.java
index 4e4b5222d9..90a9d509d0 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/mapper/CaseDetailsMapper.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/elasticsearch/mapper/CaseDetailsMapper.java
@@ -11,7 +11,7 @@
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, componentModel = "spring")
public interface CaseDetailsMapper {
- String EMPTY_MAP = "java(new HashMap<>())";
+ String EMPTY_MAP = "java(new java.util.HashMap<>())";
@Mapping(source = "data", target = "data", defaultExpression = EMPTY_MAP)
@Mapping(source = "dataClassification", target = "dataClassification", defaultExpression = EMPTY_MAP)
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchQueryBuilder.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchQueryBuilder.java
index eb0ea7d122..c60fcb4604 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchQueryBuilder.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchQueryBuilder.java
@@ -19,7 +19,7 @@
import uk.gov.hmcts.ccd.domain.model.search.global.SearchCriteria;
import uk.gov.hmcts.ccd.domain.model.search.global.SortCriteria;
-import javax.inject.Named;
+import jakarta.inject.Named;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchResponseTransformer.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchResponseTransformer.java
index 736a3a4847..f29c3fa82e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchResponseTransformer.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/search/global/GlobalSearchResponseTransformer.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import lombok.NonNull;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import uk.gov.hmcts.ccd.data.definition.CachedCaseDefinitionRepository;
import uk.gov.hmcts.ccd.data.definition.CaseDefinitionRepository;
@@ -20,8 +20,8 @@
import uk.gov.hmcts.ccd.domain.types.CollectionValidator;
import uk.gov.hmcts.ccd.domain.types.DynamicListValidator;
-import javax.inject.Inject;
-import javax.inject.Named;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/stdapi/DocumentsOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/stdapi/DocumentsOperation.java
index af599fc645..43fe2256ca 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/stdapi/DocumentsOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/stdapi/DocumentsOperation.java
@@ -20,9 +20,9 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ResourceNotFoundException;
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Arrays;
import java.util.List;
@@ -80,6 +80,7 @@ public List getPrintableDocumentsForCase(final String caseReference) {
private CaseDetails getCaseDetails(String caseReference) {
CaseDetails caseDetails = null;
try {
+ Long.parseLong(caseReference); // Check if case reference is a number
caseDetails = caseDetailsRepository.findByReference(caseReference)
.orElseThrow(() -> new ResourceNotFoundException("No case exist with id=" + caseReference));
} catch (NumberFormatException nfe) {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/upsertdraft/DefaultUpsertDraftOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/upsertdraft/DefaultUpsertDraftOperation.java
index 238e16bd29..bb888cf28b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/upsertdraft/DefaultUpsertDraftOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/upsertdraft/DefaultUpsertDraftOperation.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.service.upsertdraft;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/CaseDataIssueLogger.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/CaseDataIssueLogger.java
index 60e914736d..74588b2c21 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/CaseDataIssueLogger.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/CaseDataIssueLogger.java
@@ -12,7 +12,7 @@
import java.util.Map;
import java.util.stream.Collectors;
-import static org.apache.commons.lang.StringUtils.isEmpty;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
@Slf4j
@Service
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/DefaultValidateCaseFieldsOperation.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/DefaultValidateCaseFieldsOperation.java
index c6ad752e01..dfc672cedf 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/DefaultValidateCaseFieldsOperation.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/DefaultValidateCaseFieldsOperation.java
@@ -12,7 +12,7 @@
import uk.gov.hmcts.ccd.domain.types.ValidationContext;
import uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
import java.util.Map;
@Service
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/ValidateSignificantDocument.java b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/ValidateSignificantDocument.java
index a8c75dba93..b6adf3b3d6 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/ValidateSignificantDocument.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/service/validate/ValidateSignificantDocument.java
@@ -1,6 +1,6 @@
package uk.gov.hmcts.ccd.domain.service.validate;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.UrlValidator;
import uk.gov.hmcts.ccd.domain.model.callbacks.CallbackResponse;
import uk.gov.hmcts.ccd.domain.model.callbacks.SignificantItem;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseLocationValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseLocationValidator.java
index 9b0a8975f9..1a60243c1c 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseLocationValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseLocationValidator.java
@@ -4,9 +4,9 @@
import org.springframework.beans.factory.annotation.Qualifier;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
@Named("BaseLocationValidator")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseTypeConfiguration.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseTypeConfiguration.java
index fc77f214e9..2b3b0323fc 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseTypeConfiguration.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/BaseTypeConfiguration.java
@@ -6,7 +6,7 @@
import uk.gov.hmcts.ccd.data.definition.CaseDefinitionRepository;
import uk.gov.hmcts.ccd.data.definition.DefaultCaseDefinitionRepository;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
@Configuration
class BaseTypeConfiguration {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/CaseDataValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/CaseDataValidator.java
index c9780933a9..5c9c650ad2 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/CaseDataValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/CaseDataValidator.java
@@ -6,9 +6,9 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/CollectionValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/CollectionValidator.java
index cb663e48d2..9f7e6a2e41 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/CollectionValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/CollectionValidator.java
@@ -5,8 +5,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/CustomNumberValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/CustomNumberValidator.java
index 60ee457a7e..01a0bfae1b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/CustomNumberValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/CustomNumberValidator.java
@@ -4,8 +4,8 @@
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
@Named
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DateTimeValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DateTimeValidator.java
index a0f8716214..a5f232eb9e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DateTimeValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DateTimeValidator.java
@@ -9,8 +9,8 @@
import java.time.format.DateTimeParseException;
import java.util.Collections;
import java.util.List;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import static java.time.format.DateTimeFormatter.ISO_DATE_TIME;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DateValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DateValidator.java
index 38afbc4555..e8459cee04 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DateValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DateValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java
index 2174505ff7..4af5243a48 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DocumentValidator.java
@@ -10,8 +10,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicListValidator.java
index 264241e6ba..3d6ac23bd1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicListValidator.java
@@ -4,8 +4,8 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import org.apache.commons.lang3.StringUtils;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicMultiSelectListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicMultiSelectListValidator.java
index 7a7a1c1c34..a9d698f6e2 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicMultiSelectListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicMultiSelectListValidator.java
@@ -2,8 +2,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import java.util.List;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicRadioListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicRadioListValidator.java
index b1711f0d87..deef5d8a99 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicRadioListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/DynamicRadioListValidator.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.types;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/EmailValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/EmailValidator.java
index c3c5d361c8..e9d6d2f28a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/EmailValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/EmailValidator.java
@@ -3,10 +3,10 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import jakarta.mail.internet.AddressException;
+import jakarta.mail.internet.InternetAddress;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedListValidator.java
index 5ec13f97c1..bb31cde9fb 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedListValidator.java
@@ -4,8 +4,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FixedListItemDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedRadioListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedRadioListValidator.java
index c64b10ed3c..a5cb43a92f 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedRadioListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/FixedRadioListValidator.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.types;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/MoneyGBPValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/MoneyGBPValidator.java
index 8728c35451..1a8715c5eb 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/MoneyGBPValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/MoneyGBPValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Collections;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/MultiSelectListValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/MultiSelectListValidator.java
index 6377f2465f..4c374f3983 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/MultiSelectListValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/MultiSelectListValidator.java
@@ -4,8 +4,8 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FixedListItemDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/OrgPolicyCaseAssignedRoleValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/OrgPolicyCaseAssignedRoleValidator.java
index 39c7e8277c..455dcd6609 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/OrgPolicyCaseAssignedRoleValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/OrgPolicyCaseAssignedRoleValidator.java
@@ -5,9 +5,9 @@
import uk.gov.hmcts.ccd.data.caseaccess.CachedCaseRoleRepository;
import uk.gov.hmcts.ccd.data.caseaccess.CaseRoleRepository;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/PhoneUKValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/PhoneUKValidator.java
index c0acc4286a..499349c47b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/PhoneUKValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/PhoneUKValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/PostCodeValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/PostCodeValidator.java
index 86f3f75f21..2a64601ff7 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/PostCodeValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/PostCodeValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/RegionValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/RegionValidator.java
index 82423d3d5a..c5fbd5b262 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/RegionValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/RegionValidator.java
@@ -4,9 +4,9 @@
import org.springframework.beans.factory.annotation.Qualifier;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.List;
@Named("RegionValidator")
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextAreaValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextAreaValidator.java
index b7f657153f..8c93a4cebb 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextAreaValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextAreaValidator.java
@@ -1,7 +1,7 @@
package uk.gov.hmcts.ccd.domain.types;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextCaseReferenceCaseLinkValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextCaseReferenceCaseLinkValidator.java
index fa087cf491..ea00eeb050 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextCaseReferenceCaseLinkValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextCaseReferenceCaseLinkValidator.java
@@ -9,9 +9,9 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ResourceNotFoundException;
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextValidator.java
index 8c80cc1866..2ec2123fd9 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/TextValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/TextValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/YesNoValidator.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/YesNoValidator.java
index 6f6da2ef39..09754c22e1 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/YesNoValidator.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/YesNoValidator.java
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import uk.gov.hmcts.ccd.domain.model.definition.CaseFieldDefinition;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CaseSanitiser.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CaseSanitiser.java
index bbd620bd92..0d31eb7181 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CaseSanitiser.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CaseSanitiser.java
@@ -5,9 +5,9 @@
import uk.gov.hmcts.ccd.domain.model.definition.CaseTypeDefinition;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CollectionSanitiser.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CollectionSanitiser.java
index 698119ba2a..a20bc0cf6b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CollectionSanitiser.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/CollectionSanitiser.java
@@ -1,8 +1,8 @@
package uk.gov.hmcts.ccd.domain.types.sanitiser;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/ComplexSanitiser.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/ComplexSanitiser.java
index df32464584..bcfbeb8766 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/ComplexSanitiser.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/ComplexSanitiser.java
@@ -1,8 +1,8 @@
package uk.gov.hmcts.ccd.domain.types.sanitiser;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/DocumentSanitiser.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/DocumentSanitiser.java
index a656b110b4..723936de6e 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/DocumentSanitiser.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/DocumentSanitiser.java
@@ -1,11 +1,5 @@
package uk.gov.hmcts.ccd.domain.types.sanitiser;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import uk.gov.hmcts.ccd.ApplicationParams;
import uk.gov.hmcts.ccd.domain.model.definition.FieldTypeDefinition;
import uk.gov.hmcts.ccd.domain.types.sanitiser.client.DocumentManagementRestClient;
@@ -14,12 +8,19 @@
import uk.gov.hmcts.ccd.endpoint.exceptions.ServiceException;
import uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
import java.net.URI;
import java.net.URISyntaxException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
@Named
@Singleton
public class DocumentSanitiser implements Sanitiser {
diff --git a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/client/DocumentManagementRestClient.java b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/client/DocumentManagementRestClient.java
index 63d9bdeb0c..4498b0269a 100644
--- a/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/client/DocumentManagementRestClient.java
+++ b/src/main/java/uk/gov/hmcts/ccd/domain/types/sanitiser/client/DocumentManagementRestClient.java
@@ -14,8 +14,8 @@
import uk.gov.hmcts.ccd.domain.types.sanitiser.document.Document;
import uk.gov.hmcts.ccd.endpoint.exceptions.ApiException;
-import javax.inject.Named;
-import javax.inject.Singleton;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
@Named
@Singleton
diff --git a/src/main/java/uk/gov/hmcts/ccd/endpoint/exceptions/RestExceptionHandler.java b/src/main/java/uk/gov/hmcts/ccd/endpoint/exceptions/RestExceptionHandler.java
index aeb85d001e..d0976a488b 100644
--- a/src/main/java/uk/gov/hmcts/ccd/endpoint/exceptions/RestExceptionHandler.java
+++ b/src/main/java/uk/gov/hmcts/ccd/endpoint/exceptions/RestExceptionHandler.java
@@ -9,6 +9,7 @@
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -21,8 +22,8 @@
import uk.gov.hmcts.ccd.domain.model.common.HttpError;
import uk.gov.hmcts.ccd.domain.model.std.validator.ValidationError;
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.ConstraintViolationException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.ConstraintViolationException;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collections;
@@ -137,7 +138,7 @@ public ResponseEntity handleException(final HttpServletRequest reques
@Override
protected ResponseEntity