added additional documentation for waitlist + BAL
diff --git a/README.md b/README.md
index 97e87a5..6b07188 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,9 @@
into a proto file (api_v3.proto). Modify the package to match your project
(com.partner.mapsbooking.v3.model).
+ * If implementing waitlist functionality, repeat the same steps with the
+ [Waitlist Proto Interface](https://developers.google.com/maps-booking/reference/rest-api-v3/waitlists/proto-bundle)
+
2. Create a web application project in your IDE named booking_server_v3, add
Maven support to this project.
@@ -70,8 +73,11 @@
protoc --java_out=java resources/api_v3.proto
+ * If implementing waitlist functionality, also execute the following:
+ protoc --java_out=java resources/waitlist.proto
+
5. Inside of the **src/main/java,** create a new package matching your groupId
- (com.partner.mapsbooking). Retrieve the sample code from the repo:
+ (com.partner.mapsbooking). Retrieve the sample code from the repo:
git clone https://maps-booking.googlesource.com/java-maps-booking-rest-server-v3-skeleton
diff --git a/rest/BookingService.java b/rest/BookingService.java
index b7cc41a..9711f7b 100644
--- a/rest/BookingService.java
+++ b/rest/BookingService.java
@@ -42,7 +42,7 @@
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-/** Booking REST Server for API v3 with com.partner.mapsbooking.authentication. */
+/** Booking REST Server for API v3 with authentication. */
@Path("/v3")
public class BookingService {
@@ -106,16 +106,17 @@
public String batchAvailabilityLookup(String request) throws InvalidProtocolBufferException {
// use JsonFormat.Parser to convert Json String into protocol buffer
- ApiV3.BatchAvailabilityLookupRequest.Builder requestBuilder = ApiV3.BatchAvailabilityLookupRequest.newBuilder();
+ ApiV3.BatchAvailabilityLookupRequest.Builder requestBuilder
+ = ApiV3.BatchAvailabilityLookupRequest.newBuilder();
JsonFormat.Parser jsonParser = JsonFormat.parser();
jsonParser.merge(request, requestBuilder);
ApiV3.BatchAvailabilityLookupRequest batchAvailabilityLookupRequest = requestBuilder.build();
// Unexpected error: throw exception and handle it in BookingExceptionMapper class,
// return corresponding response and HTTP code
- //
// Normal path: get response object from the helper function
- ApiV3.BatchAvailabilityLookupResponse response = performBatchAvailabilityLookup(batchAvailabilityLookupRequest);
+ ApiV3.BatchAvailabilityLookupResponse response
+ = performBatchAvailabilityLookup(batchAvailabilityLookupRequest);
// use JsonFormat to convert protocol buffer to Json
String jsonResponse = jsonPrinter().print(response);
@@ -123,7 +124,8 @@
}
// TODO(partner): Implement this method to perform batch availability lookup
- private ApiV3.BatchAvailabilityLookupResponse performBatchAvailabilityLookup(ApiV3.BatchAvailabilityLookupRequest request) {
+ private ApiV3.BatchAvailabilityLookupResponse performBatchAvailabilityLookup(
+ ApiV3.BatchAvailabilityLookupRequest request) {
// BatchAvailabilityLookup logic:
// e.g.
// String merchantId = request.getMerchantId();
@@ -137,15 +139,15 @@
// e.g
// for (ApiV3.SlotTime slotTime : requestedSlotTimes) {
// slotTimeAvailabilities.add(SlotTimeAvailability.newBuilder()
- // .setSlotTime(slotTime)
- // .setAvailable(true)
- // .build());
+ // .setSlotTime(slotTime)
+ // .setAvailable(true)
+ // .build());
// }
//
// ApiV3.BatchAvailabilityLookupResponse response =
- // ApiV3.BatchAvailabilityLookupResponse.newBuilder()
+ // ApiV3.BatchAvailabilityLookupResponse.newBuilder()
// .addAllSlotTimeAvailability(slotTimeAvailabilities).build();
-
+ //
// return response;
throw new UnsupportedOperationException("Not implemented yet");
@@ -430,7 +432,7 @@
// Create order business logic:
// e.g.
// ApiV3.Order order = request.getOrder();
-
+ //
// normal case -> create this order in the backend, return response:
// ApiV3.CreateOrderResponse response = ApiV3.CreateOrderResponse.newBuilder()
// .setOrder(order)
@@ -503,9 +505,9 @@
/**
* Waitlist Implementation
- * Proto File - https://developers.google.com/maps-booking/reference/rest-api-v3/waitlists/proto-bundle
- *
- * */
+ * Proto File -
+ * https://developers.google.com/maps-booking/reference/rest-api-v3/waitlists/proto-bundle
+ */
@Path("/BatchGetWaitEstimates")
@POST
@Produces(MediaType.APPLICATION_JSON)
@@ -513,7 +515,8 @@
public String batchGetWaitEstimates(String request) throws InvalidProtocolBufferException {
// use JsonFormat.Parser to convert Json String into protocol buffer
- Waitlist.BatchGetWaitEstimatesRequest.Builder requestBuilder = Waitlist.BatchGetWaitEstimatesRequest.newBuilder();
+ Waitlist.BatchGetWaitEstimatesRequest.Builder requestBuilder
+ = Waitlist.BatchGetWaitEstimatesRequest.newBuilder();
JsonFormat.Parser jsonParser = JsonFormat.parser();
jsonParser.merge(request, requestBuilder);
Waitlist.BatchGetWaitEstimatesRequest batchGetWaitEstimatesRequest = requestBuilder.build();
@@ -522,7 +525,8 @@
// return corresponding response and HTTP code
//
// Normal path: get response object from the helper function
- Waitlist.BatchGetWaitEstimatesResponse response = performBatchGetWaitEstimates(batchGetWaitEstimatesRequest);
+ Waitlist.BatchGetWaitEstimatesResponse response
+ = performBatchGetWaitEstimates(batchGetWaitEstimatesRequest);
// use JsonFormat to convert protocol buffer to Json
String jsonResponse = jsonPrinter().print(response);
@@ -530,15 +534,16 @@
}
// TODO(partner): Implement this method to return wait estimates based on party size
- private Waitlist.BatchGetWaitEstimatesResponse performBatchGetWaitEstimates(Waitlist.BatchGetWaitEstimatesRequest request) {
-
+ private Waitlist.BatchGetWaitEstimatesResponse performBatchGetWaitEstimates(
+ Waitlist.BatchGetWaitEstimatesRequest request) {
// String merchantId = request.getMerchantId();
// String serviceId = request.getServiceId();
//
// List<Integer> requestedPartySizes = request.getPartySizeList();
//
- // Waitlist.BatchGetWaitEstimatesResponse response = Waitlist.BatchGetWaitEstimatesResponse.newBuilder().setWaitlistStatus(
- // WaitlistStatus.OPEN).addAllWaitEstimate(...).build();
+ // Waitlist.BatchGetWaitEstimatesResponse response
+ // = Waitlist.BatchGetWaitEstimatesResponse.newBuilder().setWaitlistStatus(
+ // WaitlistStatus.OPEN).addAllWaitEstimate(...).build();
//
// return response;
@@ -552,7 +557,8 @@
public String createWaitlistEntry(String request) throws InvalidProtocolBufferException {
// use JsonFormat.Parser to convert Json String into protocol buffer
- Waitlist.CreateWaitlistEntryRequest.Builder requestBuilder = Waitlist.CreateWaitlistEntryRequest.newBuilder();
+ Waitlist.CreateWaitlistEntryRequest.Builder requestBuilder
+ = Waitlist.CreateWaitlistEntryRequest.newBuilder();
JsonFormat.Parser jsonParser = JsonFormat.parser();
jsonParser.merge(request, requestBuilder);
Waitlist.CreateWaitlistEntryRequest createWaitlistEntryRequest = requestBuilder.build();
@@ -561,7 +567,8 @@
// return corresponding response and HTTP code
//
// Normal path: get response object from the helper function
- Waitlist.CreateWaitlistEntryResponse response = performCreateWaitlistEntry(createWaitlistEntryRequest);
+ Waitlist.CreateWaitlistEntryResponse response
+ = performCreateWaitlistEntry(createWaitlistEntryRequest);
// use JsonFormat to convert protocol buffer to Json
String jsonResponse = jsonPrinter().print(response);
@@ -569,26 +576,28 @@
}
// TODO(partner): Implement this method to create wait list entry based on request
- private Waitlist.CreateWaitlistEntryResponse performCreateWaitlistEntry(Waitlist.CreateWaitlistEntryRequest request) {
-
+ private Waitlist.CreateWaitlistEntryResponse performCreateWaitlistEntry(
+ Waitlist.CreateWaitlistEntryRequest request) {
// String merchantId = request.getMerchantId();
// String serviceId = request.getServiceId();
// int partySize = request.getPartySize();
//
// Waitlist.UserInformation userInformation = request.getUserInformation();
// String idempotencyToken = request.getIdempotencyToken();
-
- // Normal Case -> return a unique waitlist_entry_id e.g
- // Waitlist.CreateWaitlistEntryResponse response = Waitlist.CreateWaitlistEntryResponse.newBuilder()
- // .setWaitlistEntryId(...).build();
-
- // Business logic error -> set the WaitlistBusinessLogicFailure in the response
-
- // Waitlist.WaitlistBusinessLogicFailure waitlistBusinessLogicFailure = Waitlist.WaitlistBusinessLogicFailure.newBuilder()
- // .setCause(Cause.WAITLIST_FULL).setDescription("").build();
//
- // Waitlist.CreateWaitlistEntryResponse response = Waitlist.CreateWaitlistEntryResponse.newBuilder()
- // .setWaitlistBusinessLogicFailure(waitlistBusinessLogicFailure).build();
+ // Normal Case -> return a unique waitlist_entry_id e.g
+ // Waitlist.CreateWaitlistEntryResponse response
+ // = Waitlist.CreateWaitlistEntryResponse.newBuilder().setWaitlistEntryId(...).build();
+ //
+ // Business logic error -> set the WaitlistBusinessLogicFailure in the response
+ //
+ // Waitlist.WaitlistBusinessLogicFailure waitlistBusinessLogicFailure
+ // = Waitlist.WaitlistBusinessLogicFailure.newBuilder()
+ // .setCause(Cause.WAITLIST_FULL).setDescription("").build();
+ //
+ // Waitlist.CreateWaitlistEntryResponse response
+ // = Waitlist.CreateWaitlistEntryResponse.newBuilder()
+ // .setWaitlistBusinessLogicFailure(waitlistBusinessLogicFailure).build();
//
// return response;
@@ -602,7 +611,8 @@
public String getWaitlistEntry(String request) throws InvalidProtocolBufferException {
// use JsonFormat.Parser to convert Json String into protocol buffer
- Waitlist.GetWaitlistEntryRequest.Builder requestBuilder = Waitlist.GetWaitlistEntryRequest.newBuilder();
+ Waitlist.GetWaitlistEntryRequest.Builder requestBuilder
+ = Waitlist.GetWaitlistEntryRequest.newBuilder();
JsonFormat.Parser jsonParser = JsonFormat.parser();
jsonParser.merge(request, requestBuilder);
Waitlist.GetWaitlistEntryRequest getWaitlistEntryRequest = requestBuilder.build();
@@ -611,7 +621,8 @@
// return corresponding response and HTTP code
//
// Normal path: get response object from the helper function
- Waitlist.GetWaitlistEntryResponse response = performGetWaitlistEntryRequest(getWaitlistEntryRequest);
+ Waitlist.GetWaitlistEntryResponse response
+ = performGetWaitlistEntry(getWaitlistEntryRequest);
// use JsonFormat to convert protocol buffer to Json
String jsonResponse = jsonPrinter().print(response);
@@ -619,8 +630,8 @@
}
// TODO(partner): Implement this method to return waitlist entry
- private Waitlist.GetWaitlistEntryResponse performGetWaitlistEntryRequest(Waitlist.GetWaitlistEntryRequest request) {
-
+ private Waitlist.GetWaitlistEntryResponse performGetWaitlistEntry(
+ Waitlist.GetWaitlistEntryRequest request) {
// String waitlistEntryId = request.getWaitlistEntryId();
//
// Waitlist.GetWaitlistEntryResponse response = Waitlist.GetWaitlistEntryResponse.newBuilder()
@@ -638,7 +649,8 @@
public String deleteWaitlistEntry(String request) throws InvalidProtocolBufferException {
// use JsonFormat.Parser to convert Json String into protocol buffer
- Waitlist.DeleteWaitlistEntryRequest.Builder requestBuilder = Waitlist.DeleteWaitlistEntryRequest.newBuilder();
+ Waitlist.DeleteWaitlistEntryRequest.Builder requestBuilder
+ = Waitlist.DeleteWaitlistEntryRequest.newBuilder();
JsonFormat.Parser jsonParser = JsonFormat.parser();
jsonParser.merge(request, requestBuilder);
Waitlist.DeleteWaitlistEntryRequest deleteWaitlistEntryRequest = requestBuilder.build();
@@ -656,10 +668,10 @@
private void performDeleteWaitlistEntry(Waitlist.DeleteWaitlistEntryRequest request) {
// String waitlistEntryId = request.getWaitlistEntryId();
-
// If waitlist entry Id exists, delete it
-
// If waitlist entry id doesn't exist, return 404
- // throw new WebApplicationException(400);
+ // throw new WebApplicationException(404);
+
+ throw new UnsupportedOperationException("Not implemented yet");
}
-}
\ No newline at end of file
+}