Loading vessels-commands/src/main/java/es/redmic/vesselscommands/controller/VesselController.java +15 −0 Original line number Diff line number Diff line package es.redmic.vesselscommands.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import es.redmic.commandslib.controller.CommandController; import es.redmic.models.es.common.dto.SuperDTO; import es.redmic.vesselscommands.service.VesselCommandService; import es.redmic.vesselslib.dto.vessel.VesselDTO; Loading @@ -14,4 +21,12 @@ public class VesselController extends CommandController<VesselDTO> { public VesselController(VesselCommandService service) { super(service); } @Override @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody @ResponseStatus(code = HttpStatus.NOT_FOUND) public SuperDTO delete(@PathVariable("id") String id) { return null; } } vessels-commands/src/main/java/es/redmic/vesselscommands/streams/VesselEventStreams.java +16 −27 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.avro.common.EventError; import es.redmic.brokerlib.avro.common.EventTypes; import es.redmic.brokerlib.avro.serde.hashmap.HashMapSerde; import es.redmic.commandslib.exceptions.ExceptionType; import es.redmic.commandslib.streaming.common.StreamConfig; import es.redmic.commandslib.streaming.streams.EventSourcingStreams; import es.redmic.vesselslib.dto.vessel.VesselDTO; Loading Loading @@ -218,26 +219,14 @@ public class VesselEventStreams extends EventSourcingStreams { KStream<String, Event> deleteEvents = events .filter((id, event) -> (EventTypes.CHECK_DELETE.equals(event.getType()))); // TODO: Buscar la manera de comprobar si el barco está en algún track deleteEvents.map( (key, value) -> KeyValue.pair(key, VesselEventFactory.getEvent(value, VesselEventTypes.DELETE_CHECKED))) .to(topic); ; /*-deleteEvents .leftJoin(aggByVessel, (deleteEvent, vesselTrackingAggByVessel) -> getCheckDeleteResultEvent(deleteEvent, vesselTrackingAggByVessel)) .to(topic);-*/ // TODO: Esta funcionalidad está bloqueada. Si se desea eliminar un barco, se // debe borrar todos los tracking donde está referenciado o buscar la manera de // comprobar si el barco está en algún track para bloquearlo deleteEvents.map((key, value) -> KeyValue.pair(key, getCheckDeleteResultEvent(value))).to(topic); } /*-@SuppressWarnings("serial") private Event getCheckDeleteResultEvent(Event deleteEvent, HashMap<String, AggregationVesselInVesselTrackingPostUpdateEvent> vesselTrackingAggByVessel) { if (vesselTrackingAggByVessel == null || vesselTrackingAggByVessel.isEmpty()) { // elemento no referenciado return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECKED); } else { // elemento referenciado @SuppressWarnings("serial") private Event getCheckDeleteResultEvent(Event deleteEvent) { return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECK_FAILED, ExceptionType.ITEM_REFERENCED.toString(), new HashMap<String, String>() { Loading @@ -245,8 +234,8 @@ public class VesselEventStreams extends EventSourcingStreams { put("id", deleteEvent.getAggregateId()); } }); } }-*/ /** * Función que a partir del último evento correcto + el evento de edición Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromRestTest.java +1 −10 Original line number Diff line number Diff line Loading @@ -218,18 +218,9 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { .perform(delete("/"+ id) .header("Authorization", "Bearer " + getTokenOAGUser()) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.success", is(true))); .andExpect(status().isNotFound()); // @formatter:on DeleteVesselEvent event = (DeleteVesselEvent) blockingQueue.poll(50, TimeUnit.SECONDS); DeleteVesselEvent expectedEvent = VesselDataUtil.getDeleteEvent(mmsi); assertNotNull(event); assertEquals(event.getType(), expectedEvent.getType()); assertEquals(event.getVersion(), expectedEvent.getVersion()); assertEquals(event.getAggregateId(), expectedEvent.getAggregateId()); } @SuppressWarnings("unchecked") Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselCommandHandlerTest.java +14 −32 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import javax.annotation.PostConstruct; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.joda.time.DateTime; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; Loading @@ -38,6 +39,7 @@ import es.redmic.exception.data.DeleteItemException; import es.redmic.exception.data.ItemAlreadyExistException; import es.redmic.exception.data.ItemNotFoundException; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltracking.VesselTrackingDataUtil; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; Loading @@ -63,6 +65,7 @@ import es.redmic.vesselslib.events.vessel.update.UpdateVesselConfirmedEvent; import es.redmic.vesselslib.events.vessel.update.UpdateVesselEvent; import es.redmic.vesselslib.events.vessel.update.UpdateVesselFailedEvent; import es.redmic.vesselslib.events.vessel.update.VesselUpdatedEvent; import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent; import es.redmic.vesselslib.events.vesseltype.create.CreateVesselTypeConfirmedEvent; import es.redmic.vesselslib.events.vesseltype.create.VesselTypeCreatedEvent; Loading Loading @@ -243,27 +246,6 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { assertEquals(updateVesselEvent.getVessel(), ((VesselUpdatedEvent) confirm).getVessel()); } // Envía un evento de comprobación de que el elemento puede ser borrado y debe // provocar un evento DeleteVesselCheckedEvent ya que no está referenciado @Test public void checkDeleteVesselEvent_SendDeleteVesselCheckedEvent_IfReceivesSuccess() throws InterruptedException { logger.debug("----> CheckDeleteVesselEvent"); CheckDeleteVesselEvent event = VesselDataUtil.getCheckDeleteVesselEvent(mmsi + 33); kafkaTemplate.send(vessel_topic, event.getAggregateId(), event); Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS); assertNotNull(confirm); assertEquals(VesselEventTypes.DELETE_CHECKED, confirm.getType()); assertEquals(event.getAggregateId(), confirm.getAggregateId()); assertEquals(event.getUserId(), confirm.getUserId()); assertEquals(event.getSessionId(), confirm.getSessionId()); assertEquals(event.getVersion(), confirm.getVersion()); } // Envía un evento de confirmación de borrado y debe provocar un evento Deleted @Test public void deleteVesselConfirmedEvent_SendVesselDeletedEvent_IfReceivesSuccess() throws InterruptedException { Loading Loading @@ -355,7 +337,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { // Envía un evento de comprobación de que el elemento puede ser borrado y debe // provocar un evento DeleteVesselCheckFailedEvent ya que está referenciado /*-@Test @Test public void checkDeleteVesselEvent_SendDeleteVesselCheckFailedEvent_IfVesselIsReference() throws InterruptedException { Loading Loading @@ -385,7 +367,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { assertEquals(event.getUserId(), confirm.getUserId()); assertEquals(event.getSessionId(), confirm.getSessionId()); assertEquals(event.getVersion(), confirm.getVersion()); }-*/ } // Envía un evento de error de borrado y debe provocar un evento Cancelled con // el item dentro Loading Loading
vessels-commands/src/main/java/es/redmic/vesselscommands/controller/VesselController.java +15 −0 Original line number Diff line number Diff line package es.redmic.vesselscommands.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import es.redmic.commandslib.controller.CommandController; import es.redmic.models.es.common.dto.SuperDTO; import es.redmic.vesselscommands.service.VesselCommandService; import es.redmic.vesselslib.dto.vessel.VesselDTO; Loading @@ -14,4 +21,12 @@ public class VesselController extends CommandController<VesselDTO> { public VesselController(VesselCommandService service) { super(service); } @Override @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody @ResponseStatus(code = HttpStatus.NOT_FOUND) public SuperDTO delete(@PathVariable("id") String id) { return null; } }
vessels-commands/src/main/java/es/redmic/vesselscommands/streams/VesselEventStreams.java +16 −27 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import es.redmic.brokerlib.avro.common.Event; import es.redmic.brokerlib.avro.common.EventError; import es.redmic.brokerlib.avro.common.EventTypes; import es.redmic.brokerlib.avro.serde.hashmap.HashMapSerde; import es.redmic.commandslib.exceptions.ExceptionType; import es.redmic.commandslib.streaming.common.StreamConfig; import es.redmic.commandslib.streaming.streams.EventSourcingStreams; import es.redmic.vesselslib.dto.vessel.VesselDTO; Loading Loading @@ -218,26 +219,14 @@ public class VesselEventStreams extends EventSourcingStreams { KStream<String, Event> deleteEvents = events .filter((id, event) -> (EventTypes.CHECK_DELETE.equals(event.getType()))); // TODO: Buscar la manera de comprobar si el barco está en algún track deleteEvents.map( (key, value) -> KeyValue.pair(key, VesselEventFactory.getEvent(value, VesselEventTypes.DELETE_CHECKED))) .to(topic); ; /*-deleteEvents .leftJoin(aggByVessel, (deleteEvent, vesselTrackingAggByVessel) -> getCheckDeleteResultEvent(deleteEvent, vesselTrackingAggByVessel)) .to(topic);-*/ // TODO: Esta funcionalidad está bloqueada. Si se desea eliminar un barco, se // debe borrar todos los tracking donde está referenciado o buscar la manera de // comprobar si el barco está en algún track para bloquearlo deleteEvents.map((key, value) -> KeyValue.pair(key, getCheckDeleteResultEvent(value))).to(topic); } /*-@SuppressWarnings("serial") private Event getCheckDeleteResultEvent(Event deleteEvent, HashMap<String, AggregationVesselInVesselTrackingPostUpdateEvent> vesselTrackingAggByVessel) { if (vesselTrackingAggByVessel == null || vesselTrackingAggByVessel.isEmpty()) { // elemento no referenciado return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECKED); } else { // elemento referenciado @SuppressWarnings("serial") private Event getCheckDeleteResultEvent(Event deleteEvent) { return VesselEventFactory.getEvent(deleteEvent, VesselEventTypes.DELETE_CHECK_FAILED, ExceptionType.ITEM_REFERENCED.toString(), new HashMap<String, String>() { Loading @@ -245,8 +234,8 @@ public class VesselEventStreams extends EventSourcingStreams { put("id", deleteEvent.getAggregateId()); } }); } }-*/ /** * Función que a partir del último evento correcto + el evento de edición Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/CreateVesselFromRestTest.java +1 −10 Original line number Diff line number Diff line Loading @@ -218,18 +218,9 @@ public class CreateVesselFromRestTest extends DocumentationCommandBaseTest { .perform(delete("/"+ id) .header("Authorization", "Bearer " + getTokenOAGUser()) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.success", is(true))); .andExpect(status().isNotFound()); // @formatter:on DeleteVesselEvent event = (DeleteVesselEvent) blockingQueue.poll(50, TimeUnit.SECONDS); DeleteVesselEvent expectedEvent = VesselDataUtil.getDeleteEvent(mmsi); assertNotNull(event); assertEquals(event.getType(), expectedEvent.getType()); assertEquals(event.getVersion(), expectedEvent.getVersion()); assertEquals(event.getAggregateId(), expectedEvent.getAggregateId()); } @SuppressWarnings("unchecked") Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselCommandHandlerTest.java +14 −32 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import javax.annotation.PostConstruct; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.joda.time.DateTime; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; Loading @@ -38,6 +39,7 @@ import es.redmic.exception.data.DeleteItemException; import es.redmic.exception.data.ItemAlreadyExistException; import es.redmic.exception.data.ItemNotFoundException; import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig; import es.redmic.test.vesselscommands.integration.vesseltracking.VesselTrackingDataUtil; import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; import es.redmic.vesselscommands.VesselsCommandsApplication; Loading @@ -63,6 +65,7 @@ import es.redmic.vesselslib.events.vessel.update.UpdateVesselConfirmedEvent; import es.redmic.vesselslib.events.vessel.update.UpdateVesselEvent; import es.redmic.vesselslib.events.vessel.update.UpdateVesselFailedEvent; import es.redmic.vesselslib.events.vessel.update.VesselUpdatedEvent; import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent; import es.redmic.vesselslib.events.vesseltype.create.CreateVesselTypeConfirmedEvent; import es.redmic.vesselslib.events.vesseltype.create.VesselTypeCreatedEvent; Loading Loading @@ -243,27 +246,6 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { assertEquals(updateVesselEvent.getVessel(), ((VesselUpdatedEvent) confirm).getVessel()); } // Envía un evento de comprobación de que el elemento puede ser borrado y debe // provocar un evento DeleteVesselCheckedEvent ya que no está referenciado @Test public void checkDeleteVesselEvent_SendDeleteVesselCheckedEvent_IfReceivesSuccess() throws InterruptedException { logger.debug("----> CheckDeleteVesselEvent"); CheckDeleteVesselEvent event = VesselDataUtil.getCheckDeleteVesselEvent(mmsi + 33); kafkaTemplate.send(vessel_topic, event.getAggregateId(), event); Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS); assertNotNull(confirm); assertEquals(VesselEventTypes.DELETE_CHECKED, confirm.getType()); assertEquals(event.getAggregateId(), confirm.getAggregateId()); assertEquals(event.getUserId(), confirm.getUserId()); assertEquals(event.getSessionId(), confirm.getSessionId()); assertEquals(event.getVersion(), confirm.getVersion()); } // Envía un evento de confirmación de borrado y debe provocar un evento Deleted @Test public void deleteVesselConfirmedEvent_SendVesselDeletedEvent_IfReceivesSuccess() throws InterruptedException { Loading Loading @@ -355,7 +337,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { // Envía un evento de comprobación de que el elemento puede ser borrado y debe // provocar un evento DeleteVesselCheckFailedEvent ya que está referenciado /*-@Test @Test public void checkDeleteVesselEvent_SendDeleteVesselCheckFailedEvent_IfVesselIsReference() throws InterruptedException { Loading Loading @@ -385,7 +367,7 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest { assertEquals(event.getUserId(), confirm.getUserId()); assertEquals(event.getSessionId(), confirm.getSessionId()); assertEquals(event.getVersion(), confirm.getVersion()); }-*/ } // Envía un evento de error de borrado y debe provocar un evento Cancelled con // el item dentro Loading