diff --git a/src/main/java/com/example/template/Order.java b/src/main/java/com/example/template/Order.java index ca45509..fc766b6 100644 --- a/src/main/java/com/example/template/Order.java +++ b/src/main/java/com/example/template/Order.java @@ -2,9 +2,15 @@ package com.example.template; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import org.apache.kafka.clients.producer.ProducerRecord; import org.springframework.beans.BeanUtils; +import org.springframework.core.env.Environment; +import org.springframework.http.ResponseEntity; import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.web.client.RestTemplate; import javax.persistence.*; @@ -28,13 +34,33 @@ public class Order { @PostPersist private void publishOrderPlaced() { KafkaTemplate kafkaTemplate = Application.applicationContext.getBean(KafkaTemplate.class); + RestTemplate restTemplate = Application.applicationContext.getBean(RestTemplate.class); + Environment env = Application.applicationContext.getEnvironment(); ObjectMapper objectMapper = new ObjectMapper(); String json = null; + if( productId == null ){ + throw new RuntimeException(); + } + + String productUrl = env.getProperty("productUrl") + "/products/" + productId; + + // 1. checkInventory + ResponseEntity productEntity = restTemplate.getForEntity(productUrl, String.class); + System.out.println(productEntity.getStatusCode()); + System.out.println(productEntity.getBody()); + + JsonParser parser = new JsonParser(); + JsonObject jsonObject = parser.parse(productEntity.getBody()).getAsJsonObject(); + OrderPlaced orderPlaced = new OrderPlaced(); try { orderPlaced.setOrderId(id); + + this.setPrice(jsonObject.get("price").getAsInt()); + this.setProductName(jsonObject.get("name").getAsString()); + BeanUtils.copyProperties(this, orderPlaced); json = objectMapper.writeValueAsString(orderPlaced); } catch (JsonProcessingException e) { diff --git a/src/main/java/com/example/template/config/RestTemplateConfig.java b/src/main/java/com/example/template/config/RestTemplateConfig.java new file mode 100644 index 0000000..5ba72f9 --- /dev/null +++ b/src/main/java/com/example/template/config/RestTemplateConfig.java @@ -0,0 +1,22 @@ +package com.example.template.config; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.RestTemplate; + + +@Configuration +public class RestTemplateConfig { + + @Bean + RestTemplate restTemplate() { + RestTemplate restTemplate = new RestTemplate(); + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setObjectMapper(new ObjectMapper()); + restTemplate.getMessageConverters().add(converter); + return restTemplate; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4c7b2bd..44125b7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -23,6 +23,9 @@ logging: org: hibernate: type: trace + +productUrl: http://localhost:8085 + server: port: 8081 --- @@ -32,3 +35,5 @@ spring: bootstrap-servers: my-kafka.kafka.svc.cluster.local:9092 consumer: enable-auto-commit: true + +productUrl: http://product:8085 \ No newline at end of file