@Override public void sendProjectAnalysisUpdate(Analysis analysis, Supplier<WebhookPayload> payloadSupplier) { List<Webhook> webhooks = readWebHooksFrom(analysis.getProjectUuid()) .map(dto -> new Webhook(dto.getUuid(), analysis.getProjectUuid(), analysis.getCeTaskUuid(), analysis.getAnalysisUuid(), dto.getName(), dto.getUrl())) .collect(MoreCollectors.toList()); if (webhooks.isEmpty()) { return; } WebhookPayload payload = payloadSupplier.get(); webhooks.forEach(webhook -> asyncExecution.addToQueue(() -> { WebhookDelivery delivery = caller.call(webhook, payload); log(delivery); deliveryStorage.persist(delivery); })); asyncExecution.addToQueue(() -> deliveryStorage.purge(analysis.getProjectUuid())); }
@Test public void purge_deletes_records_older_than_one_month_on_the_project() { when(system.now()).thenReturn(NOW); dbClient.webhookDeliveryDao().insert(dbSession, newDto("D1", "PROJECT_1", TWO_MONTHS_AGO)); dbClient.webhookDeliveryDao().insert(dbSession, newDto("D2", "PROJECT_1", TWO_WEEKS_AGO)); dbClient.webhookDeliveryDao().insert(dbSession, newDto("D3", "PROJECT_2", TWO_MONTHS_AGO)); dbSession.commit(); underTest.purge("PROJECT_1"); // do not purge another project PROJECT_2 assertThat(selectAllDeliveryUuids(dbTester, dbSession)).containsOnly("D2", "D3"); }
@Override public void sendProjectAnalysisUpdate(Analysis analysis, Supplier<WebhookPayload> payloadSupplier) { List<Webhook> webhooks = readWebHooksFrom(analysis.getProjectUuid()) .map(dto -> new Webhook(dto.getUuid(), analysis.getProjectUuid(), analysis.getCeTaskUuid(), analysis.getAnalysisUuid(), dto.getName(), dto.getUrl())) .collect(MoreCollectors.toList()); if (webhooks.isEmpty()) { return; } WebhookPayload payload = payloadSupplier.get(); webhooks.forEach(webhook -> asyncExecution.addToQueue(() -> { WebhookDelivery delivery = caller.call(webhook, payload); log(delivery); deliveryStorage.persist(delivery); })); asyncExecution.addToQueue(() -> deliveryStorage.purge(analysis.getProjectUuid())); }