diff --git a/api/api-samples/pom.xml b/api/api-samples/pom.xml
new file mode 100644
index 000000000..1f23ed5e4
--- /dev/null
+++ b/api/api-samples/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ io.americanexpress.synapse
+ api
+ 0.4.10-SNAPSHOT
+
+
+ 4.0.0
+ api-samples
+ pom
+
+
+
+ sample-api-imperative-book
+
+
+
diff --git a/api/api-samples/sample-api-imperative-book/pom.xml b/api/api-samples/sample-api-imperative-book/pom.xml
new file mode 100644
index 000000000..a7dcf6850
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+ api-samples
+ io.americanexpress.synapse
+ 0.4.10-SNAPSHOT
+
+
+ 4.0.0
+ sample-api-imperative-book
+
+
+
+
+ io.americanexpress.synapse
+ synapse-api-rest-imperative
+
+
+ io.americanexpress.synapse
+ sample-service-imperative-book
+
+
+
diff --git a/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/BookApplication.java b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/BookApplication.java
new file mode 100644
index 000000000..de0471404
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/BookApplication.java
@@ -0,0 +1,30 @@
+package io.americanexpress.synapse.api.rest.sample.imperativebook;
+
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * {@code BookApplication} starts the Spring Boot Application for the book rest sample.
+ *
+ * @author Tanvir Islam
+ */
+@SpringBootApplication()
+public class BookApplication {
+
+ /**
+ * The logger.
+ */
+ private static final XLogger LOGGER = XLoggerFactory.getXLogger(BookApplication.class);
+
+ /**
+ * Runs the application.
+ *
+ * @param args the var args
+ */
+ public static void main(String[] args) {
+ SpringApplication.run(BookApplication.class, args);
+ LOGGER.info("Rest Book Imperative Sample Application is up and running...");
+ }
+}
diff --git a/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookApiConfig.java b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookApiConfig.java
new file mode 100644
index 000000000..dfb35c6f1
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookApiConfig.java
@@ -0,0 +1,30 @@
+package io.americanexpress.synapse.api.rest.sample.imperativebook.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.americanexpress.service.sample.imperativebook.config.BookServiceConfig;
+import io.americanexpress.synapse.api.rest.imperative.config.BaseApiImperativeRestConfig;
+import io.americanexpress.synapse.api.rest.imperative.interceptor.MetricInterceptor;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+/**
+ * {@code BookApiConfig} sets configuration for the Book API.
+ *
+ * @author Tanvir Islam
+ */
+@Configuration
+@Import(BookServiceConfig.class)
+@ComponentScan("io.americanexpress.synapse.api.rest.sample.imperativebook")
+public class BookApiConfig extends BaseApiImperativeRestConfig {
+
+ /**
+ * Constructor taking in objectMapper & metricInterceptor.
+ *
+ * @param defaultObjectMapper the default object mapper
+ * @param interceptor the metric interceptor
+ */
+ public BookApiConfig(ObjectMapper defaultObjectMapper, MetricInterceptor interceptor) {
+ super(defaultObjectMapper, interceptor);
+ }
+}
diff --git a/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookEndpoint.java b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookEndpoint.java
new file mode 100644
index 000000000..5223dacac
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/config/BookEndpoint.java
@@ -0,0 +1,21 @@
+package io.americanexpress.synapse.api.rest.sample.imperativebook.config;
+
+/**
+ * {@code BookEndpoint} sets the endpoints for this API.
+ *
+ * @author Tanvir Islam
+ */
+public class BookEndpoint {
+
+ /**
+ * Private constructor for class with constants.
+ */
+ private BookEndpoint() {
+
+ }
+
+ /**
+ * Books resource for all endpoints in this API.
+ */
+ public static final String BOOK_ENDPOINT = "/books";
+}
diff --git a/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/GetPolyBookController.java b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/GetPolyBookController.java
new file mode 100644
index 000000000..db27908c5
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/GetPolyBookController.java
@@ -0,0 +1,19 @@
+package io.americanexpress.synapse.api.rest.sample.imperativebook.controller;
+
+import io.americanexpress.service.sample.imperativebook.model.GetPolyBookServiceRequest;
+import io.americanexpress.service.sample.imperativebook.model.GetPolyBookServiceResponse;
+import io.americanexpress.service.sample.imperativebook.service.GetPolyBookService;
+import io.americanexpress.synapse.api.rest.imperative.controller.BaseGetPolyImperativeRestController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import static io.americanexpress.synapse.api.rest.sample.imperativebook.config.BookEndpoint.BOOK_ENDPOINT;
+
+/**
+ * {@code GetPolyBookController} gets multiple book resources by a path variable.
+ *
+ * @author Tanvir Islam
+ */
+@RestController
+@RequestMapping(BOOK_ENDPOINT)
+public class GetPolyBookController extends BaseGetPolyImperativeRestController {
+}
diff --git a/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/ReadPolyBookController.java b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/ReadPolyBookController.java
new file mode 100644
index 000000000..1571603a1
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/main/java/io/americanexpress/synapse/api/rest/sample/imperativebook/controller/ReadPolyBookController.java
@@ -0,0 +1,19 @@
+package io.americanexpress.synapse.api.rest.sample.imperativebook.controller;
+
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceRequest;
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceResponse;
+import io.americanexpress.service.sample.imperativebook.service.ReadPolyBookService;
+import io.americanexpress.synapse.api.rest.imperative.controller.BaseReadPolyImperativeRestController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import static io.americanexpress.synapse.api.rest.sample.imperativebook.config.BookEndpoint.BOOK_ENDPOINT;
+
+/**
+ * {@code ReadPolyBookController} reads multiple book resources with specific criteria
+ *
+ * @author Tanvir Islam
+ */
+@RestController
+@RequestMapping(BOOK_ENDPOINT)
+public class ReadPolyBookController extends BaseReadPolyImperativeRestController {
+}
diff --git a/api/api-samples/sample-api-imperative-book/src/test/resources/read-poly-book-service-request.json b/api/api-samples/sample-api-imperative-book/src/test/resources/read-poly-book-service-request.json
new file mode 100644
index 000000000..b1a793746
--- /dev/null
+++ b/api/api-samples/sample-api-imperative-book/src/test/resources/read-poly-book-service-request.json
@@ -0,0 +1,7 @@
+{
+ "author": "j.k. rowling",
+ "pageInformation": {
+ "page": "1",
+ "size": "1"
+ }
+}
diff --git a/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/BaseGetPolyImperativeRestController.java b/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/BaseGetPolyImperativeRestController.java
new file mode 100644
index 000000000..323734dbe
--- /dev/null
+++ b/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/BaseGetPolyImperativeRestController.java
@@ -0,0 +1,58 @@
+package io.americanexpress.synapse.api.rest.imperative.controller;
+
+import io.americanexpress.synapse.api.rest.imperative.controller.helpers.PolyResponseEntityCreator;
+import io.americanexpress.synapse.service.imperative.model.BaseServiceRequest;
+import io.americanexpress.synapse.service.imperative.model.BaseServiceResponse;
+import io.americanexpress.synapse.service.imperative.model.PageResponse;
+import io.americanexpress.synapse.service.imperative.service.BaseService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import java.util.List;
+
+/**
+ * {@code BaseGetPolyImperativeRestController} class specifies the prototypes for listening for requests from the consumer
+ * to Read (GET) a resource. This Controller expects no request and a list of objects as response, hence, "Poly" in the name.
+ *
+ * @param an object extending {@link BaseServiceRequest}
+ * @param an object extending {@link BaseServiceResponse}
+ * @param an object extending {@link BaseService}
+ * @author Tanvir Islam
+ */
+public class BaseGetPolyImperativeRestController<
+ I extends BaseServiceRequest,
+ O extends BaseServiceResponse,
+ S extends BaseService>
+ > extends BaseController {
+
+ /**
+ * Get a list of multiple resources from the back end service.
+ *
+ * @param httpHeaders containing the HTTP headers from the consumer
+ * @param serviceRequest body from the consumer
+ * @return a list of resources from the back end service
+ */
+ @Operation(summary = "Read operation based on path.", description = "Read a collection of resources based on request criteria.")
+ @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"),
+ @ApiResponse(responseCode = "404", description = "Not Found")
+ })
+ @GetMapping
+ public ResponseEntity> read(@RequestHeader HttpHeaders httpHeaders, I serviceRequest) {
+ logger.entry(serviceRequest);
+
+ final PageResponse page = service.execute(serviceRequest);
+ final ResponseEntity> responseEntity = PolyResponseEntityCreator.create(page);
+
+ logger.exit(responseEntity);
+ return responseEntity;
+ }
+}
diff --git a/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/helpers/PolyResponseEntityCreator.java b/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/helpers/PolyResponseEntityCreator.java
index ae201c852..aa80ae0af 100644
--- a/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/helpers/PolyResponseEntityCreator.java
+++ b/api/synapse-api-rest-imperative/src/main/java/io/americanexpress/synapse/api/rest/imperative/controller/helpers/PolyResponseEntityCreator.java
@@ -39,7 +39,7 @@ public static ResponseEntity> create(Pag
final ResponseEntity> responseEntity;
List pageContent = null;
if (page != null) {
- pageContent = page.getResponsesForPage();
+ pageContent = page.getPageSize() > 0 ? page.getResponsesForPage() : page.getResponses();
}
if (page == null || CollectionUtils.isEmpty(pageContent)) {
responseEntity = new ResponseEntity<>(HttpStatus.NO_CONTENT);
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/config/BookServiceConfig.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/config/BookServiceConfig.java
index 8c5d2017d..addee493b 100644
--- a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/config/BookServiceConfig.java
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/config/BookServiceConfig.java
@@ -14,12 +14,16 @@
package io.americanexpress.service.sample.imperativebook.config;
import io.americanexpress.synapse.service.imperative.config.BaseImperativeServiceConfig;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
/**
* The type Book service config.
*
* @author Francois Gutt
*/
+@Configuration
+@ComponentScan("io.americanexpress.service.sample.imperativebook")
public class BookServiceConfig extends BaseImperativeServiceConfig {
}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceRequest.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceRequest.java
new file mode 100644
index 000000000..7e929a4f1
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceRequest.java
@@ -0,0 +1,11 @@
+package io.americanexpress.service.sample.imperativebook.model;
+
+import io.americanexpress.synapse.service.imperative.model.BaseServiceRequest;
+
+/**
+ * {@code GetPolyBookServiceRequest} class is the request model for {@link io.americanexpress.service.sample.imperativebook.service.GetPolyBookService}
+ *
+ * @author Tanvir Islam
+ */
+public class GetPolyBookServiceRequest extends BaseBook implements BaseServiceRequest {
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceResponse.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceResponse.java
new file mode 100644
index 000000000..80d952f3a
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/GetPolyBookServiceResponse.java
@@ -0,0 +1,11 @@
+package io.americanexpress.service.sample.imperativebook.model;
+
+import io.americanexpress.synapse.service.imperative.model.BaseServiceResponse;
+
+/**
+ * {@code GetPolyBookServiceResponse} class is the response model for {@link io.americanexpress.service.sample.imperativebook.service.GetPolyBookService}
+ *
+ * @author Tanvir Islam
+ */
+public class GetPolyBookServiceResponse extends BaseBook implements BaseServiceResponse {
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceRequest.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceRequest.java
new file mode 100644
index 000000000..2b24296ff
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceRequest.java
@@ -0,0 +1,34 @@
+package io.americanexpress.service.sample.imperativebook.model;
+
+import io.americanexpress.synapse.service.imperative.model.BasePaginatedServiceRequest;
+
+/**
+ * {@code ReadPolyBookServiceRequest} class is the request model for {@link io.americanexpress.service.sample.imperativebook.service.ReadPolyBookService}
+ *
+ * @author Tanvir Islam
+ */
+public class ReadPolyBookServiceRequest extends BasePaginatedServiceRequest {
+
+ /**
+ * Author of the book.
+ */
+ private String author;
+
+ /**
+ * Get the author of the book.
+ *
+ * @return the author of the book
+ */
+ public String getAuthor() {
+ return author;
+ }
+
+ /**
+ * Set the author of the book.
+ *
+ * @param author the author of the book
+ */
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceResponse.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceResponse.java
new file mode 100644
index 000000000..b7094cb58
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/model/ReadPolyBookServiceResponse.java
@@ -0,0 +1,11 @@
+package io.americanexpress.service.sample.imperativebook.model;
+
+import io.americanexpress.synapse.service.imperative.model.BaseServiceResponse;
+
+/**
+ * {@code ReadPolyBookServiceResponse} class is the request model for {@link io.americanexpress.service.sample.imperativebook.service.ReadPolyBookService}
+ *
+ * @author Tanvir Islam
+ */
+public class ReadPolyBookServiceResponse extends BaseBook implements BaseServiceResponse {
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/GetPolyBookService.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/GetPolyBookService.java
new file mode 100644
index 000000000..ba19f38d0
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/GetPolyBookService.java
@@ -0,0 +1,44 @@
+package io.americanexpress.service.sample.imperativebook.service;
+
+import io.americanexpress.service.sample.imperativebook.model.GetPolyBookServiceRequest;
+import io.americanexpress.service.sample.imperativebook.model.GetPolyBookServiceResponse;
+import io.americanexpress.service.sample.imperativebook.service.helper.GetBookServiceResponseCreator;
+import io.americanexpress.synapse.service.imperative.model.PageResponse;
+import io.americanexpress.synapse.service.imperative.service.BaseService;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+/**
+ * {@code GetPolyBookService} gets multiple book resources.
+ *
+ * @author Tanvir Islam
+ */
+@Component
+public class GetPolyBookService extends BaseService> {
+
+ /**
+ * Creates the book response.
+ */
+ private final GetBookServiceResponseCreator getBookServiceResponseCreator;
+
+ /**
+ * Constructor creates a new instance of ReadBookService with the given values.
+ *
+ * @param getBookServiceResponseCreator the base book service response creator
+ */
+ public GetPolyBookService(GetBookServiceResponseCreator getBookServiceResponseCreator) {
+ this.getBookServiceResponseCreator = getBookServiceResponseCreator;
+ }
+
+ /**
+ * Gets multiple book resources.
+ *
+ * @param request the request object.
+ * @return a list of book resources.
+ */
+ @Override
+ protected PageResponse doExecute(GetPolyBookServiceRequest request) {
+ var response = getBookServiceResponseCreator.create();
+ return new PageResponse<>(List.of(response, response));
+ }
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/ReadPolyBookService.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/ReadPolyBookService.java
new file mode 100644
index 000000000..01f6cce32
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/ReadPolyBookService.java
@@ -0,0 +1,46 @@
+package io.americanexpress.service.sample.imperativebook.service;
+
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceRequest;
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceResponse;
+import io.americanexpress.service.sample.imperativebook.service.helper.ReadBookServiceResponseCreator;
+import io.americanexpress.synapse.service.imperative.model.PageResponse;
+import io.americanexpress.synapse.service.imperative.service.BaseService;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+/**
+ * {@code ReadPolyBookService} reads multiple book resources with specified criteria.
+ *
+ * @author Tanvir Islam
+ */
+@Component
+public class ReadPolyBookService extends BaseService> {
+
+ /**
+ * Creates the book response.
+ */
+ private final ReadBookServiceResponseCreator readBookServiceResponseCreator;
+
+ /**
+ * Constructor creates a new instance of ReadBookService with the given values.
+ *
+ * @param readBookServiceResponseCreator the base book service response creator
+ */
+ public ReadPolyBookService(ReadBookServiceResponseCreator readBookServiceResponseCreator) {
+ this.readBookServiceResponseCreator = readBookServiceResponseCreator;
+ }
+
+ /**
+ * Reads multiple book resources with specified criteria.
+ *
+ * @param request the request object.
+ * @return a list of book resources.
+ */
+ @Override
+ protected PageResponse doExecute(ReadPolyBookServiceRequest request) {
+ var response = readBookServiceResponseCreator.create(request);
+ var otherResponse = readBookServiceResponseCreator.create(request);
+ otherResponse.setCost(35);
+ return new PageResponse<>(List.of(response, otherResponse), request.getPageInformation());
+ }
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/GetBookServiceResponseCreator.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/GetBookServiceResponseCreator.java
new file mode 100644
index 000000000..790594cd6
--- /dev/null
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/GetBookServiceResponseCreator.java
@@ -0,0 +1,28 @@
+package io.americanexpress.service.sample.imperativebook.service.helper;
+
+import io.americanexpress.service.sample.imperativebook.model.GetPolyBookServiceResponse;
+import org.springframework.stereotype.Component;
+
+/**
+ * {@code GetBookServiceResponseCreator} creates the response for getting multiple books.
+ *
+ * @author Tanvir Islam
+ */
+@Component
+public class GetBookServiceResponseCreator {
+
+ /**
+ * Creates a new {@link GetPolyBookServiceResponse} object.
+ *
+ * @return a new {@link GetPolyBookServiceResponse} object.
+ */
+ public GetPolyBookServiceResponse create() {
+ var getPolyBookServiceResponse = new GetPolyBookServiceResponse();
+ getPolyBookServiceResponse.setTitle("Harry Potter");
+ getPolyBookServiceResponse.setAuthor("J.K. Rowling");
+ getPolyBookServiceResponse.setCost(15);
+ getPolyBookServiceResponse.setYear(2005);
+ getPolyBookServiceResponse.setPublisher("Publishing Co.");
+ return getPolyBookServiceResponse;
+ }
+}
diff --git a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/ReadBookServiceResponseCreator.java b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/ReadBookServiceResponseCreator.java
index 2ef7f98ce..9eead9adf 100644
--- a/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/ReadBookServiceResponseCreator.java
+++ b/service/service-samples/sample-service-imperative-book/src/main/java/io/americanexpress/service/sample/imperativebook/service/helper/ReadBookServiceResponseCreator.java
@@ -15,6 +15,8 @@
import io.americanexpress.service.sample.imperativebook.model.BaseBook;
import io.americanexpress.service.sample.imperativebook.model.ReadBookServiceResponse;
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceRequest;
+import io.americanexpress.service.sample.imperativebook.model.ReadPolyBookServiceResponse;
import org.springframework.stereotype.Component;
/**
@@ -42,4 +44,20 @@ public ReadBookServiceResponse create(BaseBook request) {
return readBookServiceResponse;
}
+
+ /**
+ * Creates the poly book service response.
+ *
+ * @param request the body received from the controller.
+ * @return response body to the controller.
+ */
+ public ReadPolyBookServiceResponse create(ReadPolyBookServiceRequest request) {
+ var readBookServiceResponse = new ReadPolyBookServiceResponse();
+ readBookServiceResponse.setTitle("Harry Potter");
+ readBookServiceResponse.setAuthor(request.getAuthor());
+ readBookServiceResponse.setCost(15);
+ readBookServiceResponse.setYear(2005);
+ readBookServiceResponse.setPublisher("Publishing Co.");
+ return readBookServiceResponse;
+ }
}