Skip to content

Commit fd803ea

Browse files
committed
Regex check is added but pathvariable cannot be validated.
1 parent 9492b9f commit fd803ea

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

src/main/java/com/trendyol/recomengine/webservice/controller/ReviewController.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.springframework.web.bind.annotation.RestController;
1010

1111
import javax.validation.Valid;
12+
import javax.validation.constraints.NotBlank;
13+
import javax.validation.constraints.Pattern;
1214

1315
/**
1416
* Handles POST requests that contain user reviews, validates the data that comes from requests and sends them to Kafka.
@@ -33,7 +35,13 @@ public class ReviewController {
3335
* @see ReviewWithoutUserId
3436
*/
3537
@PostMapping(value = "/users/{userId}/reviews")
36-
public Object createReview(@Valid @RequestBody ReviewWithoutUserId requestBody, @PathVariable String userId) {
38+
public Object createReview(@Valid @RequestBody ReviewWithoutUserId requestBody,
39+
@PathVariable
40+
@Valid
41+
@NotBlank
42+
@Pattern(regexp = "^[a-zA-Z0-9]+$"
43+
, message = "userId must only contain alphanumeric characters.")
44+
String userId) {
3745
Review review = new Review(userId, requestBody);
3846

3947
String dataToSendToKafka = String.format("%s,%s,%.1f,%d", userId, requestBody.getProductId(),

src/main/java/com/trendyol/recomengine/webservice/model/Review.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.trendyol.recomengine.webservice.model;
22

33
import javax.validation.constraints.NotBlank;
4+
import javax.validation.constraints.Pattern;
45
import java.sql.Timestamp;
56

67
/**
@@ -9,6 +10,7 @@
910
public class Review extends ReviewWithoutUserId {
1011

1112
@NotBlank
13+
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "userId must only contain alphanumeric characters.")
1214
private final String userId;
1315

1416
/**

src/main/java/com/trendyol/recomengine/webservice/model/ReviewWithoutUserId.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.trendyol.recomengine.webservice.model;
22

3-
import javax.validation.constraints.DecimalMin;
4-
import javax.validation.constraints.Max;
5-
import javax.validation.constraints.NotBlank;
6-
import javax.validation.constraints.NotNull;
3+
import javax.validation.constraints.*;
74
import java.sql.Timestamp;
85

96
/**
@@ -12,6 +9,7 @@
129
public class ReviewWithoutUserId {
1310

1411
@NotBlank
12+
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "productId must only contain alphanumeric characters.")
1513
private final String productId;
1614

1715
@DecimalMin(value = "0.5")

src/main/java/com/trendyol/recomengine/webservice/repository/RecommendationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import com.trendyol.recomengine.webservice.model.Recommendation;
44
import org.springframework.data.mongodb.repository.MongoRepository;
5+
import org.springframework.stereotype.Repository;
56

67
/**
78
* Used to fetch recommendations of a specific user from MongoDB. Extends interface MongoRepository that is needed to
89
* configure the Spring Boot application to retrieve data from MongoDB. Required confifgurations are made in the
910
* application.yml file.
1011
*/
12+
@Repository
1113
public interface RecommendationRepository extends MongoRepository<Recommendation, String> {
1214

1315
/**

src/test/java/com/trendyol/recomengine/webservice/controller/ReviewControllerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import com.trendyol.recomengine.webservice.model.Review;
5+
import com.trendyol.recomengine.webservice.repository.RecommendationRepository;
56
import org.junit.Test;
67
import org.junit.runner.RunWith;
78
import org.springframework.beans.factory.annotation.Autowired;

0 commit comments

Comments
 (0)