Skip to content

Commit da2ea4f

Browse files
committed
Added Route Controller Test + Refactor controllers
Signed-off-by: teetangh <[email protected]>
1 parent 168292f commit da2ea4f

File tree

6 files changed

+282
-37
lines changed

6 files changed

+282
-37
lines changed

src/main/java/org/couchbase/quickstart/springboot/controllers/AirlineController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import org.couchbase.quickstart.springboot.configs.DBProperties;
77
import org.couchbase.quickstart.springboot.models.Airline;
8-
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.http.HttpStatus;
109
import org.springframework.http.ResponseEntity;
1110
import org.springframework.web.bind.annotation.CrossOrigin;

src/main/java/org/couchbase/quickstart/springboot/controllers/AirportController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.couchbase.quickstart.springboot.controllers;
22

3+
import java.net.URI;
34
import java.util.List;
45

56
import org.couchbase.quickstart.springboot.configs.DBProperties;
@@ -22,6 +23,7 @@
2223
import com.couchbase.client.java.query.QueryOptions;
2324
import com.couchbase.client.java.query.QueryScanConsistency;
2425

26+
2527
@RestController
2628
@RequestMapping("/api/v1/airport")
2729
public class AirportController {
@@ -54,7 +56,7 @@ public ResponseEntity<Airport> createAirport(@PathVariable String id, @RequestBo
5456
try {
5557
airportCol.insert(id, airport);
5658
Airport createdAirport = airportCol.get(id).contentAs(Airport.class);
57-
return new ResponseEntity<>(createdAirport, HttpStatus.CREATED);
59+
return ResponseEntity.created(new URI("/api/v1/airport/" + id)).body(createdAirport);
5860
} catch (Exception e) {
5961
return new ResponseEntity<>(HttpStatus.CONFLICT);
6062
}
Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,11 @@
11
package org.couchbase.quickstart.springboot.controllers;
22

3-
import java.util.Arrays;
3+
import java.net.URI;
44
import java.util.List;
5-
import java.util.UUID;
6-
7-
import com.couchbase.client.core.error.DocumentNotFoundException;
8-
import com.couchbase.client.core.msg.kv.DurabilityLevel;
9-
import com.couchbase.client.java.Bucket;
10-
import com.couchbase.client.java.Cluster;
11-
import com.couchbase.client.java.Collection;
12-
import com.couchbase.client.java.json.JsonObject;
13-
import com.couchbase.client.java.query.QueryOptions;
14-
import com.couchbase.client.java.query.QueryScanConsistency;
15-
import com.couchbase.client.java.transactions.TransactionQueryOptions;
16-
import com.couchbase.client.java.transactions.config.TransactionOptions;
175

186
import org.couchbase.quickstart.springboot.configs.DBProperties;
197
import org.couchbase.quickstart.springboot.models.Route;
208
import org.springframework.http.HttpStatus;
21-
import org.springframework.http.MediaType;
229
import org.springframework.http.ResponseEntity;
2310
import org.springframework.web.bind.annotation.CrossOrigin;
2411
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -28,13 +15,17 @@
2815
import org.springframework.web.bind.annotation.PutMapping;
2916
import org.springframework.web.bind.annotation.RequestBody;
3017
import org.springframework.web.bind.annotation.RequestMapping;
31-
import org.springframework.web.bind.annotation.RequestParam;
3218
import org.springframework.web.bind.annotation.RestController;
3319

34-
import io.swagger.annotations.ApiOperation;
35-
import io.swagger.annotations.ApiResponse;
36-
import io.swagger.annotations.ApiResponses;
20+
import com.couchbase.client.java.Bucket;
21+
import com.couchbase.client.java.Cluster;
22+
import com.couchbase.client.java.Collection;
23+
import com.couchbase.client.java.query.QueryOptions;
24+
import com.couchbase.client.java.query.QueryScanConsistency;
3725

26+
@RestController
27+
@CrossOrigin
28+
@RequestMapping("/api/v1/route")
3829
public class RouteController {
3930

4031
private Cluster cluster;
@@ -52,37 +43,57 @@ public RouteController(Cluster cluster, Bucket bucket, DBProperties dbProperties
5243

5344
@GetMapping("/{id}")
5445
public ResponseEntity<Route> getRoute(@PathVariable String id) {
55-
Route createdRoute = routeCol.get(id).contentAs(Route.class);
56-
return new ResponseEntity<>(createdRoute, HttpStatus.CREATED);
46+
try {
47+
Route route = routeCol.get(id).contentAs(Route.class);
48+
return new ResponseEntity<>(route, HttpStatus.OK);
49+
} catch (Exception e) {
50+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
51+
}
5752
}
5853

5954
@PostMapping("/{id}")
6055
public ResponseEntity<Route> createRoute(@PathVariable String id, @RequestBody Route route) {
61-
routeCol.insert(id, route);
62-
Route createdRoute = routeCol.get(id).contentAs(Route.class);
63-
return new ResponseEntity<>(createdRoute, HttpStatus.CREATED);
56+
try {
57+
routeCol.insert(id, route);
58+
Route createdRoute = routeCol.get(id).contentAs(Route.class);
59+
return ResponseEntity.created(new URI("/api/v1/route/" + id)).body(createdRoute);
60+
} catch (Exception e) {
61+
return new ResponseEntity<>(HttpStatus.CONFLICT);
62+
}
6463
}
6564

6665
@PutMapping("/{id}")
6766
public ResponseEntity<Route> updateRoute(@PathVariable String id, @RequestBody Route route) {
68-
routeCol.replace(id, route);
69-
Route updatedRoute = routeCol.get(id).contentAs(Route.class);
70-
return new ResponseEntity<>(updatedRoute, HttpStatus.OK);
67+
try {
68+
routeCol.replace(id, route);
69+
Route updatedRoute = routeCol.get(id).contentAs(Route.class);
70+
return new ResponseEntity<>(updatedRoute, HttpStatus.OK);
71+
} catch (Exception e) {
72+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
73+
}
7174
}
7275

7376
@DeleteMapping("/{id}")
7477
public ResponseEntity<Void> deleteRoute(@PathVariable String id) {
75-
routeCol.remove(id);
76-
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
78+
try {
79+
routeCol.remove(id);
80+
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
81+
} catch (Exception e) {
82+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
83+
}
7784
}
7885

7986
@GetMapping("/list")
8087
public ResponseEntity<List<Route>> listRoutes() {
81-
String statement = "SELECT airport.* FROM `" + dbProperties.getBucketName() + "`.`inventory`.`route`";
82-
List<Route> routes = cluster
83-
.query(statement, QueryOptions.queryOptions().scanConsistency(QueryScanConsistency.REQUEST_PLUS))
84-
.rowsAs(Route.class);
85-
return new ResponseEntity<>(routes, HttpStatus.OK);
88+
try {
89+
String statement = "SELECT airport.* FROM `" + dbProperties.getBucketName() + "`.`inventory`.`route`";
90+
List<Route> routes = cluster
91+
.query(statement, QueryOptions.queryOptions().scanConsistency(QueryScanConsistency.REQUEST_PLUS))
92+
.rowsAs(Route.class);
93+
return new ResponseEntity<>(routes, HttpStatus.OK);
94+
} catch (Exception e) {
95+
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
96+
}
8697
}
8798

8899
}

src/main/java/org/couchbase/quickstart/springboot/models/Route.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class Route {
3131

3232
private List<Schedule> schedule;
3333

34-
private float distance;
34+
private double distance;
3535

3636
@Getter
3737
@Setter

src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ spring.couchbase.bucket.name=travel-sample
33
spring.couchbase.bucket.user=kaustav
44
spring.couchbase.bucket.scope=inventory
55
spring.couchbase.bucket.password=password
6-
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
6+
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

0 commit comments

Comments
 (0)