Merge branch 'master' of https://github.com/iluwatar/java-design-patterns
This commit is contained in:
		| @@ -23,11 +23,16 @@ | ||||
|  | ||||
| package com.iluwatar.api.gateway; | ||||
|  | ||||
| import static org.slf4j.LoggerFactory.getLogger; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.net.URI; | ||||
| import java.net.http.HttpClient; | ||||
| import java.net.http.HttpRequest; | ||||
| import java.net.http.HttpResponse; | ||||
| import java.net.http.HttpResponse.BodyHandlers; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| /** | ||||
| @@ -35,6 +40,8 @@ import org.springframework.stereotype.Component; | ||||
|  */ | ||||
| @Component | ||||
| public class ImageClientImpl implements ImageClient { | ||||
|   private static final Logger LOGGER = getLogger(ImageClientImpl.class); | ||||
|  | ||||
|   /** | ||||
|    * Makes a simple HTTP Get request to the Image microservice. | ||||
|    * | ||||
| @@ -49,12 +56,26 @@ public class ImageClientImpl implements ImageClient { | ||||
|         .build(); | ||||
|  | ||||
|     try { | ||||
|       LOGGER.info("Sending request to fetch image path"); | ||||
|       var httpResponse = httpClient.send(httpGet, BodyHandlers.ofString()); | ||||
|       logResponse(httpResponse); | ||||
|       return httpResponse.body(); | ||||
|     } catch (IOException | InterruptedException e) { | ||||
|       e.printStackTrace(); | ||||
|       LOGGER.error("Failure occurred while getting image path", e); | ||||
|     } | ||||
|  | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   private void logResponse(HttpResponse<String> httpResponse) { | ||||
|     if (isSuccessResponse(httpResponse.statusCode())) { | ||||
|       LOGGER.info("Image path received successfully"); | ||||
|     } else { | ||||
|       LOGGER.warn("Image path request failed"); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   private boolean isSuccessResponse(int responseCode) { | ||||
|     return responseCode >= 200 && responseCode <= 299; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -23,18 +23,26 @@ | ||||
|  | ||||
| package com.iluwatar.api.gateway; | ||||
|  | ||||
| import static org.slf4j.LoggerFactory.getLogger; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.net.URI; | ||||
| import java.net.http.HttpClient; | ||||
| import java.net.http.HttpRequest; | ||||
| import java.net.http.HttpResponse; | ||||
| import java.net.http.HttpResponse.BodyHandlers; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * An adapter to communicate with the Price microservice. | ||||
|  */ | ||||
| @Component | ||||
| public class PriceClientImpl implements PriceClient { | ||||
|   private static final Logger LOGGER = getLogger(PriceClientImpl.class); | ||||
|  | ||||
|   /** | ||||
|    * Makes a simple HTTP Get request to the Price microservice. | ||||
|    * | ||||
| @@ -49,12 +57,26 @@ public class PriceClientImpl implements PriceClient { | ||||
|         .build(); | ||||
|  | ||||
|     try { | ||||
|       LOGGER.info("Sending request to fetch price info"); | ||||
|       var httpResponse = httpClient.send(httpGet, BodyHandlers.ofString()); | ||||
|       logResponse(httpResponse); | ||||
|       return httpResponse.body(); | ||||
|     } catch (IOException | InterruptedException e) { | ||||
|       e.printStackTrace(); | ||||
|       LOGGER.error("Failure occurred while getting price info", e); | ||||
|     } | ||||
|  | ||||
|     return null; | ||||
|   } | ||||
|  | ||||
|   private void logResponse(HttpResponse<String> httpResponse) { | ||||
|     if (isSuccessResponse(httpResponse.statusCode())) { | ||||
|       LOGGER.info("Price info received successfully"); | ||||
|     } else { | ||||
|       LOGGER.warn("Price info request failed"); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   private boolean isSuccessResponse(int responseCode) { | ||||
|     return responseCode >= 200 && responseCode <= 299; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -23,15 +23,20 @@ | ||||
|  | ||||
| package com.iluwatar.image.microservice; | ||||
|  | ||||
| import static org.slf4j.LoggerFactory.getLogger; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMethod; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Exposes the Image microservice's endpoints. | ||||
|  */ | ||||
| @RestController | ||||
| public class ImageController { | ||||
|   private static final Logger LOGGER = getLogger(ImageController.class); | ||||
|  | ||||
|   /** | ||||
|    * An endpoint for a user to retrieve an image path. | ||||
| @@ -40,6 +45,7 @@ public class ImageController { | ||||
|    */ | ||||
|   @RequestMapping(value = "/image-path", method = RequestMethod.GET) | ||||
|   public String getImagePath() { | ||||
|     LOGGER.info("Successfully found image path"); | ||||
|     return "/product-image.png"; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -23,15 +23,20 @@ | ||||
|  | ||||
| package com.iluwatar.price.microservice; | ||||
|  | ||||
| import static org.slf4j.LoggerFactory.getLogger; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMethod; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Exposes the Price microservice's endpoints. | ||||
|  */ | ||||
| @RestController | ||||
| public class PriceController { | ||||
|   private static final Logger LOGGER = getLogger(PriceController.class); | ||||
|  | ||||
|   /** | ||||
|    * An endpoint for a user to retrieve a product's price. | ||||
| @@ -40,6 +45,7 @@ public class PriceController { | ||||
|    */ | ||||
|   @RequestMapping(value = "/price", method = RequestMethod.GET) | ||||
|   public String getPrice() { | ||||
|     LOGGER.info("Successfully found price info"); | ||||
|     return "20"; | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user