From 3ae18356c3fcafeb7b5348c8916098156cd0a824 Mon Sep 17 00:00:00 2001 From: Guillaume Jambet Date: Wed, 14 Feb 2018 15:41:26 +0100 Subject: [PATCH] SONAR-10347 Add search-by-webhook to webhook deliveries search ws. --- .../org/sonar/db/version/schema-h2.ddl | 1 + .../sonar/db/webhook/WebhookDeliveryDao.java | 7 +++ .../db/webhook/WebhookDeliveryLiteDto.java | 31 +++++++---- .../db/webhook/WebhookDeliveryMapper.java | 2 + .../db/webhook/WebhookDeliveryMapper.xml | 10 ++++ ...AddWebhookKeyToWebhookDeliveriesTable.java | 46 ++++++++++++++++ .../db/migration/version/v71/DbVersion71.java | 1 + ...ebhookKeyToWebhookDeliveriesTableTest.java | 55 +++++++++++++++++++ .../version/v71/DbVersion71Test.java | 2 +- .../webhook-deliveries.sql | 18 ++++++ .../sonar/server/webhook/WebHooksImpl.java | 2 +- .../org/sonar/server/webhook/Webhook.java | 8 ++- .../webhook/WebhookDeliveryStorage.java | 1 + .../webhook/ws/WebhookDeliveriesAction.java | 22 ++++++-- .../server/webhook/WebhookCallerImplTest.java | 18 +++--- .../webhook/WebhookDeliveryStorageTest.java | 3 +- .../org/sonar/server/webhook/WebhookTest.java | 10 ++-- .../ws/WebhookDeliveriesActionTest.java | 46 +++++++++++++++- 18 files changed, 250 insertions(+), 33 deletions(-) create mode 100644 server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTable.java create mode 100644 server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest.java create mode 100644 server/sonar-db-migration/src/test/resources/org/sonar/server/platform/db/migration/version/v71/AddWebhookKeyToWebhookDeliveriesTableTest/webhook-deliveries.sql diff --git a/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl b/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl index 3ab27f0b1ea..aad6a316acd 100644 --- a/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl +++ b/server/sonar-db-core/src/main/resources/org/sonar/db/version/schema-h2.ddl @@ -769,6 +769,7 @@ CREATE INDEX "PROJECT_WEBHOOK" ON "WEBHOOKS" ("PROJECT_UUID"); CREATE TABLE "WEBHOOK_DELIVERIES" ( "UUID" VARCHAR(40) NOT NULL PRIMARY KEY, + "WEBHOOK_UUID" VARCHAR(40), "COMPONENT_UUID" VARCHAR(40) NOT NULL, "ANALYSIS_UUID" VARCHAR(40), "CE_TASK_UUID" VARCHAR(40), diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryDao.java index a67cd0390ab..2060cad60f7 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryDao.java @@ -30,6 +30,13 @@ public class WebhookDeliveryDao implements Dao { return Optional.ofNullable(mapper(dbSession).selectByUuid(uuid)); } + /** + * All the deliveries for the specified webhook. Results are ordered by descending date. + */ + public List selectByWebhookUuid(DbSession dbSession, String webhookUuid) { + return mapper(dbSession).selectByWebhookUuid(webhookUuid); + } + /** * All the deliveries for the specified component. Results are ordered by descending date. */ diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryLiteDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryLiteDto.java index 3f80bcb1331..af130a3d4d9 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryLiteDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryLiteDto.java @@ -26,6 +26,8 @@ import org.apache.commons.lang.builder.ToStringBuilder; public class WebhookDeliveryLiteDto { /** Technical unique identifier, can't be null */ protected String uuid; + /** Technical unique identifier, can be null for migration */ + protected String webhookUuid; /** Component UUID, can't be null */ protected String componentUuid; /** Compute Engine task UUID, can be null */ @@ -50,7 +52,16 @@ public class WebhookDeliveryLiteDto { public T setUuid(String s) { this.uuid = s; - return (T)this; + return (T) this; + } + + public String getWebhookUuid() { + return webhookUuid; + } + + public T setWebhookUuid(String webhookUuid) { + this.webhookUuid = webhookUuid; + return (T) this; } public String getComponentUuid() { @@ -59,7 +70,7 @@ public class WebhookDeliveryLiteDto { public T setComponentUuid(String s) { this.componentUuid = s; - return (T)this; + return (T) this; } @CheckForNull @@ -69,7 +80,7 @@ public class WebhookDeliveryLiteDto { public T setCeTaskUuid(@Nullable String s) { this.ceTaskUuid = s; - return (T)this; + return (T) this; } @CheckForNull @@ -79,7 +90,7 @@ public class WebhookDeliveryLiteDto { public T setAnalysisUuid(@Nullable String s) { this.analysisUuid = s; - return (T)this; + return (T) this; } public String getName() { @@ -88,7 +99,7 @@ public class WebhookDeliveryLiteDto { public T setName(String s) { this.name = s; - return (T)this; + return (T) this; } public boolean isSuccess() { @@ -97,7 +108,7 @@ public class WebhookDeliveryLiteDto { public T setSuccess(boolean b) { this.success = b; - return (T)this; + return (T) this; } @CheckForNull @@ -107,7 +118,7 @@ public class WebhookDeliveryLiteDto { public T setHttpStatus(@Nullable Integer i) { this.httpStatus = i; - return (T)this; + return (T) this; } @CheckForNull @@ -117,7 +128,7 @@ public class WebhookDeliveryLiteDto { public T setDurationMs(@Nullable Integer i) { this.durationMs = i; - return (T)this; + return (T) this; } public String getUrl() { @@ -126,7 +137,7 @@ public class WebhookDeliveryLiteDto { public T setUrl(String s) { this.url = s; - return (T)this; + return (T) this; } public long getCreatedAt() { @@ -135,7 +146,7 @@ public class WebhookDeliveryLiteDto { public T setCreatedAt(long l) { this.createdAt = l; - return (T)this; + return (T) this; } @Override diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryMapper.java index 8fd5b42bef8..f14eb163d1e 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDeliveryMapper.java @@ -28,6 +28,8 @@ public interface WebhookDeliveryMapper { @CheckForNull WebhookDeliveryDto selectByUuid(@Param("uuid") String uuid); + List selectByWebhookUuid(@Param("webhookUuid") String webhookUuid); + List selectOrderedByComponentUuid(@Param("componentUuid") String componentUuid); List selectOrderedByCeTaskUuid(@Param("ceTaskUuid") String ceTaskUuid); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookDeliveryMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookDeliveryMapper.xml index c13ead5a155..0612c971293 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookDeliveryMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookDeliveryMapper.xml @@ -7,6 +7,7 @@ uuid, component_uuid as componentUuid, + webhook_uuid as webhookUuid, ce_task_uuid as ceTaskUuid, name, url, @@ -25,6 +26,13 @@ where uuid = #{uuid,jdbcType=VARCHAR} + +