diff --git a/jersey/pom.xml b/jersey/pom.xml
index c2b37f7118..d279406e9a 100644
--- a/jersey/pom.xml
+++ b/jersey/pom.xml
@@ -76,6 +76,11 @@
jersey-apache-connector
${jersey.version}
+
+ org.glassfish.jersey.media
+ jersey-media-multipart
+ ${jersey.version}
+
@@ -102,4 +107,4 @@
3.1.1
-
\ No newline at end of file
+
diff --git a/jersey/src/main/java/com/baeldung/jersey/server/form/FormExampleResource.java b/jersey/src/main/java/com/baeldung/jersey/server/form/FormExampleResource.java
new file mode 100644
index 0000000000..15e82679ef
--- /dev/null
+++ b/jersey/src/main/java/com/baeldung/jersey/server/form/FormExampleResource.java
@@ -0,0 +1,61 @@
+package com.baeldung.jersey.server.form;
+
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.MediaType;
+import org.glassfish.jersey.media.multipart.FormDataParam;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+@Path("form")
+public class FormExampleResource
+{
+ @GET
+ @Path("/example1")
+ @Produces({MediaType.TEXT_HTML})
+ public InputStream getExample1() throws Exception
+ {
+ File f = new File("src/main/resources/html/example1.html");
+ return new FileInputStream(f);
+ }
+
+ @GET
+ @Path("/example2")
+ @Produces({MediaType.TEXT_HTML})
+ public InputStream getExample2() throws Exception
+ {
+ File f = new File("src/main/resources/html/example2.html");
+ return new FileInputStream(f);
+ }
+
+ @POST
+ @Path("/example1")
+ public String example1(@FormParam("first_name") String firstName,
+ @FormParam("last_name") String lastName,
+ @FormParam("age") String age)
+ {
+ return "Got: First = " + firstName + ", Last = " + lastName + ", Age = " + age;
+ }
+
+ @POST
+ @Path("/example2")
+ @Consumes(MediaType.MULTIPART_FORM_DATA)
+ public String example2(@FormDataParam("first_name") String firstName,
+ @FormDataParam("last_name") String lastName,
+ @FormDataParam("age") String age,
+ @FormDataParam("photo") InputStream photo)
+ throws Exception
+ {
+ int len;
+ int size = 1024;
+ byte[] buf;
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ buf = new byte[size];
+ while ((len = photo.read(buf, 0, size)) != -1)
+ bos.write(buf, 0, len);
+ buf = bos.toByteArray();
+ return "Got: First = " + firstName + ", Last = " + lastName + ", Age = " + age + ", Photo (# of bytes) = " + buf.length;
+ }
+}
diff --git a/jersey/src/main/resources/formexamples/example1.html b/jersey/src/main/resources/formexamples/example1.html
new file mode 100644
index 0000000000..6335dcce08
--- /dev/null
+++ b/jersey/src/main/resources/formexamples/example1.html
@@ -0,0 +1,16 @@
+
+
+ Example 1 using @FormParam
+
+
+
+
+
diff --git a/jersey/src/main/resources/formexamples/example2.html b/jersey/src/main/resources/formexamples/example2.html
new file mode 100644
index 0000000000..4875c652a4
--- /dev/null
+++ b/jersey/src/main/resources/formexamples/example2.html
@@ -0,0 +1,18 @@
+
+
+ Example 2 using @FormDataParam
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 6853b10587..197074c455 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1005,6 +1005,7 @@
spring-cloud-modules/spring-cloud-azure
spring-cloud-modules/spring-cloud-circuit-breaker
spring-cloud-modules/spring-cloud-contract
+ spring-cloud-modules/spring-cloud-data-flow
spring-cloud-modules/spring-cloud-netflix-feign
spring-cloud-modules/spring-cloud-stream-starters
spring-cloud-modules/spring-cloud-zuul-eureka-integration
diff --git a/spring-boot-modules/spring-boot-keycloak/pom.xml b/spring-boot-modules/spring-boot-keycloak/pom.xml
index bada9ab52d..13339c9de1 100644
--- a/spring-boot-modules/spring-boot-keycloak/pom.xml
+++ b/spring-boot-modules/spring-boot-keycloak/pom.xml
@@ -102,7 +102,7 @@
- com.baeldung.keycloak.SpringBoot
+ com.baeldung.keycloak.SpringBootKeycloakApp
4.0.0
1.6.3
2.5.0
diff --git a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBoot.java b/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBootKeycloakApp.java
similarity index 80%
rename from spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBoot.java
rename to spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBootKeycloakApp.java
index 90d7e774a4..a6f978fb3f 100644
--- a/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBoot.java
+++ b/spring-boot-modules/spring-boot-keycloak/src/main/java/com/baeldung/keycloak/SpringBootKeycloakApp.java
@@ -6,11 +6,10 @@ import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
-
-public class SpringBoot {
+public class SpringBootKeycloakApp {
public static void main(String[] args) {
- SpringApplication.run(SpringBoot.class, args);
+ SpringApplication.run(SpringBootKeycloakApp.class, args);
}
@Bean
diff --git a/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/keycloak/KeycloakContextIntegrationTest.java b/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/keycloak/KeycloakContextIntegrationTest.java
index 336c8364aa..116516acfe 100644
--- a/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/keycloak/KeycloakContextIntegrationTest.java
+++ b/spring-boot-modules/spring-boot-keycloak/src/test/java/com/baeldung/keycloak/KeycloakContextIntegrationTest.java
@@ -4,10 +4,9 @@ import org.junit.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
-import com.baeldung.keycloak.SpringBoot;
@ExtendWith(SpringExtension.class)
-@SpringBootTest(classes = { SpringBoot.class })
+@SpringBootTest(classes = { SpringBootKeycloakApp.class })
public class KeycloakContextIntegrationTest {
@Test
diff --git a/spring-boot-modules/spring-boot-swagger-keycloak/src/main/java/com/baeldung/swaggerkeycloak/GlobalSecurityConfig.java b/spring-boot-modules/spring-boot-swagger-keycloak/src/main/java/com/baeldung/swaggerkeycloak/GlobalSecurityConfig.java
index 5c24368ce6..9a1bf547db 100644
--- a/spring-boot-modules/spring-boot-swagger-keycloak/src/main/java/com/baeldung/swaggerkeycloak/GlobalSecurityConfig.java
+++ b/spring-boot-modules/spring-boot-swagger-keycloak/src/main/java/com/baeldung/swaggerkeycloak/GlobalSecurityConfig.java
@@ -3,10 +3,11 @@ package com.baeldung.swaggerkeycloak;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer;
+import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.core.session.SessionRegistryImpl;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.session.RegisterSessionAuthenticationStrategy;
@@ -24,16 +25,19 @@ public class GlobalSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
- http.csrf()
- .disable()
- .authorizeRequests()
- .requestMatchers(HttpMethod.OPTIONS)
+
+ http.csrf(AbstractHttpConfigurer::disable)
+ .authorizeHttpRequests((requests) -> requests.requestMatchers(HttpMethod.OPTIONS)
.permitAll()
.requestMatchers("/api/**")
.authenticated()
.anyRequest()
- .permitAll();
- http.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
+ .permitAll());
+
+ http.oauth2ResourceServer((oauth2) -> oauth2
+ .jwt(Customizer.withDefaults())
+ );
+
return http.build();
}
diff --git a/spring-cloud-modules/spring-cloud-contract/pom.xml b/spring-cloud-modules/spring-cloud-contract/pom.xml
index 7a9c8c32cd..f2d0d1b5b0 100644
--- a/spring-cloud-modules/spring-cloud-contract/pom.xml
+++ b/spring-cloud-modules/spring-cloud-contract/pom.xml
@@ -41,28 +41,35 @@
org.springframework.cloud
spring-cloud-contract-wiremock
- ${spring-cloud.version}
+ ${spring-cloud-contract.version}
test
org.springframework.cloud
spring-cloud-contract-stub-runner
- ${spring-cloud.version}
+ ${spring-cloud-contract.version}
test
org.springframework.cloud
spring-cloud-starter-contract-verifier
- ${spring-cloud.version}
+ ${spring-cloud-contract.version}
test
+
+ org.codehaus.groovy
+ groovy
+ ${groovy.version}
+
4.0.3
+ 4.0.4
2.1.4.RELEASE
2.17.1
+ 2.5.6
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml b/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
index 680e2e1795..a8c3337de5 100644
--- a/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
+++ b/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-consumer/pom.xml
@@ -16,6 +16,15 @@
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-data-rest
+
+
org.springframework.cloud
spring-cloud-contract-wiremock
@@ -26,20 +35,13 @@
spring-cloud-contract-stub-runner
test
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-data-rest
-
com.baeldung.spring.cloud
spring-cloud-contract-producer
${project.parent.version}
test
+
io.rest-assured
rest-assured
@@ -50,6 +52,12 @@
+
+
+ org.codehaus.groovy
+ groovy
+
+
\ No newline at end of file
diff --git a/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-producer/pom.xml b/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
index 35dd9596f7..eb80f8d3dd 100644
--- a/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
+++ b/spring-cloud-modules/spring-cloud-contract/spring-cloud-contract-producer/pom.xml
@@ -16,19 +16,17 @@
-
- org.springframework.cloud
- spring-cloud-starter-contract-verifier
- test
-
+
org.springframework.boot
spring-boot-starter-web
+
org.springframework.boot
spring-boot-starter-data-rest
+
io.rest-assured
rest-assured
@@ -39,6 +37,18 @@
+
+
+ org.springframework.cloud
+ spring-cloud-starter-contract-verifier
+ test
+
+
+
+ org.codehaus.groovy
+ groovy
+
+
@@ -46,7 +56,7 @@
org.springframework.cloud
spring-cloud-contract-maven-plugin
- 2.1.1.RELEASE
+ ${spring-cloud-contract.version}
true
com.baeldung.spring.cloud.springcloudcontractproducer.BaseTestClass
diff --git a/spring-cloud-modules/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/com/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java b/spring-cloud-modules/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/com/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
index 68f0db60eb..49eb255303 100644
--- a/spring-cloud-modules/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/com/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
+++ b/spring-cloud-modules/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/data-flow-server/src/test/java/com/baeldung/spring/cloud/DataFlowServerApplicationIntegrationTest.java
@@ -9,6 +9,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.test.context.junit4.SpringRunner;
@@ -39,5 +40,10 @@ public class DataFlowServerApplicationIntegrationTest {
return factory;
}
+
+ @Bean
+ public static ConfigureRedisAction configureRedisAction() {
+ return ConfigureRedisAction.NO_OP;
+ }
}
}