From d06d5feeb4447bef63a5bec9e4bdf378deb369e4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Fri, 13 Jan 2017 11:32:57 +0100 Subject: [PATCH] SONAR-8619 don't use ComponentDto.getOrganizationKey --- .../server/component/ComponentFinder.java | 7 ++++++ .../ws/ComponentDtoToWsComponent.java | 21 ---------------- .../sonar/server/component/ws/ShowAction.java | 8 +----- .../sonar/server/component/ws/TreeAction.java | 25 +++++++++++++++---- 4 files changed, 28 insertions(+), 33 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java b/server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java index 1f4efe50b40..8981355da8d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java @@ -27,6 +27,7 @@ import org.sonar.api.resources.ResourceTypes; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; +import org.sonar.db.organization.OrganizationDto; import org.sonar.server.exceptions.NotFoundException; import static com.google.common.base.Preconditions.checkArgument; @@ -117,6 +118,12 @@ public class ComponentFinder { format("Component '%s' (id: %s) must be a project or a module.", component.key(), component.uuid())); } + public OrganizationDto getOrganization(DbSession dbSession, ComponentDto component) { + String organizationUuid = component.getOrganizationUuid(); + return dbClient.organizationDao().selectByUuid(dbSession, organizationUuid) + .orElseThrow(() -> new NotFoundException(String.format("Organization with uuid '%s' not found", organizationUuid))); + } + public enum ParamNames { PROJECT_ID_AND_KEY("projectId", "projectKey"), UUID_AND_KEY("uuid", "key"), diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java index 46b3b3225dd..8a4731c0d3b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ComponentDtoToWsComponent.java @@ -20,7 +20,6 @@ package org.sonar.server.component.ws; -import java.util.Map; import java.util.Objects; import org.sonar.db.component.ComponentDto; import org.sonar.db.organization.OrganizationDto; @@ -35,14 +34,6 @@ class ComponentDtoToWsComponent { // prevent instantiation } - /** - * @deprecated use {@link #componentDtoToWsComponent(ComponentDto, OrganizationDto)} instead - */ - @Deprecated - static WsComponents.Component.Builder componentDtoToWsComponent(ComponentDto dto) { - return componentDtoToWsComponent(dto, dto.getOrganizationKey()); - } - static WsComponents.Component.Builder componentDtoToWsComponent(ComponentDto dto, OrganizationDto organizationDto) { checkArgument( Objects.equals(dto.getOrganizationUuid(), organizationDto.getUuid()), @@ -63,16 +54,4 @@ class ComponentDtoToWsComponent { setNullable(emptyToNull(dto.language()), wsComponent::setLanguage); return wsComponent; } - - static WsComponents.Component.Builder componentDtoToWsComponent(ComponentDto component, Map referenceComponentsByUuid) { - WsComponents.Component.Builder wsComponent = componentDtoToWsComponent(component); - - ComponentDto referenceComponent = referenceComponentsByUuid.get(component.getCopyResourceUuid()); - if (referenceComponent != null) { - wsComponent.setRefId(referenceComponent.uuid()); - wsComponent.setRefKey(referenceComponent.key()); - } - - return wsComponent; - } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ShowAction.java index 3a07a553174..4ab1d7c4b88 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/ShowAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/ShowAction.java @@ -31,7 +31,6 @@ import org.sonar.db.component.ComponentDto; import org.sonar.db.organization.OrganizationDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.ComponentFinder.ParamNames; -import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.user.UserSession; import org.sonarqube.ws.WsComponents.ShowWsResponse; import org.sonarqube.ws.client.component.ShowWsRequest; @@ -97,18 +96,13 @@ public class ShowAction implements ComponentsWsAction { try { ComponentDto component = getComponentByUuidOrKey(dbSession, request); List ancestors = dbClient.componentDao().selectAncestors(dbSession, component); - OrganizationDto organizationDto = getOrganization(dbSession, component.getOrganizationUuid()); + OrganizationDto organizationDto = componentFinder.getOrganization(dbSession, component); return buildResponse(component, organizationDto, ancestors); } finally { dbClient.closeSession(dbSession); } } - private OrganizationDto getOrganization(DbSession dbSession, String organizationUuid) { - return dbClient.organizationDao().selectByUuid(dbSession, organizationUuid) - .orElseThrow(() -> new NotFoundException(String.format("Organization with uuid '%s' not found", organizationUuid))); - } - private static ShowWsResponse buildResponse(ComponentDto component, OrganizationDto organizationDto, List orderedAncestors) { ShowWsResponse.Builder response = ShowWsResponse.newBuilder(); response.setComponent(componentDtoToWsComponent(component, organizationDto)); diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java b/server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java index cf14648c5e9..f852799f045 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/ws/TreeAction.java @@ -44,8 +44,10 @@ import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.ComponentTreeQuery; import org.sonar.db.component.ComponentTreeQuery.Strategy; +import org.sonar.db.organization.OrganizationDto; import org.sonar.server.component.ComponentFinder; import org.sonar.server.user.UserSession; +import org.sonarqube.ws.WsComponents; import org.sonarqube.ws.WsComponents.TreeWsResponse; import org.sonarqube.ws.client.component.TreeWsRequest; @@ -63,8 +65,8 @@ import static org.sonar.server.component.ComponentFinder.ParamNames.BASE_COMPONE import static org.sonar.server.component.ws.ComponentDtoToWsComponent.componentDtoToWsComponent; import static org.sonar.server.user.AbstractUserSession.insufficientPrivilegesException; import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001; -import static org.sonar.server.ws.WsParameterBuilder.createQualifiersParameter; import static org.sonar.server.ws.WsParameterBuilder.QualifierParameterContext.newQualifierParameterContext; +import static org.sonar.server.ws.WsParameterBuilder.createQualifiersParameter; import static org.sonar.server.ws.WsUtils.checkRequest; import static org.sonar.server.ws.WsUtils.writeProtobuf; import static org.sonarqube.ws.client.component.ComponentsWsParameters.ACTION_TREE; @@ -164,6 +166,7 @@ public class TreeAction implements ComponentsWsAction { try (DbSession dbSession = dbClient.openSession(false)) { ComponentDto baseComponent = componentFinder.getByUuidOrKey(dbSession, treeWsRequest.getBaseComponentId(), treeWsRequest.getBaseComponentKey(), BASE_COMPONENT_ID_AND_KEY); checkPermissions(baseComponent); + OrganizationDto organizationDto = componentFinder.getOrganization(dbSession, baseComponent); ComponentTreeQuery query = toComponentTreeQuery(treeWsRequest, baseComponent); List components = dbClient.componentDao().selectDescendants(dbSession, query); @@ -173,7 +176,7 @@ public class TreeAction implements ComponentsWsAction { Map referenceComponentsByUuid = searchReferenceComponentsByUuid(dbSession, components); - return buildResponse(baseComponent, components, referenceComponentsByUuid, + return buildResponse(baseComponent, organizationDto, components, referenceComponentsByUuid, Paging.forPageIndex(treeWsRequest.getPage()).withPageSize(treeWsRequest.getPageSize()).andTotal(total)); } } @@ -200,7 +203,7 @@ public class TreeAction implements ComponentsWsAction { } } - private static TreeWsResponse buildResponse(ComponentDto baseComponent, List components, Map referenceComponentsByUuid, Paging paging) { + private static TreeWsResponse buildResponse(ComponentDto baseComponent, OrganizationDto organizationDto, List components, Map referenceComponentsByUuid, Paging paging) { TreeWsResponse.Builder response = TreeWsResponse.newBuilder(); response.getPagingBuilder() .setPageIndex(paging.pageIndex()) @@ -208,14 +211,26 @@ public class TreeAction implements ComponentsWsAction { .setTotal(paging.total()) .build(); - response.setBaseComponent(componentDtoToWsComponent(baseComponent, referenceComponentsByUuid)); + response.setBaseComponent(toWsComponent(baseComponent, organizationDto, referenceComponentsByUuid)); for (ComponentDto dto : components) { - response.addComponents(componentDtoToWsComponent(dto, referenceComponentsByUuid)); + response.addComponents(toWsComponent(dto, organizationDto, referenceComponentsByUuid)); } return response.build(); } + private static WsComponents.Component.Builder toWsComponent(ComponentDto component, OrganizationDto organizationDto, Map referenceComponentsByUuid) { + WsComponents.Component.Builder wsComponent = componentDtoToWsComponent(component, organizationDto); + + ComponentDto referenceComponent = referenceComponentsByUuid.get(component.getCopyResourceUuid()); + if (referenceComponent != null) { + wsComponent.setRefId(referenceComponent.uuid()); + wsComponent.setRefKey(referenceComponent.key()); + } + + return wsComponent; + } + private ComponentTreeQuery toComponentTreeQuery(TreeWsRequest request, ComponentDto baseComponent) { List childrenQualifiers = childrenQualifiers(request, baseComponent.qualifier()); -- 2.39.5