package org.sonar.ce.task.projectanalysis.component;
import javax.annotation.Nullable;
-import org.sonar.scanner.protocol.output.ScannerReport;
@FunctionalInterface
public interface ComponentKeyGenerator {
import org.sonar.core.component.ComponentKeys;
import org.sonar.db.component.BranchDto;
import org.sonar.db.component.BranchType;
-import org.sonar.scanner.protocol.output.ScannerReport;
import static java.lang.String.format;
import static org.apache.commons.lang.StringUtils.isEmpty;
}
- private class EmptyTrackerBaseLazyInput extends BaseLazyInput {
+ private static class EmptyTrackerBaseLazyInput extends BaseLazyInput {
private EmptyTrackerBaseLazyInput(DbClient dbClient, Component component) {
super(dbClient, component, null);
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.api.i18n.I18n;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.resources.ResourceTypes;
import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Response;
import static org.sonar.server.ws.KeyExamples.KEY_BRANCH_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
import static org.sonar.server.ws.KeyExamples.KEY_PULL_REQUEST_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;
public void define(WebService.NewController context) {
WebService.NewAction action = context.createAction(ACTION_TREE)
.setDescription(format("Navigate through components based on the chosen strategy. The %s or the %s parameter must be provided.<br>" +
- "Requires the following permission: 'Browse' on the specified project.<br>" +
- "When limiting search with the %s parameter, directories are not returned.",
+ "Requires the following permission: 'Browse' on the specified project.<br>" +
+ "When limiting search with the %s parameter, directories are not returned.",
PARAM_COMPONENT_ID, PARAM_COMPONENT, Param.TEXT_QUERY))
.setSince("5.4")
.setResponseExample(getClass().getResource("tree-example.json"))
* <li>At least one non-digit</li>
* </ul>
*
- * @param keyCandidate
* @return <code>true</code> if <code>keyCandidate</code> can be used for a project
*/
public static boolean isValidProjectKey(String keyCandidate) {
* </li>
* </ul>
*
- * @param branchCandidate
* @return <code>true</code> if <code>branchCandidate</code> can be used for a project
*/
public static boolean isValidBranch(String branchCandidate) {
/**
* Return the project key with potential branch
- *
- * @param keyWithoutBranch
- * @param branch
- * @return
*/
public static String createKey(String keyWithoutBranch, @Nullable String branch) {
if (StringUtils.isNotBlank(branch)) {
*/
package org.sonar.scanner.scan;
+import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.io.FileUtils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
assertThat(moduleHierarchy.parent(root)).isNull();
assertThat(moduleHierarchy.root()).isEqualTo(root);
}
+
+ @Test
+ public void testRelativePathToRoot() throws IOException {
+ File rootBaseDir = temp.newFolder();
+ File mod1BaseDir = new File(rootBaseDir, "mod1");
+ File mod2BaseDir = new File(rootBaseDir, "mod2");
+ FileUtils.forceMkdir(mod1BaseDir);
+ FileUtils.forceMkdir(mod2BaseDir);
+ DefaultInputModule root = new DefaultInputModule(ProjectDefinition.create().setKey("root")
+ .setBaseDir(rootBaseDir).setWorkDir(rootBaseDir));
+ DefaultInputModule mod1 = new DefaultInputModule(ProjectDefinition.create().setKey("mod1")
+ .setBaseDir(mod1BaseDir).setWorkDir(temp.newFolder()));
+ DefaultInputModule mod2 = new DefaultInputModule(ProjectDefinition.create().setKey("mod2")
+ .setBaseDir(mod2BaseDir).setWorkDir(temp.newFolder()));
+ DefaultInputModule mod3 = new DefaultInputModule(ProjectDefinition.create().setKey("mod2")
+ .setBaseDir(temp.newFolder()).setWorkDir(temp.newFolder()));
+
+ Map<DefaultInputModule, DefaultInputModule> parents = new HashMap<>();
+
+ parents.put(mod1, root);
+ parents.put(mod2, mod1);
+ parents.put(mod3, mod1);
+
+ moduleHierarchy = new DefaultInputModuleHierarchy(root, parents);
+
+ assertThat(moduleHierarchy.relativePathToRoot(root)).isEqualTo("");
+ assertThat(moduleHierarchy.relativePathToRoot(mod1)).isEqualTo("mod1");
+ assertThat(moduleHierarchy.relativePathToRoot(mod2)).isEqualTo("mod2");
+ assertThat(moduleHierarchy.relativePathToRoot(mod3)).isNull();
+ }
}