From 6c4501cba07bb4781f017f15aa238b3d44af7aae Mon Sep 17 00:00:00 2001 From: fmendezh Date: Fri, 23 Apr 2021 12:03:01 +0200 Subject: [PATCH] triggering component change events when a Network constituent changes --- .../events/MessageSendingEventListener.java | 38 +++++++++++++++++-- .../search/DatasetIndexUpdateListener.java | 2 +- .../ws/resources/NetworkResource.java | 3 ++ 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/registry-events/src/main/java/org/gbif/registry/events/MessageSendingEventListener.java b/registry-events/src/main/java/org/gbif/registry/events/MessageSendingEventListener.java index 270f7e5e05..c7d9060c75 100644 --- a/registry-events/src/main/java/org/gbif/registry/events/MessageSendingEventListener.java +++ b/registry-events/src/main/java/org/gbif/registry/events/MessageSendingEventListener.java @@ -15,7 +15,6 @@ */ package org.gbif.registry.events; -import org.gbif.api.model.registry.NetworkEntity; import org.gbif.common.messaging.api.Message; import org.gbif.common.messaging.api.MessagePublisher; import org.gbif.common.messaging.api.messages.RegistryChangeMessage; @@ -63,7 +62,7 @@ public MessageSendingEventListener( } @Subscribe - public void sendCreatedEvent(final CreateEvent event) { + public void sendCreatedEvent(final CreateEvent event) { final Message message = new RegistryChangeMessage( RegistryChangeMessage.ChangeType.CREATED, @@ -93,7 +92,7 @@ public void sendCreatedEvent(final CreateEvent even } @Subscribe - public void sendUpdatedEvent(final UpdateEvent event) { + public void sendUpdatedEvent(final UpdateEvent event) { final Message message = new RegistryChangeMessage( RegistryChangeMessage.ChangeType.UPDATED, @@ -124,7 +123,7 @@ public void sendUpdatedEvent(final UpdateEvent even } @Subscribe - public void sendDeletedEvent(final DeleteEvent event) { + public void sendDeletedEvent(final DeleteEvent event) { final Message message = new RegistryChangeMessage( RegistryChangeMessage.ChangeType.DELETED, @@ -153,4 +152,35 @@ public void sendDeletedEvent(final DeleteEvent even embargoSeconds, TimeUnit.SECONDS); } + + @Subscribe + public final void updatedComponent(ChangedComponentEvent event) { + final Message message = + new RegistryChangeMessage( + RegistryChangeMessage.ChangeType.UPDATED, + event.getTargetClass(), + event.getTargetEntityKey(), + null); + LOG.debug( + "Scheduling notification of UpdateEvent [{}] with an embargo durations of {} seconds", + event.getTargetClass().getSimpleName(), + embargoSeconds); + + scheduler.schedule( + () -> { + try { + LOG.debug( + "Broadcasting to postal service UpdateEvent [{}]", + event.getTargetClass().getSimpleName()); + messagePublisher.send(message); + } catch (IOException e) { + LOG.warn( + "Failed sending RegistryChangeMessage for UpdateEvent [{}]", + event.getTargetClass().getSimpleName(), + e); + } + }, + embargoSeconds, + TimeUnit.SECONDS); + } } diff --git a/registry-events/src/main/java/org/gbif/registry/search/DatasetIndexUpdateListener.java b/registry-events/src/main/java/org/gbif/registry/search/DatasetIndexUpdateListener.java index 022059bcc7..7225432d37 100644 --- a/registry-events/src/main/java/org/gbif/registry/search/DatasetIndexUpdateListener.java +++ b/registry-events/src/main/java/org/gbif/registry/search/DatasetIndexUpdateListener.java @@ -102,7 +102,7 @@ public final void deleted(DeleteEvent event) { @Subscribe public final void updatedComponent(ChangedComponentEvent event) { - // only fire in case of tagged datasets which become keywords in solr + // only fire in case of tagged datasets if (event.getTargetClass().equals(Dataset.class) && event.getComponentClass().equals(Tag.class)) { // we only put tagged datasets onto the queue for this event type! diff --git a/registry-ws/src/main/java/org/gbif/registry/ws/resources/NetworkResource.java b/registry-ws/src/main/java/org/gbif/registry/ws/resources/NetworkResource.java index 6130996783..db75e45758 100644 --- a/registry-ws/src/main/java/org/gbif/registry/ws/resources/NetworkResource.java +++ b/registry-ws/src/main/java/org/gbif/registry/ws/resources/NetworkResource.java @@ -24,6 +24,7 @@ import org.gbif.api.model.registry.search.KeyTitleResult; import org.gbif.api.service.registry.NetworkService; import org.gbif.registry.domain.ws.NetworkRequestSearchParams; +import org.gbif.registry.events.ChangedComponentEvent; import org.gbif.registry.events.EventManager; import org.gbif.registry.persistence.WithMyBatis; import org.gbif.registry.persistence.mapper.DatasetMapper; @@ -124,6 +125,7 @@ public PagingResponse listConstituents( @Override public void addConstituent(@PathVariable("key") UUID networkKey, @PathVariable UUID datasetKey) { networkMapper.addDatasetConstituent(networkKey, datasetKey); + ChangedComponentEvent.newInstance(datasetKey, Dataset.class, Network.class); } @DeleteMapping("{key}/constituents/{datasetKey}") @@ -132,6 +134,7 @@ public void addConstituent(@PathVariable("key") UUID networkKey, @PathVariable U public void removeConstituent( @PathVariable("key") UUID networkKey, @PathVariable UUID datasetKey) { networkMapper.deleteDatasetConstituent(networkKey, datasetKey); + ChangedComponentEvent.newInstance(datasetKey, Dataset.class, Network.class); } @GetMapping("suggest")