diff --git a/pom.xml b/pom.xml index 37b0579ee..6f5df06cc 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ io.americanexpress.synapse synapse pom - 0.4.11-SNAPSHOT + 0.4.13-SNAPSHOT Synapse is a set of lightweight foundational framework modules for rapid development built-in with enterprise diff --git a/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/controller/BaseGetMonoReactiveController.java b/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/controller/BaseGetMonoReactiveController.java index 8a443a2f3..ded0342b4 100644 --- a/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/controller/BaseGetMonoReactiveController.java +++ b/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/controller/BaseGetMonoReactiveController.java @@ -61,4 +61,32 @@ public Mono> read(@RequestHeader HttpHeaders headers, @PathVar logger.exit(responseEntity); return responseEntity; } + + + /** + * Get a single resource from the back end service. + * + * @param headers the headers + * @return response + */ + @Operation(summary = "Reactive get mono", description = "Get resources reactively") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Ok"), + @ApiResponse(responseCode = "204", description = "No Content"), + @ApiResponse(responseCode = "400", description = "Bad Request"), + @ApiResponse(responseCode = "401", description = "Unauthorized"), + @ApiResponse(responseCode = "403", description = "Forbidden"), + }) + @GetMapping("/") + public Mono> read(@RequestHeader HttpHeaders headers) { + logger.entry(headers); + + var serviceResponse = service.read(headers); + var responseEntity = serviceResponse + .map(ResponseEntity::ok) + .defaultIfEmpty(ResponseEntity.noContent().build()); + + logger.exit(responseEntity); + return responseEntity; + } } diff --git a/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/service/BaseGetMonoReactiveService.java b/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/service/BaseGetMonoReactiveService.java index b6947188b..85b4b7ffc 100644 --- a/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/service/BaseGetMonoReactiveService.java +++ b/service/synapse-service-reactive-rest/src/main/java/io/americanexpress/synapse/service/reactive/rest/service/BaseGetMonoReactiveService.java @@ -23,6 +23,28 @@ */ public abstract class BaseGetMonoReactiveService extends BaseService { + + /** + * Retrieves one resource. + * + * @param headers headers + * @return a mono read response + */ + public Mono read(HttpHeaders headers) { + logger.entry(headers); + final var response = executeRead(headers); + logger.exit(); + return response; + } + + /** + * Prototype for reading a resource. + * + * @param headers headers + * @return a mono read response + */ + protected abstract Mono executeRead(HttpHeaders headers); + /** * Retrieves one resource. * diff --git a/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/controller/BaseGetMonoController.java b/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/controller/BaseGetMonoController.java index 71b691100..2457edf6e 100644 --- a/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/controller/BaseGetMonoController.java +++ b/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/controller/BaseGetMonoController.java @@ -33,6 +33,24 @@ */ public class BaseGetMonoController> extends BaseController { + + /** + * Read response entity. + * + * @param headers containing the HTTP headers from the consumer + * @return the response entity + */ + @Operation(summary = "Read operation.", description = "Read resources.") + @GetMapping("/") + public ResponseEntity read(@RequestHeader HttpHeaders headers) { + logger.entry(headers); + + final O response = service.read(headers); + ResponseEntity responseEntity = MonoResponseEntityCreator.create(response); + + logger.exit(responseEntity); + return responseEntity; + } /** * Read response entity. * diff --git a/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/service/BaseGetMonoService.java b/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/service/BaseGetMonoService.java index 452c8db06..5ac473e91 100644 --- a/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/service/BaseGetMonoService.java +++ b/service/synapse-service-rest/src/main/java/io/americanexpress/synapse/service/rest/service/BaseGetMonoService.java @@ -22,6 +22,31 @@ */ public abstract class BaseGetMonoService extends BaseService { + + /** + * Gets a single resource. + * + * @param headers received from the controller + */ + public O read(HttpHeaders headers) { + + logger.entry(headers); + + O response = executeRead(headers); + + logger.exit(response); + + return response; + } + + /** + * Prototype for reading a resource. + * @param headers + * @return + */ + protected abstract O executeRead(HttpHeaders headers); + + /** * Gets a single resource. *