Browse Source

Replace AnalysisMetadataHolder analysis date object by long

tags/5.3-RC1
Julien Lancelot 8 years ago
parent
commit
ba1f70722e
18 changed files with 33 additions and 53 deletions
  1. 1
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java
  2. 4
    7
      server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java
  3. 1
    3
      server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java
  4. 2
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java
  5. 2
    3
      server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadPeriodsStep.java
  6. 1
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java
  7. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistEventsStep.java
  8. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistSnapshotsStep.java
  9. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/step/SendIssueNotificationsStep.java
  10. 1
    1
      server/sonar-server/src/main/java/org/sonar/server/computation/step/ValidateProjectStep.java
  11. 2
    17
      server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java
  12. 8
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderRule.java
  13. 2
    3
      server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java
  14. 1
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/step/BuildComponentTreeStepTest.java
  15. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadPeriodsStepTest.java
  16. 1
    1
      server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java
  17. 1
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/step/ReportPersistSnapshotsStepTest.java
  18. 1
    2
      server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsPersistSnapshotsStepTest.java

+ 1
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java View File

@@ -19,7 +19,6 @@
*/
package org.sonar.server.computation.analysis;

import java.util.Date;
import javax.annotation.CheckForNull;
import org.sonar.server.computation.snapshot.Snapshot;

