summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2019-04-03 15:18:44 +0200
committerSonarTech <sonartech@sonarsource.com>2019-04-03 20:21:06 +0200
commitaf1424c2022ccdcae3e54df1698d9bf59855bc08 (patch)
treea04a97af1ee22366168707a4b09c52d747b363ea
parent91f37bb55b79523a00ab02f5b180c9a3b12a5b9a (diff)
downloadsonarqube-af1424c2022ccdcae3e54df1698d9bf59855bc08.tar.gz
sonarqube-af1424c2022ccdcae3e54df1698d9bf59855bc08.zip
Revert "SONAR-11883 Remove redirection that was kept for old scanners"
This reverts commit 91e2ea646539462d22d5064adf47af8b3fbd5705.
-rw-r--r--server/sonar-docs/src/pages/setup/upgrade-notes.md7
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/platform/web/RedirectFilter.java59
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/platform/web/RedirectFilterTest.java25
3 files changed, 79 insertions, 12 deletions
diff --git a/server/sonar-docs/src/pages/setup/upgrade-notes.md b/server/sonar-docs/src/pages/setup/upgrade-notes.md
index 92f75ff514f..1f3e1c62ad4 100644
--- a/server/sonar-docs/src/pages/setup/upgrade-notes.md
+++ b/server/sonar-docs/src/pages/setup/upgrade-notes.md
@@ -3,13 +3,6 @@ title: Release Upgrade Notes
url: /setup/upgrade-notes/
---
-## Release 7.8 Upgrade Notes
-**Scanner version compatibility**
-Only the following scanner versions are compatible with SonarQube 7.8:
-* SonarQube Scanner CLI 2.9+
-* SonarQube Scanner Maven 3.3.0.603+
-* SonarQube Scanner Gradle 2.3+
-
## Release 7.7 Upgrade Notes
**Deprecated parameters dropped**
`sonar.language`, and `sonar.profile`, both deprecated since 4.5, are dropped in this version as is `sonar.analysis.mode`, which as been deprecated since 6.6. These now-unrecognized parameters will simply be ignored, rather than failing analysis.
diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/web/RedirectFilter.java b/server/sonar-server/src/main/java/org/sonar/server/platform/web/RedirectFilter.java
index 64a17466641..1567b242a89 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/platform/web/RedirectFilter.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/platform/web/RedirectFilter.java
@@ -41,7 +41,10 @@ public class RedirectFilter implements Filter {
private static final String EMPTY = "";
private static final List<Redirect> REDIRECTS = ImmutableList.of(
- newSimpleRedirect("/api", "/api/webservices/list"));
+ newSimpleRedirect("/api", "/api/webservices/list"),
+ new BatchRedirect(),
+ new BatchBootstrapRedirect(),
+ new ProfilesExportRedirect());
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
@@ -97,6 +100,60 @@ public class RedirectFilter implements Filter {
String apply(HttpServletRequest request);
}
+ /**
+ * Old scanners were using /batch/file.jar url (see SCANNERAPI-167)
+ */
+ private static class BatchRedirect implements Redirect {
+
+ private static final String BATCH_WS = "/batch";
+
+ @Override
+ public boolean test(String path) {
+ return path.startsWith(BATCH_WS + "/") && path.endsWith(".jar");
+ }
+
+ @Override
+ public String apply(HttpServletRequest request) {
+ String path = extractPath(request);
+ return format("%s%s/file?name=%s", request.getContextPath(), BATCH_WS, path.replace(BATCH_WS + "/", EMPTY));
+ }
+ }
+
+ /**
+ * Old scanners were using /batch_bootstrap url (see SCANNERAPI-167)
+ */
+ private static class BatchBootstrapRedirect implements Redirect {
+
+ @Override
+ public boolean test(String path) {
+ return "/batch_bootstrap/index".equals(path);
+ }
+
+ @Override
+ public String apply(HttpServletRequest request) {
+ return format("%s%s/index", request.getContextPath(), "/batch");
+ }
+ }
+
+ /**
+ * Old scanners were using /profiles/export url (see SVS-130)
+ */
+ private static class ProfilesExportRedirect implements Redirect {
+
+ private static final String PROFILES_EXPORT = "/profiles/export";
+ private static final String API_QUALITY_PROFILE_EXPORT = "/api/qualityprofiles/export";
+
+ @Override
+ public boolean test(String path) {
+ return PROFILES_EXPORT.equals(path);
+ }
+
+ @Override
+ public String apply(HttpServletRequest request) {
+ return format("%s%s?%s", request.getContextPath(), API_QUALITY_PROFILE_EXPORT, request.getQueryString());
+ }
+ }
+
private static String extractPath(HttpServletRequest request) {
return sanitizePath(request.getRequestURI().replaceFirst(request.getContextPath(), EMPTY));
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/web/RedirectFilterTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/web/RedirectFilterTest.java
index 255e97509cc..4396df7dad3 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/platform/web/RedirectFilterTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/platform/web/RedirectFilterTest.java
@@ -37,11 +37,11 @@ import static org.mockito.Mockito.when;
public class RedirectFilterTest {
- private HttpServletRequest request = mock(HttpServletRequest.class);
- private HttpServletResponse response = mock(HttpServletResponse.class);
- private FilterChain chain = mock(FilterChain.class);
+ HttpServletRequest request = mock(HttpServletRequest.class);
+ HttpServletResponse response = mock(HttpServletResponse.class);
+ FilterChain chain = mock(FilterChain.class);
- private RedirectFilter underTest = new RedirectFilter();
+ RedirectFilter underTest = new RedirectFilter();
@Before
public void setUp() throws Exception {
@@ -55,6 +55,23 @@ public class RedirectFilterTest {
}
@Test
+ public void send_redirect_when_url_contains_batch_with_jar() throws Exception {
+ verifyRedirection("/batch/file.jar", null, "/sonarqube/batch/file?name=file.jar");
+ }
+
+ @Test
+ public void send_redirect_when_url_contains_batch_bootstrap() throws Exception {
+ verifyRedirection("/batch_bootstrap/index", null, "/sonarqube/batch/index");
+ verifyRedirection("/batch_bootstrap/index/", null, "/sonarqube/batch/index");
+ }
+
+ @Test
+ public void send_redirect_when_url_contains_profiles_export() throws Exception {
+ verifyRedirection("/profiles/export", "format=pmd", "/sonarqube/api/qualityprofiles/export?format=pmd");
+ verifyRedirection("/profiles/export/", "format=pmd", "/sonarqube/api/qualityprofiles/export?format=pmd");
+ }
+
+ @Test
public void does_not_redirect_and_execute_remaining_filter_on_unknown_path() throws Exception {
verifyNoRedirection("/api/issues/search", null);
}