diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml
index cb0c83d..76f45e0 100644
--- a/.github/workflows/build_workflow.yml
+++ b/.github/workflows/build_workflow.yml
@@ -13,7 +13,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: temurin
- java-version: 21
+ java-version: 25
- name: Cache Maven dependencies
uses: actions/cache@v4
with:
diff --git a/.sdkmanrc b/.sdkmanrc
new file mode 100644
index 0000000..b5e2fc1
--- /dev/null
+++ b/.sdkmanrc
@@ -0,0 +1,3 @@
+# Enable auto-env through the sdkman_auto_env config
+# Add key=value pairs of SDKs to use below
+java=25.0.3-tem
diff --git a/ff4j-spring-boot-autoconfigure-common/pom.xml b/ff4j-spring-boot-autoconfigure-common/pom.xml
index 05e8cda..37ab5f2 100644
--- a/ff4j-spring-boot-autoconfigure-common/pom.xml
+++ b/ff4j-spring-boot-autoconfigure-common/pom.xml
@@ -31,10 +31,6 @@
org.ff4j
ff4j-core
-
- jakarta.annotation
- jakarta.annotation-api
-
org.springframework.boot
spring-boot
diff --git a/ff4j-spring-boot-starter-webmvc/pom.xml b/ff4j-spring-boot-starter-webmvc/pom.xml
index c0c563e..275dfc8 100644
--- a/ff4j-spring-boot-starter-webmvc/pom.xml
+++ b/ff4j-spring-boot-starter-webmvc/pom.xml
@@ -14,7 +14,7 @@
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-webmvc
org.ff4j
diff --git a/ff4j-spring-rest-api/pom.xml b/ff4j-spring-rest-api/pom.xml
index 89d8e54..6cb1e63 100644
--- a/ff4j-spring-rest-api/pom.xml
+++ b/ff4j-spring-rest-api/pom.xml
@@ -77,6 +77,12 @@
org.jetbrains.kotlin
kotlin-test-junit
test
+
+
+ junit
+ junit
+
+
org.springframework.boot
@@ -85,7 +91,7 @@
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-webmvc
test
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FF4jResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FF4jResource.kt
index 170d720..0326b13 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FF4jResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FF4jResource.kt
@@ -33,7 +33,6 @@ import org.ff4j.services.domain.AuthorizationsManagerApiBean
import org.ff4j.services.domain.FF4jStatusApiBean
import org.ff4j.services.exceptions.FeatureNotFoundException
import org.ff4j.web.FF4jWebConstants.*
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
@@ -47,7 +46,7 @@ import reactor.core.publisher.Mono
@Tag(name = "FF4J", description = "The API for global status of FF4J")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}"])
-class FF4jResource(@Autowired val ff4JServices: FF4jServices) {
+class FF4jResource(val ff4JServices: FF4jServices) {
@Operation(
summary = "Gets ff4j status overview",
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureResource.kt
index 0fcdc4f..c35e5d7 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureResource.kt
@@ -39,7 +39,6 @@ import org.ff4j.services.domain.FeatureApiBean
import org.ff4j.spring.rest.api.utils.FeatureWebUtils
import org.ff4j.services.model.FeatureActions
import org.ff4j.web.FF4jWebConstants.*
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus.ACCEPTED
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
@@ -52,7 +51,7 @@ import reactor.core.publisher.Mono
@Tag(name = "Feature", description = "The API for feature related operations")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_STORE$RESOURCE_FEATURES/$PATH_PARAM_UID"])
-class FeatureResource(@Autowired val featureServices: FeatureServices) {
+class FeatureResource(val featureServices: FeatureServices) {
@Operation(summary = "Get feature by uid", description = "Get feature by uid", tags = ["Feature"])
@ApiResponses(
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureStoreResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureStoreResource.kt
index 4ac4f94..7364cd8 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureStoreResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/FeatureStoreResource.kt
@@ -36,7 +36,6 @@ import org.ff4j.services.domain.FeatureApiBean
import org.ff4j.services.domain.FeatureStoreApiBean
import org.ff4j.services.domain.GroupDescApiBean
import org.ff4j.web.FF4jWebConstants.*
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus.NO_CONTENT
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
@@ -53,7 +52,7 @@ import reactor.core.publisher.Mono
@Tag(name = "FeatureStore", description = "The API for accessing the store of all features")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_STORE"])
-class FeatureStoreResource(@Autowired val featureStoreService: FeatureStoreServices) {
+class FeatureStoreResource(val featureStoreService: FeatureStoreServices) {
@Operation(summary = "Displays information regarding the FeaturesStore", tags = ["FeatureStore"])
@ApiResponses(
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/GroupResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/GroupResource.kt
index d2a985b..b67af0c 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/GroupResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/GroupResource.kt
@@ -35,7 +35,6 @@ import org.ff4j.services.constants.FeatureConstants.RESOURCE_STORE
import org.ff4j.services.domain.FeatureApiBean
import org.ff4j.web.FF4jWebConstants.OPERATION_DISABLE
import org.ff4j.web.FF4jWebConstants.OPERATION_ENABLE
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
@@ -47,7 +46,7 @@ import reactor.core.publisher.Flux
@Tag(name = "Groups", description = "The API for group related operations")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_STORE$RESOURCE_GROUPS/$PATH_PARAM_GROUP"])
-class GroupResource(@Autowired val groupServices: GroupServices) {
+class GroupResource(val groupServices: GroupServices) {
@Operation(summary = "Get all the features belonging to the group", tags = ["Groups"])
@ApiResponses(
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/MonitoringResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/MonitoringResource.kt
index 7cc0891..0f79a9b 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/MonitoringResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/MonitoringResource.kt
@@ -32,7 +32,6 @@ import org.ff4j.services.constants.FeatureConstants.RESOURCE_MONITORING
import org.ff4j.services.domain.EventRepositoryApiBean
import org.ff4j.web.FF4jWebConstants.PARAM_END
import org.ff4j.web.FF4jWebConstants.PARAM_START
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.GetMapping
@@ -47,7 +46,7 @@ import reactor.core.publisher.Mono
@Tag(name = "Monitoring", description = "The API for monitoring related operations")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_MONITORING"])
-class MonitoringResource(@Autowired val monitoringServices: MonitoringServices) {
+class MonitoringResource(val monitoringServices: MonitoringServices) {
@Operation(
summary = "Display Monitoring information for all features",
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyResource.kt
index a782105..c40bc50 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyResource.kt
@@ -37,7 +37,6 @@ import org.ff4j.services.constants.FeatureConstants.RESOURCE_PROPERTY_STORE
import org.ff4j.services.domain.PropertyApiBean
import org.ff4j.spring.rest.api.utils.FeatureWebUtils
import org.ff4j.web.FF4jWebConstants.OPERATION_UPDATE
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus.ACCEPTED
import org.springframework.http.HttpStatus.NO_CONTENT
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
@@ -51,7 +50,7 @@ import reactor.core.publisher.Mono
@Tag(name = "Property", description = "The API for property related operations")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_PROPERTY_STORE$RESOURCE_PROPERTIES/$PATH_PARAM_NAME"])
-class PropertyResource(@Autowired val propertyServices: PropertyServices) {
+class PropertyResource(val propertyServices: PropertyServices) {
@Operation(summary = "Read information about a property", tags = ["Property"])
@ApiResponses(
diff --git a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyStoreResource.kt b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyStoreResource.kt
index f45b8af..9960881 100644
--- a/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyStoreResource.kt
+++ b/ff4j-spring-rest-api/src/main/kotlin/org/ff4j/spring/rest/api/resources/PropertyStoreResource.kt
@@ -36,7 +36,6 @@ import org.ff4j.services.domain.PropertyApiBean
import org.ff4j.services.domain.PropertyStoreApiBean
import org.ff4j.web.FF4jWebConstants.RESOURCE_CACHE
import org.ff4j.web.FF4jWebConstants.STORE_CLEAR
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus.NO_CONTENT
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.http.ResponseEntity
@@ -53,7 +52,7 @@ import reactor.core.publisher.Mono
@Tag(name = "PropertyStore", description = "The API for accessing the store for all properties")
@RestController
@RequestMapping(value = ["\${ff4j.api.context-path:$RESOURCE_FF4J}$RESOURCE_PROPERTY_STORE"])
-class PropertyStoreResource(@Autowired val propertyStoreServices: PropertyStoreServices) {
+class PropertyStoreResource(val propertyStoreServices: PropertyStoreServices) {
@Operation(summary = "Display information regarding Properties Store", tags = ["PropertyStore"])
@ApiResponses(
diff --git a/ff4j-spring-services/pom.xml b/ff4j-spring-services/pom.xml
index 62f815a..e21be2e 100644
--- a/ff4j-spring-services/pom.xml
+++ b/ff4j-spring-services/pom.xml
@@ -88,6 +88,12 @@
org.jetbrains.kotlin
kotlin-test-junit
test
+
+
+ junit
+ junit
+
+
org.springframework
diff --git a/ff4j-spring-services/src/main/kotlin/org/ff4j/services/FF4jServices.kt b/ff4j-spring-services/src/main/kotlin/org/ff4j/services/FF4jServices.kt
index 646a3f9..aa88667 100644
--- a/ff4j-spring-services/src/main/kotlin/org/ff4j/services/FF4jServices.kt
+++ b/ff4j-spring-services/src/main/kotlin/org/ff4j/services/FF4jServices.kt
@@ -25,7 +25,6 @@ import org.ff4j.services.domain.AuthorizationsManagerApiBean
import org.ff4j.services.domain.FF4jStatusApiBean
import org.ff4j.services.exceptions.AuthorizationNotExistsException
import org.ff4j.services.validator.FeatureValidator
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import reactor.core.publisher.Mono
@@ -33,7 +32,7 @@ import reactor.core.publisher.Mono
* @author [Paul Williams](mailto:paul58914080@gmail.com)
*/
@Service
-class FF4jServices(@Autowired val fF4j: FF4j, @Autowired val ff4jValidator: FeatureValidator) {
+class FF4jServices(val fF4j: FF4j, val ff4jValidator: FeatureValidator) {
fun getStatus(): Mono {
return Mono.just(FF4jStatusApiBean(this.fF4j))
diff --git a/ff4j-spring-services/src/main/kotlin/org/ff4j/services/MonitoringServices.kt b/ff4j-spring-services/src/main/kotlin/org/ff4j/services/MonitoringServices.kt
index 2cbdb66..a6d3b2c 100644
--- a/ff4j-spring-services/src/main/kotlin/org/ff4j/services/MonitoringServices.kt
+++ b/ff4j-spring-services/src/main/kotlin/org/ff4j/services/MonitoringServices.kt
@@ -21,7 +21,6 @@ package org.ff4j.services
import org.ff4j.FF4j
import org.ff4j.services.domain.EventRepositoryApiBean
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import reactor.core.publisher.Mono
@@ -29,7 +28,7 @@ import reactor.core.publisher.Mono
* @author [Paul Williams](mailto:paul58914080@gmail.com)
*/
@Service
-class MonitoringServices(@Autowired val fF4j: FF4j) {
+class MonitoringServices(val fF4j: FF4j) {
fun getMonitoringStatus(): Mono {
return Mono.just(EventRepositoryApiBean(fF4j.eventRepository))
diff --git a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/CommonConstantsTest.kt b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/CommonConstantsTest.kt
index a6ed44a..d78641e 100644
--- a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/CommonConstantsTest.kt
+++ b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/CommonConstantsTest.kt
@@ -20,7 +20,7 @@
package org.ff4j.services.constants
import org.assertj.core.api.Assertions
-import org.junit.Test
+import org.junit.jupiter.api.Test
/**
* @author [Paul Williams](mailto:paul58914080@gmail.com)
diff --git a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/FeatureConstantsTest.kt b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/FeatureConstantsTest.kt
index dc5ecaf..109adde 100644
--- a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/FeatureConstantsTest.kt
+++ b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/constants/FeatureConstantsTest.kt
@@ -20,7 +20,7 @@
package org.ff4j.services.constants
import org.assertj.core.api.Assertions.assertThat
-import org.junit.Test
+import org.junit.jupiter.api.Test
/**
* @author [Paul Williams](mailto:paul58914080@gmail.com)
diff --git a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/BarSeriesApiBeanTest.kt b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/BarSeriesApiBeanTest.kt
index 6e99353..3cf3d13 100644
--- a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/BarSeriesApiBeanTest.kt
+++ b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/BarSeriesApiBeanTest.kt
@@ -21,7 +21,7 @@ package org.ff4j.services.domain
import org.assertj.core.api.Assertions
import org.ff4j.services.constants.CommonConstants
-import org.junit.Test
+import org.junit.jupiter.api.Test
/**
* @author [Paul Williams](mailto:paul58914080@gmail.com)
diff --git a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/DomainTest.kt b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/DomainTest.kt
index 93b9a08..7d1dc3b 100644
--- a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/DomainTest.kt
+++ b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/DomainTest.kt
@@ -19,8 +19,8 @@
*/
package org.ff4j.services.domain
-import org.junit.Assert
-import org.junit.Test
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
import org.meanbean.test.BeanTester
/**
@@ -32,7 +32,7 @@ class DomainTest {
@Test
fun getterAndSetterCorrectness() {
- Assert.assertTrue(true)
+ Assertions.assertTrue(true)
beanTester.testBean(FeatureApiBean::class.java)
beanTester.testBean(FeatureStoreApiBean::class.java)
beanTester.testBean(PropertyStoreApiBean::class.java)
diff --git a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/PieSectorApiBeanTest.kt b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/PieSectorApiBeanTest.kt
index bed9593..c6239e6 100644
--- a/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/PieSectorApiBeanTest.kt
+++ b/ff4j-spring-services/src/test/kotlin/org/ff4j/services/domain/PieSectorApiBeanTest.kt
@@ -21,7 +21,7 @@ package org.ff4j.services.domain
import org.assertj.core.api.Assertions
import org.ff4j.services.constants.CommonConstants
-import org.junit.Test
+import org.junit.jupiter.api.Test
/**
* @author [Paul Williams](mailto:paul58914080@gmail.com)
diff --git a/pom.xml b/pom.xml
index d21da31..fa0b44a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,18 +72,18 @@
UTF-8
- 21
- 4.0.1
+ 25
+ 4.1.0
2.1
- 2.21.0
- 2.3.0
- 7.33.0
- 6.0.2
- 3.0.1
+ 3.1.4
+ 2.4.0
+ 7.34.4
+ 6.1.0
+ 3.0.3
2.0.3
- 3.5.4
- 3.14.1
+ 3.5.6
+ 3.15.0
2.7.1
3.4.0
1.7.0
@@ -92,7 +92,7 @@
3.12.0
3.4.0
2.1.0
- 0.8.14
+ 0.8.15
3.6.2
0.10.0
official
@@ -183,7 +183,7 @@
${kotlin.version}
- com.fasterxml.jackson.module
+ tools.jackson.module
jackson-module-kotlin
${jackson-module-kotlin.version}
@@ -233,7 +233,7 @@
kotlin-stdlib
- com.fasterxml.jackson.module
+ tools.jackson.module
jackson-module-kotlin
@@ -368,6 +368,7 @@
${java.version}
${java.version}
+ ${java.version}