From 7a9b72c6a4eb7134e03cb81f0e6176efd90b0bdd Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 14 Aug 2019 15:31:09 +0200 Subject: [PATCH] fix some (old) quality flaws --- .../sonar/server/metric/ws/SearchAction.java | 14 +++++++------- .../platform/web/MasterServletFilter.java | 14 +++++++++++++- .../platform/web/RegisterServletFilters.java | 5 +++-- .../platform/web/MasterServletFilterTest.java | 2 +- .../web/RegisterServletFiltersTest.java | 17 ++++++++--------- 5 files changed, 32 insertions(+), 20 deletions(-) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/metric/ws/SearchAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/metric/ws/SearchAction.java index 4d92df0791a..6d6dad98411 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/metric/ws/SearchAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/metric/ws/SearchAction.java @@ -89,13 +89,13 @@ public class SearchAction implements MetricsWsAction { try (DbSession dbSession = dbClient.openSession(false)) { List metrics = dbClient.metricDao().selectEnabled(dbSession, isCustom, searchOptions.getOffset(), searchOptions.getLimit()); int nbMetrics = dbClient.metricDao().countEnabled(dbSession, isCustom); - JsonWriter json = response.newJsonWriter(); - json.beginObject(); - Set desiredFields = desiredFields(request.paramAsStrings(Param.FIELDS)); - writeMetrics(json, metrics, desiredFields); - searchOptions.writeJson(json, nbMetrics); - json.endObject(); - json.close(); + try (JsonWriter json = response.newJsonWriter()) { + json.beginObject(); + Set desiredFields = desiredFields(request.paramAsStrings(Param.FIELDS)); + writeMetrics(json, metrics, desiredFields); + searchOptions.writeJson(json, nbMetrics); + json.endObject(); + } } } diff --git a/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/MasterServletFilter.java b/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/MasterServletFilter.java index dd87d91b01e..ce6a83cb407 100644 --- a/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/MasterServletFilter.java +++ b/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/MasterServletFilter.java @@ -25,6 +25,8 @@ import com.google.common.collect.Lists; import java.io.IOException; import java.util.Iterator; import java.util.List; +import javax.annotation.CheckForNull; +import javax.annotation.Nullable; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -41,7 +43,7 @@ import org.sonar.server.platform.PlatformImpl; */ public class MasterServletFilter implements Filter { - public static volatile MasterServletFilter INSTANCE; + private static volatile MasterServletFilter INSTANCE; private ServletFilter[] filters; private FilterConfig config; @@ -59,6 +61,16 @@ public class MasterServletFilter implements Filter { init(config, PlatformImpl.getInstance().getContainer().getComponentsByType(ServletFilter.class)); } + @CheckForNull + public static MasterServletFilter getInstance() { + return INSTANCE; + } + + @VisibleForTesting + static void setInstance(@Nullable MasterServletFilter instance) { + INSTANCE = instance; + } + void init(FilterConfig config, List filters) { this.config = config; initFilters(filters); diff --git a/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/RegisterServletFilters.java b/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/RegisterServletFilters.java index 88b1692362e..56c56c9dec9 100644 --- a/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/RegisterServletFilters.java +++ b/server/sonar-webserver/src/main/java/org/sonar/server/platform/web/RegisterServletFilters.java @@ -39,11 +39,12 @@ public class RegisterServletFilters implements Startable { @Override public void start() { - if (MasterServletFilter.INSTANCE != null) { + MasterServletFilter masterServletFilter = MasterServletFilter.getInstance(); + if (masterServletFilter != null) { // Probably a database upgrade. MasterSlaveFilter was instantiated by the servlet container // while picocontainer was not completely up. // See https://jira.sonarsource.com/browse/SONAR-3612 - MasterServletFilter.INSTANCE.initFilters(Arrays.asList(filters)); + masterServletFilter.initFilters(Arrays.asList(filters)); } } diff --git a/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/MasterServletFilterTest.java b/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/MasterServletFilterTest.java index 3999670c143..e1b83207b63 100644 --- a/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/MasterServletFilterTest.java +++ b/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/MasterServletFilterTest.java @@ -56,7 +56,7 @@ public class MasterServletFilterTest { @Before public void resetSingleton() { - MasterServletFilter.INSTANCE = null; + MasterServletFilter.setInstance(null); } @Test diff --git a/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/RegisterServletFiltersTest.java b/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/RegisterServletFiltersTest.java index 817241ad87a..bcd1af2f1e5 100644 --- a/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/RegisterServletFiltersTest.java +++ b/server/sonar-webserver/src/test/java/org/sonar/server/platform/web/RegisterServletFiltersTest.java @@ -19,7 +19,6 @@ */ package org.sonar.server.platform.web; -import javax.servlet.ServletException; import org.junit.Test; import org.sonar.api.web.ServletFilter; @@ -29,24 +28,24 @@ import static org.mockito.Mockito.verify; public class RegisterServletFiltersTest { @Test - public void should_not_fail_if_master_filter_is_not_up() throws ServletException { - MasterServletFilter.INSTANCE = null; + public void should_not_fail_if_master_filter_is_not_up() { + MasterServletFilter.setInstance(null); new RegisterServletFilters(new ServletFilter[2]).start(); } @Test - public void should_register_filters_if_master_filter_is_up() throws ServletException { - MasterServletFilter.INSTANCE = mock(MasterServletFilter.class); + public void should_register_filters_if_master_filter_is_up() { + MasterServletFilter.setInstance(mock(MasterServletFilter.class)); new RegisterServletFilters(new ServletFilter[2]).start(); - verify(MasterServletFilter.INSTANCE).initFilters(anyList()); + verify(MasterServletFilter.getInstance()).initFilters(anyList()); } @Test - public void filters_should_be_optional() throws ServletException { - MasterServletFilter.INSTANCE = mock(MasterServletFilter.class); + public void filters_should_be_optional() { + MasterServletFilter.setInstance(mock(MasterServletFilter.class)); new RegisterServletFilters().start(); // do not fail - verify(MasterServletFilter.INSTANCE).initFilters(anyList()); + verify(MasterServletFilter.getInstance()).initFilters(anyList()); } } -- 2.39.5