diff --git a/bruno/findUsers.bru b/bruno/findUsers.bru index be68a02..e14b0de 100644 --- a/bruno/findUsers.bru +++ b/bruno/findUsers.bru @@ -10,6 +10,10 @@ get { auth: basic } +headers { + operationName: findUsers +} + auth:basic { username: cxfrs password: password diff --git a/bruno/updateUser.bru b/bruno/updateUser.bru new file mode 100644 index 0000000..5eca81a --- /dev/null +++ b/bruno/updateUser.bru @@ -0,0 +1,28 @@ +meta { + name: updateUser + type: http + seq: 3 +} + +post { + url: http://localhost:9090/services/api/user + body: json + auth: basic +} + +headers { + Content-Type: application/json + X-MethodName: updateUser +} + +auth:basic { + username: cxfrs + password: password +} + +body:json { + { + "id": 3, + "name": "Bruce Wayne" + } +} diff --git a/pom.xml b/pom.xml index 7d08dd7..e320be0 100644 --- a/pom.xml +++ b/pom.xml @@ -81,12 +81,6 @@ org.apache.camel.springboot camel-jackson-starter - - org.apache.camel.springboot - camel-disruptor-starter - - - com.fasterxml.jackson.jakarta.rs jackson-jakarta-rs-json-provider diff --git a/src/main/java/com/example/camel/CamelRouter.java b/src/main/java/com/example/camel/CamelRouter.java index bb36e5c..d9da479 100644 --- a/src/main/java/com/example/camel/CamelRouter.java +++ b/src/main/java/com/example/camel/CamelRouter.java @@ -12,9 +12,9 @@ import jakarta.ws.rs.core.Response; @Component public class CamelRouter extends RouteBuilder { - @Value("${app.queue-name}") + @Value("${app.queue-name}") private String queueName; - + @Override public void configure() throws Exception { // very raw way, just to handle the validation responses @@ -24,12 +24,10 @@ public class CamelRouter extends RouteBuilder { from("cxfrs:/api?resourceClasses=" + UserService.class.getName() + "&bindingStyle=SimpleConsumer" + "&providers=jaxrsProvider&loggingFeatureEnabled=true").to("log:cxfrs-log?showAll=true") - .to("bean-validator:user").setHeader(Exchange.BEAN_METHOD_NAME, simple("${header.operationName}")) - .to("activemq6:queue:"+queueName); - - from("activemq6:queue:"+queueName).to("log:activemq6-log?showAll=true").to("disruptor:UserDisruptor"); + .setHeader(Exchange.BEAN_METHOD_NAME, simple("${header.operationName}")) + .to("activemq6:queue:" + queueName); - from("disruptor:UserDisruptor").to("log:disruptor-log?showAll=true").bean(UserServiceImpl.class).marshal() + from("activemq6:queue:" + queueName).to("bean-validator:user").bean(UserServiceImpl.class).marshal() .json(JsonLibrary.Jackson); } diff --git a/src/main/java/com/example/camel/SecurityConfig.java b/src/main/java/com/example/camel/SecurityConfig.java index 3cb87d5..00ba67d 100644 --- a/src/main/java/com/example/camel/SecurityConfig.java +++ b/src/main/java/com/example/camel/SecurityConfig.java @@ -38,7 +38,7 @@ public class SecurityConfig { http.authorizeHttpRequests( (authorize) -> authorize.requestMatchers(HttpMethod.GET, "/**").hasAuthority(ROLE_BACKEND) .requestMatchers(HttpMethod.POST, "/**").hasAuthority(ROLE_SERVER)) - .httpBasic(Customizer.withDefaults()); + .httpBasic(Customizer.withDefaults()).csrf(csrf -> csrf.disable()); return http.build(); } diff --git a/src/main/java/com/example/camel/User.java b/src/main/java/com/example/camel/User.java index b244fcc..0fe2adb 100644 --- a/src/main/java/com/example/camel/User.java +++ b/src/main/java/com/example/camel/User.java @@ -1,5 +1,6 @@ package com.example.camel; +import java.io.Serializable; import java.util.StringJoiner; import jakarta.validation.constraints.NotNull; @@ -9,7 +10,8 @@ import jakarta.validation.constraints.Size; * User entity * */ -public class User { +@SuppressWarnings("serial") +public class User implements Serializable { @NotNull(message = "custom message") private Integer id; diff --git a/src/main/java/com/example/camel/UserService.java b/src/main/java/com/example/camel/UserService.java index 1edb41d..a65460d 100644 --- a/src/main/java/com/example/camel/UserService.java +++ b/src/main/java/com/example/camel/UserService.java @@ -5,12 +5,11 @@ import java.util.Collection; import jakarta.validation.Valid; import jakarta.ws.rs.Consumes; import jakarta.ws.rs.GET; -import jakarta.ws.rs.PUT; +import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; -import jakarta.ws.rs.core.Response; /** * Service interface for managing users. @@ -45,9 +44,9 @@ public interface UserService { * @param user * the user */ - @PUT + @POST @Path("/user") @Consumes(MediaType.APPLICATION_JSON) - Response updateUser(@Valid User user); + User updateUser(@Valid User user); } \ No newline at end of file diff --git a/src/main/java/com/example/camel/UserServiceImpl.java b/src/main/java/com/example/camel/UserServiceImpl.java index 6bba16f..b80a002 100644 --- a/src/main/java/com/example/camel/UserServiceImpl.java +++ b/src/main/java/com/example/camel/UserServiceImpl.java @@ -4,8 +4,6 @@ import java.util.Collection; import java.util.Map; import java.util.TreeMap; -import jakarta.ws.rs.core.Response; - public class UserServiceImpl implements UserService { private final Map users = new TreeMap<>(); @@ -27,9 +25,9 @@ public class UserServiceImpl implements UserService { } @Override - public Response updateUser(User user) { + public User updateUser(User user) { users.put(user.getId(), user); - return Response.noContent().status(Response.Status.CREATED).build(); + return user; } } \ No newline at end of file