@@ -27,7 +26,7 @@ public interface AnalysisMetadataHolder {
/**
* @throws IllegalStateException if no analysis date has been set
*/
Date getAnalysisDate();
long getAnalysisDate();

/**
* Convenience method equivalent to calling {@link #getBaseProjectSnapshot() == null}

+ 4
- 7
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java View File

@@ -19,13 +19,11 @@
*/
package org.sonar.server.computation.analysis;

import java.util.Date;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.sonar.server.computation.snapshot.Snapshot;
import org.sonar.server.computation.util.InitializedProperty;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;

public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder {
@@ -41,17 +39,16 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder
private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();

@Override
public MutableAnalysisMetadataHolder setAnalysisDate(Date date) {
checkNotNull(date, "Date must not be null");
public MutableAnalysisMetadataHolder setAnalysisDate(long date) {
checkState(!analysisDate.isInitialized(), "Analysis date has already been set");
this.analysisDate.setProperty(date.getTime());
this.analysisDate.setProperty(date);
return this;
}

@Override
public Date getAnalysisDate() {
public long getAnalysisDate() {
checkState(analysisDate.isInitialized(), "Analysis date has not been set");
return new Date(this.analysisDate.getProperty());
return this.analysisDate.getProperty();
}

@Override

+ 1
- 3
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java View File

@@ -19,17 +19,15 @@
*/
package org.sonar.server.computation.analysis;

import java.util.Date;
import javax.annotation.Nullable;
import org.sonar.server.computation.snapshot.Snapshot;

public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {

/**
* @throws NullPointerException if specified date is {@code null}
* @throws IllegalStateException if the analysis date has already been set
*/
MutableAnalysisMetadataHolder setAnalysisDate(Date date);
MutableAnalysisMetadataHolder setAnalysisDate(long date);

/**
* @throws IllegalStateException if baseProjectSnapshot has already been set

+ 2
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/issue/IssueLifecycle.java View File

@@ -20,6 +20,7 @@
package org.sonar.server.computation.issue;

import com.google.common.annotations.VisibleForTesting;
import java.util.Date;
import javax.annotation.Nullable;
import org.sonar.api.issue.Issue;
import org.sonar.core.issue.DefaultIssue;
@@ -45,7 +46,7 @@ public class IssueLifecycle {
private final DebtCalculator debtCalculator;

public IssueLifecycle(AnalysisMetadataHolder analysisMetadataHolder, IssueWorkflow workflow, IssueUpdater updater, DebtCalculator debtCalculator) {
this(IssueChangeContext.createScan(analysisMetadataHolder.getAnalysisDate()), workflow, updater, debtCalculator);
this(IssueChangeContext.createScan(new Date(analysisMetadataHolder.getAnalysisDate())), workflow, updater, debtCalculator);
}

@VisibleForTesting

+ 2
- 3
server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadPeriodsStep.java View File

@@ -30,7 +30,6 @@ import java.util.List;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.apache.commons.lang.StringUtils;
import org.sonar.api.CoreProperties;
import org.sonar.api.config.Settings;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.utils.DateUtils;
@@ -69,7 +68,7 @@ import static org.sonar.server.computation.component.CrawlerDepthLimit.reportMax
* Populates the {@link org.sonar.server.computation.period.PeriodsHolder}
* <p/>
* Here is how these periods are computed :
* - Read the 5 period properties ${@link CoreProperties#TIMEMACHINE_PERIOD_PREFIX}
* - Read the 5 period properties ${@link org.sonar.core.config.CorePropertyDefinitions#TIMEMACHINE_PERIOD_PREFIX}
* - Try to find the matching snapshots from the properties
* - If a snapshot is found, a new period is added to the repository
*/
@@ -127,7 +126,7 @@ public class LoadPeriodsStep implements ComputationStep {
}

boolean isReportType = projectOrView.getType().isReportType();
PeriodResolver periodResolver = new PeriodResolver(session, projectDto.get().getId(), analysisMetadataHolder.getAnalysisDate().getTime(),
PeriodResolver periodResolver = new PeriodResolver(session, projectDto.get().getId(), analysisMetadataHolder.getAnalysisDate(),
isReportType ? projectOrView.getReportAttributes().getVersion() : null,
isReportType ? Qualifiers.PROJECT : Qualifiers.VIEW);


+ 1
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/step/LoadReportAnalysisMetadataHolderStep.java View File

@@ -20,7 +20,6 @@

package org.sonar.server.computation.step;

import java.util.Date;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.computation.analysis.MutableAnalysisMetadataHolder;
import org.sonar.server.computation.batch.BatchReportReader;
@@ -43,7 +42,7 @@ public class LoadReportAnalysisMetadataHolderStep implements ComputationStep {
BatchReport.Metadata reportMetadata = reportReader.readMetadata();
mutableAnalysisMetadataHolder.setRootComponentRef(reportMetadata.getRootComponentRef());
mutableAnalysisMetadataHolder.setBranch(reportMetadata.hasBranch() ? reportMetadata.getBranch() : null);
mutableAnalysisMetadataHolder.setAnalysisDate(new Date(reportMetadata.getAnalysisDate()));
mutableAnalysisMetadataHolder.setAnalysisDate(reportMetadata.getAnalysisDate());
mutableAnalysisMetadataHolder.setCrossProjectDuplicationEnabled(reportMetadata.hasCrossProjectDuplicationActivated() && reportMetadata.getCrossProjectDuplicationActivated());
}


+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistEventsStep.java View File

@@ -63,7 +63,7 @@ public class PersistEventsStep implements ComputationStep {
public void execute() {
final DbSession session = dbClient.openSession(false);
try {
long analysisDate = analysisMetadataHolder.getAnalysisDate().getTime();
long analysisDate = analysisMetadataHolder.getAnalysisDate();
new DepthTraversalTypeAwareCrawler(new PersistEventComponentVisitor(session, analysisDate))
.visit(treeRootHolder.getRoot());
session.commit();

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistSnapshotsStep.java View File

@@ -68,8 +68,8 @@ public class PersistSnapshotsStep implements ComputationStep {
DbSession session = dbClient.openSession(false);
try {
new PathAwareCrawler<>(
new PersistSnapshotsPathAwareVisitor(session, analysisMetadataHolder.getAnalysisDate().getTime(), dbIdsRepository))
.visit(treeRootHolder.getRoot());
new PersistSnapshotsPathAwareVisitor(session, analysisMetadataHolder.getAnalysisDate(), dbIdsRepository))
.visit(treeRootHolder.getRoot());
session.commit();
} finally {
dbClient.closeSession(session);

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/step/SendIssueNotificationsStep.java View File

@@ -83,7 +83,7 @@ public class SendIssueNotificationsStep implements ComputationStep {
issues.close();
}
if (newIssuesStats.hasIssues()) {
long analysisDate = analysisMetadataHolder.getAnalysisDate().getTime();
long analysisDate = analysisMetadataHolder.getAnalysisDate();
sendNewIssuesNotification(newIssuesStats, project, analysisDate);
sendNewIssuesNotificationToAssignees(newIssuesStats, project, analysisDate);
}

+ 1
- 1
server/sonar-server/src/main/java/org/sonar/server/computation/step/ValidateProjectStep.java View File

@@ -137,7 +137,7 @@ public class ValidateProjectStep implements ComputationStep {
private void validateAnalysisDate(Optional<ComponentDto> baseProject) {
if (baseProject.isPresent()) {
SnapshotDto snapshotDto = dbClient.snapshotDao().selectLastSnapshotByComponentId(session, baseProject.get().getId());
long currentAnalysisDate = analysisMetadataHolder.getAnalysisDate().getTime();
long currentAnalysisDate = analysisMetadataHolder.getAnalysisDate();
Long lastAnalysisDate = snapshotDto != null ? snapshotDto.getCreatedAt() : null;
if (lastAnalysisDate != null && currentAnalysisDate <= snapshotDto.getCreatedAt()) {
validationMessages.add(String.format("Date of analysis cannot be older than the date of the last known analysis on this project. Value: \"%s\". " +

+ 2
- 17
server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java View File

@@ -19,7 +19,6 @@
*/
package org.sonar.server.computation.analysis;

import java.util.Date;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -37,7 +36,7 @@ public class AnalysisMetadataHolderImplTest {
.setCreatedAt(123456789L)
.build();

static Date SOME_DATE = new Date();
static long SOME_DATE = 10000000L;

@Test
public void getAnalysisDate_returns_date_with_same_time_as_the_one_set_with_setAnalysisDate() throws InterruptedException {
@@ -45,11 +44,7 @@ public class AnalysisMetadataHolderImplTest {

underTest.setAnalysisDate(SOME_DATE);

Thread.sleep(10);

Date analysisDate = underTest.getAnalysisDate();
assertThat(analysisDate.getTime()).isEqualTo(SOME_DATE.getTime());
assertThat(analysisDate).isNotSameAs(SOME_DATE);
assertThat(underTest.getAnalysisDate()).isEqualTo(SOME_DATE);
}

@Test
@@ -60,16 +55,6 @@ public class AnalysisMetadataHolderImplTest {
new AnalysisMetadataHolderImpl().getAnalysisDate();
}

@Test
public void setAnalysisDate_throws_NPE_when_date_is_null() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();

expectedException.expect(NullPointerException.class);
expectedException.expectMessage("Date must not be null");

underTest.setAnalysisDate(null);
}

@Test
public void setAnalysisDate_throws_ISE_when_called_twice() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();

+ 8
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderRule.java View File

@@ -48,10 +48,16 @@ public class AnalysisMetadataHolderRule extends ExternalResource implements Anal
return this;
}

public AnalysisMetadataHolderRule setAnalysisDate(long date) {
checkNotNull(date, "Date must not be null");
this.analysisDate.setProperty(date);
return this;
}

@Override
public Date getAnalysisDate() {
public long getAnalysisDate() {
checkState(analysisDate.isInitialized(), "Analysis date has not been set");
return new Date(this.analysisDate.getProperty());
return this.analysisDate.getProperty();
}

@Override

+ 2
- 3
server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java View File

@@ -19,7 +19,6 @@
*/
package org.sonar.server.computation.analysis;

import java.util.Date;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
import org.junit.rules.ExternalResource;
@@ -35,11 +34,11 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen
}

@Override
public Date getAnalysisDate() {
public long getAnalysisDate() {
return delegate.getAnalysisDate();
}

public MutableAnalysisMetadataHolderRule setAnalysisDate(Date date) {
public MutableAnalysisMetadataHolderRule setAnalysisDate(long date) {
delegate.setAnalysisDate(date);
return this;
}

+ 1
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/step/BuildComponentTreeStepTest.java View File

@@ -22,7 +22,6 @@ package org.sonar.server.computation.step;
import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
@@ -75,7 +74,7 @@ public class BuildComponentTreeStepTest {
static final String REPORT_DIR_KEY_2 = "src/main/java/dir2";
static final String REPORT_FILE_KEY_2 = "src/main/java/dir2/File2.java";

static final Date ANALYSIS_DATE = new Date();
static final long ANALYSIS_DATE = 123456789L;

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/computation/step/LoadPeriodsStepTest.java View File

@@ -86,7 +86,7 @@ public class LoadPeriodsStepTest extends BaseStepTest {

@Before
public void setUp() throws Exception {
analysisMetadataHolder.setAnalysisDate(DATE_FORMAT.parse("2008-11-30"));
analysisMetadataHolder.setAnalysisDate(DATE_FORMAT.parse("2008-11-30").getTime());

underTest = new LoadPeriodsStep(dbClient, settingsRepository, treeRootHolder, analysisMetadataHolder, periodsHolder);
}

+ 1
- 1
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistEventsStepTest.java View File

@@ -66,7 +66,7 @@ public class PersistEventsStepTest extends BaseStepTest {
@Before
public void setup() {
when(system2.now()).thenReturn(1225630680000L);
analysisMetadataHolder.setAnalysisDate(someDate);
analysisMetadataHolder.setAnalysisDate(someDate.getTime());
step = new PersistEventsStep(dbTester.getDbClient(), system2, treeRootHolder, analysisMetadataHolder, eventRepository, dbIdsRepository);
when(eventRepository.getEvents(any(Component.class))).thenReturn(Collections.<Event>emptyList());
}

+ 1
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/step/ReportPersistSnapshotsStepTest.java View File

@@ -20,7 +20,6 @@

package org.sonar.server.computation.step;

import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Rule;
@@ -84,7 +83,7 @@ public class ReportPersistSnapshotsStepTest extends BaseStepTest {
public void setup() {
dbTester.truncateTables();
analysisDate = DateUtils.parseDateQuietly("2015-06-01").getTime();
analysisMetadataHolder.setAnalysisDate(new Date(analysisDate));
analysisMetadataHolder.setAnalysisDate(analysisDate);
dbIdsRepository = new DbIdsRepositoryImpl();

now = DateUtils.parseDateQuietly("2015-06-02").getTime();

+ 1
- 2
server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsPersistSnapshotsStepTest.java View File

@@ -20,7 +20,6 @@

package org.sonar.server.computation.step;

import java.util.Date;
import java.util.List;
import org.junit.Before;
import org.junit.Rule;
@@ -90,7 +89,7 @@ public class ViewsPersistSnapshotsStepTest extends BaseStepTest {
public void setup() {
dbTester.truncateTables();
analysisDate = DateUtils.parseDateQuietly("2015-06-01").getTime();
analysisMetadataHolder.setAnalysisDate(new Date(analysisDate));
analysisMetadataHolder.setAnalysisDate(analysisDate);

now = DateUtils.parseDateQuietly("2015-06-02").getTime();


Loading…
Cancel
Save