Skip to content

Commit e96b623

Browse files
committed
Used lombok builders, Updated Swagger docs
1 parent 8c013f1 commit e96b623

File tree

12 files changed

+354
-273
lines changed

12 files changed

+354
-273
lines changed

src/main/java/org/couchbase/quickstart/springboot/Application.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package org.couchbase.quickstart.springboot;
22

33
import org.springframework.boot.SpringApplication;
4-
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
54
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
66

77
@SpringBootApplication(exclude = SecurityAutoConfiguration.class, proxyBeanMethods = false)
88
public class Application {
Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,43 @@
11
package org.couchbase.quickstart.springboot.configs;
22

3+
import java.util.Collections;
4+
35
import org.springframework.context.annotation.Bean;
46
import org.springframework.context.annotation.Configuration;
57

68
import springfox.documentation.builders.PathSelectors;
79
import springfox.documentation.builders.RequestHandlerSelectors;
10+
import springfox.documentation.service.ApiInfo;
11+
import springfox.documentation.service.Contact;
812
import springfox.documentation.spi.DocumentationType;
913
import springfox.documentation.spring.web.plugins.Docket;
14+
import springfox.documentation.swagger2.annotations.EnableSwagger2;
15+
1016

1117
@Configuration
18+
@EnableSwagger2
1219
public class Swagger {
20+
1321
@Bean
1422
public Docket api() {
1523
return new Docket(DocumentationType.SWAGGER_2)
1624
.select()
1725
.apis(RequestHandlerSelectors.basePackage(
1826
"org.couchbase.quickstart.springboot.controllers"))
1927
.paths(PathSelectors.any())
20-
.build();
28+
.build()
29+
.apiInfo(apiInfo());
30+
}
31+
32+
private ApiInfo apiInfo() {
33+
return new ApiInfo(
34+
"Quickstart in Couchbase with Spring Boot",
35+
"<html><body><h2>A quickstart API using Java and Spring Boot with Couchbase and travel-sample data</h2><p>We have a visual representation of the API documentation using Swagger which allows you to interact with the API's endpoints directly through the browser. It provides a clear view of the API including endpoints, HTTP methods, request parameters, and response objects.</p><p>Click on an individual endpoint to expand it and see detailed information. This includes the endpoint's description, possible response status codes, and the request parameters it accepts.</p><p><strong>Trying Out the API</strong></p><p>You can try out an API by clicking on the \"Try it out\" button next to the endpoints.</p><ul><li><strong>Parameters:</strong> If an endpoint requires parameters, Swagger UI provides input boxes for you to fill in. This could include path parameters, query strings, headers, or the body of a POST/PUT request.</li><li><strong>Execution:</strong> Once you've inputted all the necessary parameters, you can click the \"Execute\" button to make a live API call. Swagger UI will send the request to the API and display the response directly in the documentation. This includes the response code, response headers, and response body.</li></ul><p><strong>Models</strong></p><p>Swagger documents the structure of request and response bodies using models. These models define the expected data structure using JSON schema and are extremely helpful in understanding what data to send and expect.</p><p>For details on the API, please check the tutorial on the Couchbase Developer Portal: <a href=\"https://developer.couchbase.com/tutorial-quickstart-java-spring-boot\">https://developer.couchbase.com/tutorial-quickstart-java-spring-boot</a></p></body></html>",
36+
"v1.0",
37+
"Terms of service",
38+
new Contact("Your Name", "Your Website URL", "Your Email"),
39+
"License of API",
40+
"API License URL",
41+
Collections.emptyList());
2142
}
22-
}
43+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.couchbase.client.core.error.DocumentExistsException;
2222
import com.couchbase.client.core.error.DocumentNotFoundException;
2323

24+
import io.swagger.v3.oas.annotations.Operation;
25+
2426
@RestController
2527
@CrossOrigin
2628
@RequestMapping("/api/v1/airline")
@@ -32,6 +34,7 @@ public AirlineController(AirlineService airlineService) {
3234
this.airlineService = airlineService;
3335
}
3436

37+
@Operation(summary = "Get an airline by ID")
3538
@GetMapping("/{id}")
3639
public ResponseEntity<Airline> getAirline(@PathVariable String id) {
3740
try {
@@ -48,6 +51,7 @@ public ResponseEntity<Airline> getAirline(@PathVariable String id) {
4851
}
4952
}
5053

54+
@Operation(summary = "Create an airline")
5155
@PostMapping("/{id}")
5256
public ResponseEntity<Airline> createAirline(@PathVariable String id, @Valid @RequestBody Airline airline) {
5357
try {
@@ -61,6 +65,7 @@ public ResponseEntity<Airline> createAirline(@PathVariable String id, @Valid @Re
6165

6266
}
6367

68+
@Operation(summary = "Update an airline")
6469
@PutMapping("/{id}")
6570
public ResponseEntity<Airline> updateAirline(@PathVariable String id, @Valid @RequestBody Airline airline) {
6671
try {
@@ -77,6 +82,7 @@ public ResponseEntity<Airline> updateAirline(@PathVariable String id, @Valid @Re
7782
}
7883
}
7984

85+
@Operation(summary = "Delete an airline")
8086
@DeleteMapping("/{id}")
8187
public ResponseEntity<Void> deleteAirline(@PathVariable String id) {
8288
try {
@@ -89,6 +95,7 @@ public ResponseEntity<Void> deleteAirline(@PathVariable String id) {
8995
}
9096
}
9197

98+
@Operation(summary = "List all airlines")
9299
@GetMapping("/list")
93100
public ResponseEntity<List<Airline>> listAirlines() {
94101
try {
@@ -99,6 +106,7 @@ public ResponseEntity<List<Airline>> listAirlines() {
99106
}
100107
}
101108

109+
@Operation(summary = "List all airlines by country")
102110
@GetMapping("/country/{country}")
103111
public ResponseEntity<List<Airline>> listAirlinesByCountry(@PathVariable String country) {
104112
try {

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.couchbase.client.core.error.DocumentExistsException;
2222
import com.couchbase.client.core.error.DocumentNotFoundException;
2323

24+
import io.swagger.v3.oas.annotations.Operation;
25+
2426
@RestController
2527
@RequestMapping("/api/v1/airport")
2628
public class AirportController {
@@ -31,6 +33,7 @@ public AirportController(AirportService airportService) {
3133
this.airportService = airportService;
3234
}
3335

36+
@Operation(summary = "Get an airport by ID")
3437
@GetMapping("/{id}")
3538
public ResponseEntity<Airport> getAirport(@PathVariable String id) {
3639
try {
@@ -47,6 +50,7 @@ public ResponseEntity<Airport> getAirport(@PathVariable String id) {
4750
}
4851
}
4952

53+
@Operation(summary = "Create an airport")
5054
@PostMapping("/{id}")
5155
public ResponseEntity<Airport> createAirport(@PathVariable String id, @Valid @RequestBody Airport airport) {
5256
try {
@@ -60,6 +64,7 @@ public ResponseEntity<Airport> createAirport(@PathVariable String id, @Valid @Re
6064

6165
}
6266

67+
@Operation(summary = "Update an airport")
6368
@PutMapping("/{id}")
6469
public ResponseEntity<Airport> updateAirport(@PathVariable String id, @Valid @RequestBody Airport airport) {
6570
try {
@@ -76,6 +81,7 @@ public ResponseEntity<Airport> updateAirport(@PathVariable String id, @Valid @Re
7681
}
7782
}
7883

84+
@Operation(summary = "Delete an airport")
7985
@DeleteMapping("/{id}")
8086
public ResponseEntity<Void> deleteAirport(@PathVariable String id) {
8187
try {
@@ -88,6 +94,7 @@ public ResponseEntity<Void> deleteAirport(@PathVariable String id) {
8894
}
8995
}
9096

97+
@Operation(summary = "List all airports")
9198
@GetMapping("/list")
9299
public ResponseEntity<List<Airport>> listAirports() {
93100
try {
@@ -98,6 +105,7 @@ public ResponseEntity<List<Airport>> listAirports() {
98105
}
99106
}
100107

108+
@Operation(summary = "List all direct connections from an airport")
101109
@GetMapping("/direct-connections")
102110
public ResponseEntity<List<Airport>> listDirectConnections(@RequestParam String airportCode) {
103111
try {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.couchbase.client.core.error.DocumentExistsException;
2222
import com.couchbase.client.core.error.DocumentNotFoundException;
2323

24+
import io.swagger.v3.oas.annotations.Operation;
25+
2426
@RestController
2527
@CrossOrigin
2628
@RequestMapping("/api/v1/route")
@@ -32,6 +34,7 @@ public RouteController(RouteService routeService) {
3234
this.routeService = routeService;
3335
}
3436

37+
@Operation(summary = "Get a route by ID")
3538
@GetMapping("/{id}")
3639
public ResponseEntity<Route> getRoute(@PathVariable String id) {
3740
try {
@@ -48,6 +51,7 @@ public ResponseEntity<Route> getRoute(@PathVariable String id) {
4851
}
4952
}
5053

54+
@Operation(summary = "Create a route")
5155
@PostMapping("/{id}")
5256
public ResponseEntity<Route> createRoute(@PathVariable String id, @Valid @RequestBody Route route) {
5357
try {
@@ -61,6 +65,7 @@ public ResponseEntity<Route> createRoute(@PathVariable String id, @Valid @Reques
6165

6266
}
6367

68+
@Operation(summary = "Update a route")
6469
@PutMapping("/{id}")
6570
public ResponseEntity<Route> updateRoute(@PathVariable String id, @Valid @RequestBody Route route) {
6671
try {
@@ -77,6 +82,7 @@ public ResponseEntity<Route> updateRoute(@PathVariable String id, @Valid @Reques
7782
}
7883
}
7984

85+
@Operation(summary = "Delete a route")
8086
@DeleteMapping("/{id}")
8187
public ResponseEntity<Void> deleteRoute(@PathVariable String id) {
8288
try {
@@ -89,6 +95,7 @@ public ResponseEntity<Void> deleteRoute(@PathVariable String id) {
8995
}
9096
}
9197

98+
@Operation(summary = "List all routes")
9299
@GetMapping("/list")
93100
public ResponseEntity<List<Route>> listRoutes() {
94101
try {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import javax.validation.constraints.Pattern;
77

88
import lombok.AllArgsConstructor;
9+
import lombok.Builder;
910
import lombok.Data;
1011
import lombok.Getter;
1112
import lombok.NoArgsConstructor;
@@ -16,6 +17,7 @@
1617
@AllArgsConstructor
1718
@NoArgsConstructor
1819
@Data
20+
@Builder
1921
public class Airline implements Serializable {
2022

2123
@NotBlank(message = "ID is mandatory")

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import javax.validation.constraints.Pattern;
66

77
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
89
import lombok.Data;
910
import lombok.Getter;
1011
import lombok.NoArgsConstructor;
@@ -15,6 +16,7 @@
1516
@AllArgsConstructor
1617
@NoArgsConstructor
1718
@Data
19+
@Builder
1820
public class Airport {
1921

2022
@NotBlank(message = "ID is mandatory")
@@ -51,6 +53,7 @@ public class Airport {
5153
@AllArgsConstructor
5254
@NoArgsConstructor
5355
@Data
56+
@Builder
5457
public static class Geo {
5558

5659
// @NotBlank(message = "Altitude is mandatory")

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javax.validation.constraints.NotNull;
88

99
import lombok.AllArgsConstructor;
10+
import lombok.Builder;
1011
import lombok.Data;
1112
import lombok.Getter;
1213
import lombok.NoArgsConstructor;
@@ -17,6 +18,7 @@
1718
@AllArgsConstructor
1819
@NoArgsConstructor
1920
@Data
21+
@Builder
2022
public class Route {
2123

2224
@NotBlank(message = "ID is mandatory")
@@ -54,6 +56,7 @@ public class Route {
5456
@AllArgsConstructor
5557
@NoArgsConstructor
5658
@Data
59+
@Builder
5760
public static class Schedule {
5861

5962
@NotNull(message = "Day is mandatory")

src/test/java/org/couchbase/quickstart/springboot/controllers/AirlineControllerTest.java

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

0 commit comments

Comments
 (0)