From 1959ef682ef0eabe44c40940e304ba52e8a6b5f9 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Tue, 11 Jul 2017 09:31:06 +0200 Subject: [PATCH] Fix Quality flaws --- .../sonar/server/language/ws/ListAction.java | 22 ++++++++--------- .../qualityprofile/ws/ExportersAction.java | 20 +++++++++------- .../qualityprofile/ws/ImportersAction.java | 20 +++++++++------- .../server/rule/ws/RepositoriesAction.java | 20 +++++++++------- .../org/sonar/server/rule/ws/TagsAction.java | 9 +++---- .../sonar/server/source/ws/IndexAction.java | 16 +++++++------ .../sonar/server/source/ws/LinesAction.java | 8 ++++--- .../sonar/server/source/ws/ShowAction.java | 9 +++---- .../org/sonar/server/ui/ws/GlobalAction.java | 22 +++++++++-------- .../sonar/server/ui/ws/SettingsAction.java | 24 +++++++++---------- .../server/user/ws/DeactivateAction.java | 14 ++++++----- 11 files changed, 100 insertions(+), 84 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/language/ws/ListAction.java b/server/sonar-server/src/main/java/org/sonar/server/language/ws/ListAction.java index 0c25e1c3b16..17d900dbe2a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/language/ws/ListAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/language/ws/ListAction.java @@ -22,6 +22,11 @@ package org.sonar.server.language.ws; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.io.Resources; +import java.util.Collection; +import java.util.List; +import java.util.SortedMap; +import java.util.regex.Pattern; +import javax.annotation.Nullable; import org.sonar.api.resources.Language; import org.sonar.api.resources.Languages; import org.sonar.api.server.ws.Request; @@ -32,13 +37,6 @@ import org.sonar.api.server.ws.WebService.NewAction; import org.sonar.api.server.ws.WebService.Param; import org.sonar.api.utils.text.JsonWriter; -import javax.annotation.Nullable; - -import java.util.Collection; -import java.util.List; -import java.util.SortedMap; -import java.util.regex.Pattern; - /** * @since 5.1 */ @@ -56,11 +54,13 @@ public class ListAction implements RequestHandler { String query = request.param(Param.TEXT_QUERY); int pageSize = request.mandatoryParamAsInt("ps"); - JsonWriter json = response.newJsonWriter().beginObject().name("languages").beginArray(); - for (Language language : listMatchingLanguages(query, pageSize)) { - json.beginObject().prop("key", language.getKey()).prop("name", language.getName()).endObject(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject().name("languages").beginArray(); + for (Language language : listMatchingLanguages(query, pageSize)) { + json.beginObject().prop("key", language.getKey()).prop("name", language.getName()).endObject(); + } + json.endArray().endObject(); } - json.endArray().endObject().close(); } void define(WebService.NewController controller) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ExportersAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ExportersAction.java index f64b3b4aec3..5052931ab17 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ExportersAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ExportersAction.java @@ -51,18 +51,20 @@ public class ExportersAction implements QProfileWsAction { @Override public void handle(Request request, Response response) throws Exception { - JsonWriter json = response.newJsonWriter().beginObject().name("exporters").beginArray(); - for (ProfileExporter exporter : exporters) { - json.beginObject() - .prop("key", exporter.getKey()) - .prop("name", exporter.getName()); - json.name("languages").beginArray(); - for (String language : exporter.getSupportedLanguages()) { - json.value(language); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject().name("exporters").beginArray(); + for (ProfileExporter exporter : exporters) { + json.beginObject() + .prop("key", exporter.getKey()) + .prop("name", exporter.getName()); + json.name("languages").beginArray(); + for (String language : exporter.getSupportedLanguages()) { + json.value(language); + } + json.endArray().endObject(); } json.endArray().endObject(); } - json.endArray().endObject().close(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ImportersAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ImportersAction.java index 67ccefe79bf..1d820cfca8c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ImportersAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ImportersAction.java @@ -48,17 +48,19 @@ public class ImportersAction implements QProfileWsAction { @Override public void handle(Request request, Response response) throws Exception { - JsonWriter json = response.newJsonWriter().beginObject().name("importers").beginArray(); - for (ProfileImporter importer : importers) { - json.beginObject() - .prop("key", importer.getKey()) - .prop("name", importer.getName()) - .name("languages").beginArray(); - for (String languageKey : importer.getSupportedLanguages()) { - json.value(languageKey); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject().name("importers").beginArray(); + for (ProfileImporter importer : importers) { + json.beginObject() + .prop("key", importer.getKey()) + .prop("name", importer.getName()) + .name("languages").beginArray(); + for (String languageKey : importer.getSupportedLanguages()) { + json.value(languageKey); + } + json.endArray().endObject(); } json.endArray().endObject(); } - json.endArray().endObject().close(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RepositoriesAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RepositoriesAction.java index 1d3f0c7f319..f817e2271e2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RepositoriesAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/RepositoriesAction.java @@ -71,16 +71,18 @@ public class RepositoriesAction implements RulesWsAction { String query = request.param(Param.TEXT_QUERY); String languageKey = request.param(LANGUAGE); - JsonWriter json = response.newJsonWriter().beginObject().name("repositories").beginArray(); - for (RuleRepositoryDto repo : listMatchingRepositories(query, languageKey)) { - json - .beginObject() - .prop("key", repo.getKey()) - .prop("name", repo.getName()) - .prop(LANGUAGE, repo.getLanguage()) - .endObject(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject().name("repositories").beginArray(); + for (RuleRepositoryDto repo : listMatchingRepositories(query, languageKey)) { + json + .beginObject() + .prop("key", repo.getKey()) + .prop("name", repo.getName()) + .prop(LANGUAGE, repo.getLanguage()) + .endObject(); + } + json.endArray().endObject(); } - json.endArray().endObject().close(); } private Collection listMatchingRepositories(@Nullable String query, @Nullable String languageKey) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/TagsAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/TagsAction.java index 77315ccaba4..16f926667de 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/TagsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/TagsAction.java @@ -96,9 +96,10 @@ public class TagsAction implements RulesWsAction { } private static void writeResponse(Response response, List tags) { - JsonWriter json = response.newJsonWriter().beginObject(); - json.name("tags").beginArray(); - tags.forEach(json::value); - json.endArray().endObject().close(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject().name("tags").beginArray(); + tags.forEach(json::value); + json.endArray().endObject(); + } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/source/ws/IndexAction.java b/server/sonar-server/src/main/java/org/sonar/server/source/ws/IndexAction.java index 819a6da0a9c..a43d755a6b4 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/source/ws/IndexAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/source/ws/IndexAction.java @@ -81,15 +81,17 @@ public class IndexAction implements SourcesWsAction { ComponentDto component = componentFinder.getByKey(session, fileKey); userSession.checkComponentPermission(UserRole.CODEVIEWER, component); Optional> lines = sourceService.getLinesAsRawText(session, component.uuid(), from, to == null ? Integer.MAX_VALUE : (to - 1)); - JsonWriter json = response.newJsonWriter().beginArray().beginObject(); - if (lines.isPresent()) { - int lineCounter = from; - for (String line : lines.get()) { - json.prop(String.valueOf(lineCounter), line); - lineCounter++; + try (JsonWriter json = response.newJsonWriter()) { + json.beginArray().beginObject(); + if (lines.isPresent()) { + int lineCounter = from; + for (String line : lines.get()) { + json.prop(String.valueOf(lineCounter), line); + lineCounter++; + } } + json.endObject().endArray(); } - json.endObject().endArray().close(); } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/source/ws/LinesAction.java b/server/sonar-server/src/main/java/org/sonar/server/source/ws/LinesAction.java index 9165fb08854..600c53a917a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/source/ws/LinesAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/source/ws/LinesAction.java @@ -120,9 +120,11 @@ public class LinesAction implements SourcesWsAction { int to = MoreObjects.firstNonNull(request.paramAsInt(PARAM_TO), Integer.MAX_VALUE); Iterable lines = checkFoundWithOptional(sourceService.getLines(dbSession, file.uuid(), from, to), "No source found for file '%s'", file.key()); - JsonWriter json = response.newJsonWriter().beginObject(); - writeSource(lines, json); - json.endObject().close(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + writeSource(lines, json); + json.endObject(); + } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java b/server/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java index 2c4a226a4d3..ff425b8bb5d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/source/ws/ShowAction.java @@ -91,10 +91,11 @@ public class ShowAction implements SourcesWsAction { userSession.checkComponentPermission(UserRole.CODEVIEWER, file); Iterable linesHtml = checkFoundWithOptional(sourceService.getLinesAsHtml(dbSession, file.uuid(), from, to), "No source found for file '%s'", fileKey); - JsonWriter json = response.newJsonWriter().beginObject(); - writeSource(linesHtml, from, json); - json.endObject().close(); - + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + writeSource(linesHtml, from, json); + json.endObject(); + } } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java index 05c727707f0..cc3372f1bf5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/GlobalAction.java @@ -90,16 +90,18 @@ public class GlobalAction implements NavigationWsAction { @Override public void handle(Request request, Response response) throws Exception { - JsonWriter json = response.newJsonWriter().beginObject(); - writeActions(json); - writePages(json); - writeSettings(json); - writeDeprecatedLogoProperties(json); - writeQualifiers(json); - writeVersion(json); - writeDatabaseProduction(json); - writeOrganizationSupport(json); - json.endObject().close(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + writeActions(json); + writePages(json); + writeSettings(json); + writeDeprecatedLogoProperties(json); + writeQualifiers(json); + writeVersion(json); + writeDatabaseProduction(json); + writeOrganizationSupport(json); + json.endObject(); + } } private void writeActions(JsonWriter json) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/SettingsAction.java b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/SettingsAction.java index 923affa0c3b..a9465bbd0a9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ui/ws/SettingsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ui/ws/SettingsAction.java @@ -59,20 +59,20 @@ public class SettingsAction implements NavigationWsAction { public void handle(Request request, Response response) throws Exception { boolean isSysAdmin = userSession.isSystemAdministrator(); - JsonWriter json = response.newJsonWriter().beginObject(); - json.prop("showUpdateCenter", isSysAdmin && config.getBoolean(WebConstants.SONAR_UPDATECENTER_ACTIVATE).orElse(false)); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + json.prop("showUpdateCenter", isSysAdmin && config.getBoolean(WebConstants.SONAR_UPDATECENTER_ACTIVATE).orElse(false)); - json.name("extensions").beginArray(); - if (isSysAdmin) { - for (Page page : pageRepository.getGlobalPages(true)) { - json.beginObject() - .prop("key", page.getKey()) - .prop("name", page.getName()) - .endObject(); + json.name("extensions").beginArray(); + if (isSysAdmin) { + for (Page page : pageRepository.getGlobalPages(true)) { + json.beginObject() + .prop("key", page.getKey()) + .prop("name", page.getName()) + .endObject(); + } } + json.endArray().endObject(); } - json.endArray(); - - json.endObject().close(); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/ws/DeactivateAction.java b/server/sonar-server/src/main/java/org/sonar/server/user/ws/DeactivateAction.java index 94ec4c6926a..a3f702db63f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/ws/DeactivateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/ws/DeactivateAction.java @@ -115,12 +115,14 @@ public class DeactivateAction implements UsersWsAction { // when deactivating user checkFound(user, "User '%s' doesn't exist", login); - JsonWriter json = response.newJsonWriter().beginObject(); - json.name("user"); - Set groups = Sets.newHashSet(); - groups.addAll(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(login)).get(login)); - userWriter.write(json, user, groups, UserJsonWriter.FIELDS); - json.endObject().close(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + json.name("user"); + Set groups = Sets.newHashSet(); + groups.addAll(dbClient.groupMembershipDao().selectGroupsByLogins(dbSession, singletonList(login)).get(login)); + userWriter.write(json, user, groups, UserJsonWriter.FIELDS); + json.endObject(); + } } } -- 2.39.5