Skip to content

Commit a460ae4

Browse files
committed
Added devtools,integration tests,model validation,
1 parent 96440d2 commit a460ae4

28 files changed

+1053
-160
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
.gradle
22
build/
3+
out/
34
.vscode/
45

56
# Default ignored files
67
shelf/
7-
/workspace.xml
88
.idea/
9+
/workspace.xml
910
.idea_modules/
1011
sonarlint/
1112

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies {
2222
implementation 'org.springframework.boot:spring-boot-starter-web'
2323
implementation 'org.springframework.data:spring-data-couchbase'
2424

25+
implementation 'org.springframework.boot:spring-boot-devtools'
2526
// lombok
2627
compileOnly 'org.projectlombok:lombok'
2728
annotationProcessor 'org.projectlombok:lombok'

out/production/resources/application.properties

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.couchbase.quickstart.springdata.advice;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
import org.springframework.http.HttpStatus;
7+
import org.springframework.validation.FieldError;
8+
import org.springframework.web.bind.MethodArgumentNotValidException;
9+
import org.springframework.web.bind.annotation.ExceptionHandler;
10+
import org.springframework.web.bind.annotation.ResponseStatus;
11+
import org.springframework.web.bind.annotation.RestControllerAdvice;
12+
@RestControllerAdvice
13+
public class ApplicationExceptionHandler {
14+
15+
@ResponseStatus(HttpStatus.BAD_REQUEST)
16+
@ExceptionHandler(MethodArgumentNotValidException.class)
17+
public Map<String, String> handleValidationExceptions(
18+
MethodArgumentNotValidException ex) {
19+
Map<String, String> errorMap = new HashMap<>();
20+
21+
ex.getBindingResult().getAllErrors().forEach(error -> {
22+
String fieldName = ((FieldError) error).getField();
23+
String errorMessage = error.getDefaultMessage();
24+
errorMap.put(fieldName, errorMessage);
25+
});
26+
27+
return errorMap;
28+
}
29+
}

src/main/java/org/couchbase/quickstart/springdata/config/DBSetupRunner.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import java.util.Optional;
44

5-
import org.couchbase.quickstart.springdata.model.Airline;
6-
import org.couchbase.quickstart.springdata.model.Airport;
7-
import org.couchbase.quickstart.springdata.model.Route;
5+
import org.couchbase.quickstart.springdata.models.Airline;
6+
import org.couchbase.quickstart.springdata.models.Airport;
7+
import org.couchbase.quickstart.springdata.models.Route;
88
import org.couchbase.quickstart.springdata.repository.AirlineRepository;
99
import org.couchbase.quickstart.springdata.repository.AirportRepository;
1010
import org.couchbase.quickstart.springdata.repository.RouteRepository;

src/main/java/org/couchbase/quickstart/springdata/controller/AirlineController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.Optional;
44

5-
import org.couchbase.quickstart.springdata.model.Airline;
5+
import javax.validation.Valid;
6+
7+
import org.couchbase.quickstart.springdata.models.Airline;
68
import org.couchbase.quickstart.springdata.services.AirlineService;
79
import org.springframework.beans.factory.annotation.Autowired;
810
import org.springframework.data.domain.Page;
@@ -31,7 +33,7 @@ public AirlineController(AirlineService airlineService) {
3133
}
3234

3335
@PostMapping("/{id}")
34-
public ResponseEntity<Airline> createAirline(@PathVariable String id, @RequestBody Airline airline) {
36+
public ResponseEntity<Airline> createAirline(@PathVariable String id, @Valid @RequestBody Airline airline) {
3537
Airline createdAirline = airlineService.createAirline(id, airline);
3638
return new ResponseEntity<>(createdAirline, HttpStatus.CREATED);
3739
}
@@ -44,7 +46,7 @@ public ResponseEntity<Airline> getAirline(@PathVariable String id) {
4446
}
4547

4648
@PutMapping("/{id}")
47-
public ResponseEntity<Airline> updateAirline(@PathVariable String id, @RequestBody Airline airline) {
49+
public ResponseEntity<Airline> updateAirline(@PathVariable String id, @Valid @RequestBody Airline airline) {
4850
Airline updatedAirline = airlineService.updateAirline(id, airline);
4951
return new ResponseEntity<>(updatedAirline, HttpStatus.OK);
5052
}

src/main/java/org/couchbase/quickstart/springdata/controller/AirportController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.Optional;
44

5-
import org.couchbase.quickstart.springdata.model.Airport;
5+
import javax.validation.Valid;
6+
7+
import org.couchbase.quickstart.springdata.models.Airport;
68
import org.couchbase.quickstart.springdata.services.AirportService;
79
import org.springframework.beans.factory.annotation.Autowired;
810
import org.springframework.data.domain.Page;
@@ -27,7 +29,7 @@ public class AirportController {
2729
private AirportService airportService;
2830

2931
@PostMapping("/{id}")
30-
public ResponseEntity<Airport> createAirport(@PathVariable String id, @RequestBody Airport airport) {
32+
public ResponseEntity<Airport> createAirport(@PathVariable String id, @Valid @RequestBody Airport airport) {
3133
Airport createdAirport = airportService.createAirport(id, airport);
3234
return new ResponseEntity<>(createdAirport, HttpStatus.CREATED);
3335
}
@@ -40,7 +42,7 @@ public ResponseEntity<Airport> getAirport(@PathVariable String id) {
4042
}
4143

4244
@PutMapping("/{id}")
43-
public ResponseEntity<Airport> updateAirport(@PathVariable String id, @RequestBody Airport airport) {
45+
public ResponseEntity<Airport> updateAirport(@PathVariable String id, @Valid @RequestBody Airport airport) {
4446
Airport updatedAirport = airportService.updateAirport(id, airport);
4547
return new ResponseEntity<>(updatedAirport, HttpStatus.OK);
4648
}

src/main/java/org/couchbase/quickstart/springdata/controller/ProfileController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import java.util.List;
44
import java.util.UUID;
55

6-
import org.couchbase.quickstart.springdata.model.Profile;
6+
import javax.validation.Valid;
7+
8+
import org.couchbase.quickstart.springdata.models.Profile;
79
import org.couchbase.quickstart.springdata.repository.ProfileRepository;
810
import org.slf4j.Logger;
911
import org.slf4j.LoggerFactory;
@@ -66,7 +68,7 @@ public ResponseEntity<Profile> getProfileById(@PathVariable("id") UUID id) {
6668
}
6769

6870
@PostMapping("/profile")
69-
public ResponseEntity<Profile> saveProfile(@RequestBody Profile profile) {
71+
public ResponseEntity<Profile> saveProfile(@Valid @RequestBody Profile profile) {
7072
// the same endpoint can be used to create and save the object
7173
profile = profileRepository.save(profile);
7274
return ResponseEntity.status(HttpStatus.CREATED).body(profile);

src/main/java/org/couchbase/quickstart/springdata/controller/RouteController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.Optional;
44

5-
import org.couchbase.quickstart.springdata.model.Route;
5+
import javax.validation.Valid;
6+
7+
import org.couchbase.quickstart.springdata.models.Route;
68
import org.couchbase.quickstart.springdata.services.RouteService;
79
import org.springframework.beans.factory.annotation.Autowired;
810
import org.springframework.data.domain.Page;
@@ -27,7 +29,7 @@ public class RouteController {
2729
private RouteService routeService;
2830

2931
@PostMapping("/{id}")
30-
public ResponseEntity<Route> createRoute(@PathVariable String id, @RequestBody Route route) {
32+
public ResponseEntity<Route> createRoute(@PathVariable String id, @Valid @RequestBody Route route) {
3133
Route createdRoute = routeService.createRoute(id, route);
3234
return new ResponseEntity<>(createdRoute, HttpStatus.CREATED);
3335
}
@@ -40,7 +42,7 @@ public ResponseEntity<Route> getRoute(@PathVariable String id) {
4042
}
4143

4244
@PutMapping("/{id}")
43-
public ResponseEntity<Route> updateRoute(@PathVariable String id, @RequestBody Route route) {
45+
public ResponseEntity<Route> updateRoute(@PathVariable String id, @Valid @RequestBody Route route) {
4446
Route updatedRoute = routeService.updateRoute(id, route);
4547
return new ResponseEntity<>(updatedRoute, HttpStatus.OK);
4648
}

src/main/java/org/couchbase/quickstart/springdata/model/Airport.java

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)