Commit 6a814c07 authored by Eric Arndt's avatar Eric Arndt

Merge branch 'dev' into 'earndt-fixes-order-backend'

# Conflicts:
#   backend/order-management/src/main/java/com/afp/ordermanagement/model/Order.java
parents 64d8fe41 8d93a1f9
Pipeline #1662 failed with stage
in 38 seconds
...@@ -67,6 +67,11 @@ ...@@ -67,6 +67,11 @@
<artifactId>springfox-boot-starter</artifactId> <artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version> <version>3.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.5</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -17,7 +17,7 @@ public class KafkaController { ...@@ -17,7 +17,7 @@ public class KafkaController {
this.producer = producer; this.producer = producer;
} }
@PostMapping(value = "/publish") @PostMapping(value = "/publish/{id}")
public void sendMessageToKafkaTopic(@RequestParam String message) { public void sendMessageToKafkaTopic(@RequestParam String message) {
producer.sendMessage(message); producer.sendMessage(message);
} }
......
...@@ -2,6 +2,7 @@ package com.afp.ordermanagement.controller; ...@@ -2,6 +2,7 @@ package com.afp.ordermanagement.controller;
import com.afp.ordermanagement.model.Manager; import com.afp.ordermanagement.model.Manager;
import com.afp.ordermanagement.model.Order;
import com.afp.ordermanagement.repository.ManagerRepository; import com.afp.ordermanagement.repository.ManagerRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -24,4 +25,5 @@ public class ManagerController { ...@@ -24,4 +25,5 @@ public class ManagerController {
} }
} }
package com.afp.ordermanagement.controller; package com.afp.ordermanagement.controller;
import com.afp.ordermanagement.model.Order; import com.afp.ordermanagement.model.Order;
import com.afp.ordermanagement.repository.OrderRepository;
import com.afp.ordermanagement.service.OrderService; import com.afp.ordermanagement.service.OrderService;
import com.afp.ordermanagement.service.Producer;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
...@@ -17,6 +18,19 @@ public class OrderController { ...@@ -17,6 +18,19 @@ public class OrderController {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@Autowired
Producer producer;
/**
* DESC - This route will let order manager get order status from warehouse
* @param orderId
*/
@GetMapping("/orderStatus/{orderId}")
public void getOrderStatusFromWarehouse(@PathVariable String orderId) {
producer.sendOrderId(orderId);
}
@GetMapping("/orders") @GetMapping("/orders")
@CrossOrigin @CrossOrigin
public Flux<Order> getAllOrders(){ public Flux<Order> getAllOrders(){
...@@ -37,6 +51,7 @@ public class OrderController { ...@@ -37,6 +51,7 @@ public class OrderController {
@PostMapping("/orders") @PostMapping("/orders")
@ResponseStatus(HttpStatus.CREATED) @ResponseStatus(HttpStatus.CREATED)
public Mono<Order> saveOrder(@RequestBody Order order){ public Mono<Order> saveOrder(@RequestBody Order order){
return orderService.createOrder(order); return orderService.createOrder(order);
} }
......
...@@ -5,7 +5,6 @@ import org.springframework.data.mongodb.repository.ReactiveMongoRepository; ...@@ -5,7 +5,6 @@ import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import java.util.List;
@Repository @Repository
public interface OrderRepository extends ReactiveMongoRepository<Order, String> { public interface OrderRepository extends ReactiveMongoRepository<Order, String> {
......
package com.afp.ordermanagement.service; package com.afp.ordermanagement.service;
import com.afp.ordermanagement.model.Order;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.annotation.KafkaListener;
...@@ -14,4 +15,9 @@ public class Consumer { ...@@ -14,4 +15,9 @@ public class Consumer {
public void consumerManager(String message){ public void consumerManager(String message){
logger.info(String.format("#### -> Consumed message -> %s", message)); logger.info(String.format("#### -> Consumed message -> %s", message));
} }
@KafkaListener(topics = "orders")
public void getOrderStatusFromWarehouse(String status) {
logger.info(String.format("#### -> Consumed order Status: %s", status));
}
} }
package com.afp.ordermanagement.service; package com.afp.ordermanagement.service;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.config.ConfigDataResourceNotFoundException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.KafkaTemplate;
import java.sql.SQLOutput;
@Service @Service
public class Producer { public class Producer {
...@@ -19,9 +24,24 @@ public class Producer { ...@@ -19,9 +24,24 @@ public class Producer {
this.kafkaTemplate = kafkaTemplate; this.kafkaTemplate = kafkaTemplate;
} }
public void sendMessage(String message) { /**
logger.info(String.format("#### -> Producing message: %s", message)); * DESC - Sending orderId as a message to ORDER_TOPIC for warehouse to consume
kafkaTemplate.send(MANAGER_TOPIC, message); * @param id
* @throws ResourceNotFoundException
* @throws IllegalArgumentException
*/
public void sendOrderId(String id) {
try {
logger.info(String.format("#### -> Order id sent to warehouse: %s", id));
kafkaTemplate.send(ORDER_TOPIC, id);
} catch (ResourceNotFoundException e) {
logger.error("Order with that Id does not exist, exception caught: " + e);
} catch (IllegalArgumentException e) {
logger.error("Not a valid input, exception caught: " + e);
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment