import com.google.common.base.Throwables;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.ArrayUtils;
import org.sonar.api.server.ServerSide;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.TempFolder;
ComputationContext context = new ComputationContext(reader, project);
context.setProjectSettings(projectSettingsFactory.newProjectSettings(project.getId()));
for (ComputationStep step : steps.orderedSteps()) {
- if (ArrayUtils.contains(step.supportedProjectQualifiers(), context.getProject().qualifier())) {
- Profiler stepProfiler = Profiler.createIfDebug(LOG).startDebug(step.getDescription());
- step.execute(context);
- stepProfiler.stopDebug();
- }
+ Profiler stepProfiler = Profiler.createIfDebug(LOG).startDebug(step.getDescription());
+ step.execute(context);
+ stepProfiler.stopDebug();
}
item.dto.setStatus(SUCCESS);
} catch (Throwable e) {
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
this.indexer = indexer;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
indexer.index();
*/
public interface ComputationStep {
- /**
- * Allows to distinguish standard projects from view projects
- */
- String[] supportedProjectQualifiers();
-
void execute(ComputationContext context);
String getDescription();
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.core.resource.ResourceIndexerDao;
import org.sonar.server.computation.ComputationContext;
this.resourceIndexerDao = resourceIndexerDao;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
resourceIndexerDao.indexProject(context.getProject().getId());
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexer;
this.indexer = indexer;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
authorizationIndexer.index();
*/
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.source.index.SourceLineIndexer;
this.indexer = indexer;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
indexer.index(context.getProject().uuid());
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.test.index.TestIndexer;
this.indexer = indexer;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
indexer.index(context.getProject().uuid());
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.view.index.ViewIndexer;
this.indexer = indexer;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
indexer.index(context.getProject().uuid());
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReportReader;
import org.sonar.server.computation.ComputationContext;
this.issueComputation = issueComputation;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
int rootComponentRef = context.getReportMetadata().getRootComponentRef();
import org.apache.commons.lang.StringEscapeUtils;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReport.Range;
this.dbClient = dbClient;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(true);
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
this.system2 = system2;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(false);
import org.apache.commons.io.LineIterator;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
this.system2 = system2;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
int rootComponentRef = context.getReportMetadata().getRootComponentRef();
import org.sonar.api.issue.internal.DefaultIssue;
import org.sonar.api.issue.internal.DefaultIssueComment;
import org.sonar.api.issue.internal.FieldDiffs;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
-import org.sonar.core.issue.db.*;
+import org.sonar.core.issue.db.IssueChangeDto;
+import org.sonar.core.issue.db.IssueChangeMapper;
+import org.sonar.core.issue.db.IssueDto;
+import org.sonar.core.issue.db.IssueMapper;
+import org.sonar.core.issue.db.UpdateConflictResolver;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.persistence.MyBatis;
import org.sonar.server.computation.ComputationContext;
this.issueCache = issueCache;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(true);
import com.google.common.annotations.VisibleForTesting;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.rule.RuleKey;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReportReader;
this.metricCache = metricCache;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public String getDescription() {
return "Persist measures";
package org.sonar.server.computation.step;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReportReader;
this.system = system;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public String getDescription() {
return "Compute and persist the number of days since last commit";
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import org.sonar.api.i18n.I18n;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReportReader;
this.i18n = i18n;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(false);
import com.google.common.collect.Table;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.Uuids;
import org.sonar.api.utils.log.Logger;
this.system = system;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext computationContext) {
DbSession session = dbClient.openSession(true);
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.core.computation.dbcleaner.ProjectCleaner;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.persistence.MyBatis;
this.dbClient = dbClient;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(true);
import com.google.common.collect.ImmutableSet;
import org.sonar.api.issue.internal.DefaultIssue;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.core.component.ComponentDto;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.computation.issue.IssueCache;
import org.sonar.server.computation.issue.RuleCache;
-import org.sonar.server.issue.notification.*;
+import org.sonar.server.issue.notification.IssueChangeNotification;
+import org.sonar.server.issue.notification.MyNewIssuesNotification;
+import org.sonar.server.issue.notification.NewIssuesNotification;
+import org.sonar.server.issue.notification.NewIssuesNotificationFactory;
+import org.sonar.server.issue.notification.NewIssuesStatistics;
import org.sonar.server.notifications.NotificationService;
import org.sonar.server.util.CloseableIterator;
this.newIssuesNotificationFactory = newIssuesNotificationFactory;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT};
- }
-
@Override
public void execute(ComputationContext context) {
if (service.hasProjectSubscribersForTypes(context.getProject().uuid(), NOTIF_TYPES)) {
package org.sonar.server.computation.step;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.core.component.SnapshotDto;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.persistence.MyBatis;
this.dbClient = dbClient;
}
- @Override
- public String[] supportedProjectQualifiers() {
- return new String[] {Qualifiers.PROJECT, Qualifiers.VIEW};
- }
-
@Override
public void execute(ComputationContext context) {
DbSession session = dbClient.openSession(true);
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mockito;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.ZipUtils;
import org.sonar.api.utils.internal.JUnitTempFolder;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public JUnitTempFolder tempFolder = new JUnitTempFolder();
@Rule
public LogTester logTester = new LogTester();
- ComputationStep projectStep1 = mockStep(Qualifiers.PROJECT);
- ComputationStep projectStep2 = mockStep(Qualifiers.PROJECT);
- ComputationStep viewStep = mockStep(Qualifiers.VIEW);
+ ComputationStep projectStep1 = mockStep();
+ ComputationStep projectStep2 = mockStep();
ComputationSteps steps = mock(ComputationSteps.class);
ActivityService activityService = mock(ActivityService.class);
System2 system = mock(System2.class);
logTester.setLevel(LoggerLevel.INFO);
// view step is not supposed to be executed
- when(steps.orderedSteps()).thenReturn(Arrays.asList(projectStep1, projectStep2, viewStep));
+ when(steps.orderedSteps()).thenReturn(Arrays.asList(projectStep1, projectStep2));
AnalysisReportDto dto = newDefaultReport();
File zip = generateZip();
// execute only the steps supporting the project qualifier
verify(projectStep1).execute(any(ComputationContext.class));
verify(projectStep2).execute(any(ComputationContext.class));
- verify(viewStep, never()).execute(any(ComputationContext.class));
verify(activityService).save(any(Activity.class));
}
assertThat(logTester.logs()).contains(String.format("The snapshot ID #%s provided by the report #%s does not exist anymore.", ANY_SNAPSHOT_ID, report.getId()));
}
- private ComputationStep mockStep(String... qualifiers) {
+ private ComputationStep mockStep() {
ComputationStep step = mock(ComputationStep.class);
- when(step.supportedProjectQualifiers()).thenReturn(qualifiers);
when(step.getDescription()).thenReturn(RandomStringUtils.randomAscii(5));
return step;
}
public void test_metadata() {
assertThat(step().toString()).isNotEmpty();
assertThat(step().getDescription()).isNotEmpty();
- assertThat(step().supportedProjectQualifiers().length).isGreaterThan(0);
}
}
*/
package org.sonar.server.computation.step;
-import org.sonar.server.source.db.FileSourceDao;
-
import org.elasticsearch.search.SearchHit;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.sonar.api.config.Settings;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.batch.protocol.output.BatchReportReader;
import org.sonar.core.persistence.DbTester;
import org.sonar.server.component.ComponentTesting;
import org.sonar.server.computation.ComputationContext;
import org.sonar.server.db.DbClient;
import org.sonar.server.es.EsTester;
+import org.sonar.server.source.db.FileSourceDao;
import org.sonar.server.source.db.FileSourceTesting;
import org.sonar.server.source.index.SourceLineDoc;
import org.sonar.server.source.index.SourceLineIndexDefinition;
return new IndexSourceLinesStep(sourceLineIndexer);
}
- @Test
- public void supported_project_qualifiers() {
- assertThat(step().supportedProjectQualifiers()).containsOnly(Qualifiers.PROJECT);
- }
-
@Test
public void index_source() throws Exception {
dbTester.prepareDbUnit(getClass(), "index_source.xml");
import org.junit.ClassRule;
import org.junit.Test;
import org.sonar.api.config.Settings;
-import org.sonar.api.resources.Qualifiers;
import org.sonar.batch.protocol.output.BatchReportReader;
import org.sonar.core.persistence.DbTester;
import org.sonar.server.component.ComponentTesting;
return new IndexTestsStep(testIndexer);
}
- @Test
- public void supported_project_qualifiers() {
- assertThat(step().supportedProjectQualifiers()).containsOnly(Qualifiers.PROJECT);
- }
-
@Test
public void index_test() throws Exception {
dbTester.prepareDbUnit(getClass(), "index_source.xml");
package org.sonar.server.computation.step;
-import org.junit.*;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.utils.System2;
import java.io.File;
-import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
session.close();
}
- @Test
- public void execute_only_on_projects() {
- assertThat(step.supportedProjectQualifiers()).containsOnly("TRK");
- }
-
@Test
public void nothing_to_do_when_no_events_in_report() throws Exception {
dbTester.prepareDbUnit(getClass(), "nothing_to_do_when_no_events_in_report.xml");
session.close();
}
- @Test
- public void execute_only_on_projects() {
- assertThat(step.supportedProjectQualifiers()).containsOnly("TRK");
- }
-
@Test
public void add_links_on_project_and_module() throws Exception {
dbTester.prepareDbUnit(getClass(), "empty.xml");