From 9e98304de270523aa111e85639b15cd905587cbf Mon Sep 17 00:00:00 2001 From: Guillaume Jambet Date: Thu, 8 Feb 2018 16:18:05 +0100 Subject: [PATCH] SONAR-10345 Update Webhooks search ws to use new WEBHOOKS table. --- .../org/sonar/db/version/schema-h2.ddl | 2 +- .../java/org/sonar/db/webhook/WebhookDao.java | 16 +- .../java/org/sonar/db/webhook/WebhookDto.java | 25 ++- .../org/sonar/db/webhook/WebhookMapper.xml | 8 +- .../org/sonar/db/webhook/WebhookDaoTest.java | 12 +- .../org/sonar/db/webhook/WebhookDbTester.java | 13 +- .../org/sonar/db/webhook/WebhookTesting.java | 10 +- .../version/v71/CreateWebhooksTable.java | 11 +- .../sonar/server/webhook/WebHooksImpl.java | 86 ++++----- .../sonar/server/webhook/ws/CreateAction.java | 32 ++-- .../sonar/server/webhook/ws/DeleteAction.java | 9 +- .../ws/{SearchAction.java => ListAction.java} | 83 +++++---- .../sonar/server/webhook/ws/UpdateAction.java | 9 +- .../server/webhook/ws/WebhookSupport.java | 18 +- .../server/webhook/ws/WebhooksWsModule.java | 2 +- .../webhook/ws/WebhooksWsParameters.java | 6 +- .../java/org/sonar/server/ws/KeyExamples.java | 2 +- .../webhook/ws/example-webhook-create.json | 2 +- .../webhook/AsynchronousWebHooksImplTest.java | 43 +++-- .../webhook/SynchronousWebHooksImplTest.java | 139 ++++++--------- .../server/webhook/ws/CreateActionTest.java | 4 +- .../server/webhook/ws/DeleteActionTest.java | 12 +- ...rchActionTest.java => ListActionTest.java} | 168 +++++++++++------- .../server/webhook/ws/UpdateActionTest.java | 16 +- 24 files changed, 375 insertions(+), 353 deletions(-) rename server/sonar-db-dao/src/{main => test}/java/org/sonar/db/webhook/WebhookTesting.java (81%) rename server/sonar-server/src/main/java/org/sonar/server/webhook/ws/{SearchAction.java => ListAction.java} (50%) rename server/sonar-server/src/test/java/org/sonar/server/webhook/ws/{SearchActionTest.java => ListActionTest.java} (53%) 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 e965838d048..3ab27f0b1ea 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 @@ -760,7 +760,7 @@ CREATE TABLE "WEBHOOKS" ( "ORGANIZATION_UUID" VARCHAR(40), "PROJECT_UUID" VARCHAR(40), "CREATED_AT" BIGINT NOT NULL, - "UPDATED_AT" BIGINT + "UPDATED_AT" BIGINT NOT NULL ); CREATE UNIQUE INDEX "PK_WEBHOOKS" ON "WEBHOOKS" ("UUID"); CREATE INDEX "ORGANIZATION_WEBHOOK" ON "WEBHOOKS" ("ORGANIZATION_UUID"); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDao.java index 0711adecf5c..8dafc979390 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDao.java @@ -24,6 +24,8 @@ import java.util.Optional; import org.sonar.api.utils.System2; import org.sonar.db.Dao; import org.sonar.db.DbSession; +import org.sonar.db.component.ComponentDto; +import org.sonar.db.organization.OrganizationDto; import static com.google.common.base.Preconditions.checkState; @@ -39,24 +41,20 @@ public class WebhookDao implements Dao { return Optional.ofNullable(mapper(dbSession).selectByUuid(uuid)); } - public List selectByOrganizationUuid(DbSession dbSession, String organizationUuid) { - return mapper(dbSession).selectForOrganizationUuidOrderedByName(organizationUuid); + public List selectByOrganizationUuid(DbSession dbSession, OrganizationDto organizationDto) { + return mapper(dbSession).selectForOrganizationUuidOrderedByName(organizationDto.getUuid()); } - public List selectByProjectUuid(DbSession dbSession, String projectUuid) { - return mapper(dbSession).selectForProjectUuidOrderedByName(projectUuid); + public List selectByProjectUuid(DbSession dbSession, ComponentDto componentDto) { + return mapper(dbSession).selectForProjectUuidOrderedByName(componentDto.uuid()); } public void insert(DbSession dbSession, WebhookDto dto) { - checkState(dto.getOrganizationUuid() != null || dto.getProjectUuid() != null, "A webhook can not be created if not linked to an organization or a project."); - checkState(dto.getOrganizationUuid() == null || dto.getProjectUuid() == null, "A webhook can not be linked to both an organization and a project."); - - mapper(dbSession).insert(dto.setCreatedAt(system2.now())); - + mapper(dbSession).insert(dto.setCreatedAt(system2.now()).setUpdatedAt(system2.now())); } public void update(DbSession dbSession, WebhookDto dto) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDto.java index d03e9f08166..5c783098bdd 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/webhook/WebhookDto.java @@ -24,23 +24,20 @@ import javax.annotation.Nullable; public class WebhookDto { /** Technical unique identifier, can't be null */ - protected String uuid; + private String uuid; /** Name, can't be null */ - protected String name; + private String name; /** URL, can't be null */ - protected String url; + private String url; @Nullable - protected String organizationUuid; + private String organizationUuid; @Nullable - protected String projectUuid; + private String projectUuid; - /** createdAt, can't be null */ - protected Long createdAt; - /** URL, can be null */ - @Nullable - protected Long updatedAt; + private long createdAt; + private long updatedAt; public WebhookDto setUuid(String uuid) { this.uuid = uuid; @@ -67,12 +64,12 @@ public class WebhookDto { return this; } - WebhookDto setCreatedAt(Long createdAt) { + WebhookDto setCreatedAt(long createdAt) { this.createdAt = createdAt; return this; } - WebhookDto setUpdatedAt(@Nullable Long updatedAt) { + WebhookDto setUpdatedAt(long updatedAt) { this.updatedAt = updatedAt; return this; } @@ -99,12 +96,12 @@ public class WebhookDto { return projectUuid; } - public Long getCreatedAt() { + public long getCreatedAt() { return createdAt; } @Nullable - public Long getUpdatedAt() { + public long getUpdatedAt() { return updatedAt; } } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookMapper.xml index 33171e72276..bdba2cdec54 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/webhook/WebhookMapper.xml @@ -4,7 +4,7 @@ - + uuid, name, url, @@ -16,20 +16,20 @@