Implemented RemovedEventListener... #51
| @@ -1,6 +1,14 @@ | ||||
| package ch.unisg.tapas.auctionhouse.adapter.in.messaging.http; | ||||
|  | ||||
| import ch.unisg.tapas.auctionhouse.application.handler.ExecutorRemovedHandler; | ||||
| import ch.unisg.tapas.auctionhouse.application.port.in.ExecutorRemovedEvent; | ||||
| import ch.unisg.tapas.auctionhouse.domain.Auction; | ||||
| import ch.unisg.tapas.auctionhouse.domain.ExecutorRegistry; | ||||
| import org.springframework.http.HttpEntity; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
|  | ||||
| /** | ||||
| @@ -10,7 +18,17 @@ import org.springframework.web.bind.annotation.RestController; | ||||
| public class ExecutorRemovedEventListenerHttpAdapter { | ||||
|  | ||||
|     // TODO: add annotations for request method, request URI, etc. | ||||
|     public void handleExecutorRemovedEvent(@PathVariable("executorId") String executorId) { | ||||
|     @PostMapping(path = "/executors/{taskType}/{executorId}") | ||||
|     public ResponseEntity<String> handleExecutorRemovedEvent(@PathVariable("executorId") String executorId) { | ||||
|         // TODO: implement logic | ||||
|  | ||||
|         ExecutorRemovedEvent executorRemovedEvent = new ExecutorRemovedEvent( | ||||
|             new ExecutorRegistry.ExecutorIdentifier(executorId)             | ||||
|         ); | ||||
|  | ||||
|         ExecutorRemovedHandler newExecutorHandler = new ExecutorRemovedHandler(); | ||||
|         newExecutorHandler.handleExecutorRemovedEvent(executorRemovedEvent); | ||||
|          | ||||
|         return new ResponseEntity<>(HttpStatus.NO_CONTENT); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,46 @@ | ||||
| package ch.unisg.tapas.auctionhouse.adapter.in.messaging.mqtt; | ||||
|  | ||||
| import ch.unisg.tapas.auctionhouse.application.handler.ExecutorRemovedHandler; | ||||
| import ch.unisg.tapas.auctionhouse.application.port.in.ExecutorRemovedEvent; | ||||
| import ch.unisg.tapas.auctionhouse.domain.Auction; | ||||
| import ch.unisg.tapas.auctionhouse.domain.ExecutorRegistry; | ||||
| import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.JsonNode; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import org.apache.logging.log4j.LogManager; | ||||
| import org.apache.logging.log4j.Logger; | ||||
| import org.eclipse.paho.client.mqttv3.MqttMessage; | ||||
|  | ||||
| /** | ||||
|  * Listener that handles events when an executor was removed to this TAPAS application. | ||||
|  * | ||||
|  * This class is only provided as an example to help you bootstrap the project. | ||||
|  */ | ||||
| public class ExecutorRemovedEventListenerMqttAdapter extends AuctionEventMqttListener { | ||||
|     private static final Logger LOGGER = LogManager.getLogger(ExecutorRemovedEventListenerMqttAdapter.class); | ||||
|  | ||||
|     @Override | ||||
|     public boolean handleEvent(MqttMessage message) { | ||||
|         String payload = new String(message.getPayload()); | ||||
|  | ||||
|         try { | ||||
|             // Note: this messge representation is provided only as an example. You should use a | ||||
|             // representation that makes sense in the context of your application. | ||||
|             JsonNode data = new ObjectMapper().readTree(payload); | ||||
|  | ||||
|             String executorId = data.get("executorId").asText(); | ||||
|  | ||||
|             ExecutorRemovedEvent executorRemovedEvent = new ExecutorRemovedEvent( | ||||
|                 new ExecutorRegistry.ExecutorIdentifier(executorId) | ||||
|             ); | ||||
|  | ||||
|             ExecutorRemovedHandler newExecutorHandler = new ExecutorRemovedHandler(); | ||||
|             newExecutorHandler.handleNewExecutorEvent(executorRemovedEvent); | ||||
|         } catch (JsonProcessingException | NullPointerException e) { | ||||
|             LOGGER.error(e.getMessage(), e); | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
| } | ||||
| @@ -16,4 +16,7 @@ public class ExecutorRemovedHandler implements ExecutorRemovedEventHandler { | ||||
|     public boolean handleExecutorRemovedEvent(ExecutorRemovedEvent executorRemovedEvent) { | ||||
|         return ExecutorRegistry.getInstance().removeExecutor(executorRemovedEvent.getExecutorId()); | ||||
|     } | ||||
|  | ||||
|     public void handleNewExecutorEvent(ExecutorRemovedEvent executorRemovedEvent) { | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	
I don't think we need to handle a New Executor event inside the ExecutorRemovedHandler