import org.sonar.server.platform.ServerFileSystem;
/**
- * JAR files to be downloaded by sonar-runner.
+ * Scanner Engine JAR file(s) to be downloaded by sonar-scanner-api. There is currently only one JAR (see assembly.xml)
+ * but let's keep possibility to pass several files for possible future evolutions.
*/
@ServerSide
public class BatchIndex implements Startable {
@Override
public void start() {
StringBuilder sb = new StringBuilder();
- batchDir = new File(fs.getHomeDir(), "lib/batch");
+ batchDir = new File(fs.getHomeDir(), "lib/scanner");
if (batchDir.exists()) {
Collection<File> files = FileUtils.listFiles(batchDir, HiddenFileFilter.VISIBLE, FileFilterUtils.directoryFileFilter());
for (File file : files) {
controller.createAction("index")
.setInternal(true)
.setSince("4.4")
- .setDescription("List the JAR files to be downloaded by source analyzer")
+ .setDescription("List the JAR files to be downloaded by scanners")
.setHandler((request, response) -> {
try {
response.stream().setMediaType("text/plain");
NewAction action = controller.createAction("file")
.setInternal(true)
.setSince("4.4")
- .setDescription("Download a JAR file required by source analyzer")
+ .setDescription("Download a JAR file listed in the index (see batch/index)")
.setResponseExample(getClass().getResource("batch-file-example.txt"))
.setHandler((request, response) -> {
String filename = request.mandatoryParam("name");
*/
package org.sonar.server.platform.web;
-import static java.lang.String.format;
-
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import static java.lang.String.format;
+
public class RoutesFilter implements Filter {
private static final String EMPTY = "";
HttpServletResponse response = (HttpServletResponse) servletResponse;
String path = request.getRequestURI().replaceFirst(request.getContextPath(), EMPTY);
if (path.startsWith(BATCH_WS + "/") && path.endsWith(".jar")) {
- // Scanner is still using /batch/file.jar url
+ // Old scanners were using /batch/file.jar url (see SCANNERAPI-167)
response.sendRedirect(format("%s%s/file?name=%s", request.getContextPath(), BATCH_WS, path.replace(BATCH_WS + "/", EMPTY)));
} else if ("/batch_bootstrap/index".equals(path)) {
- // Scanner is still using /batch_bootstrap url
+ // Old scanners were using /batch_bootstrap url (see SCANNERAPI-167)
response.sendRedirect(format("%s%s/index", request.getContextPath(), BATCH_WS));
} else if (API_SOURCES_WS.equals(path)) {
// SONAR-7852 /api/sources?resource url is still used
<scope>provided</scope>
</dependencySet>
+ <!-- Scanner Engine that is returned by batch/index WS -->
<dependencySet>
- <outputDirectory>lib/batch</outputDirectory>
+ <outputDirectory>lib/scanner</outputDirectory>
<useTransitiveDependencies>false</useTransitiveDependencies>
<includes>
<include>org.sonarsource.sonarqube:sonar-scanner-engine-shaded</include>