Browse Source

SONAR-6993 Add isCpdEnabled in analysis metadata holder

tags/5.3-RC1
Julien Lancelot 8 years ago
parent
commit
660e2ed46d

+ 5
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java View File

@@ -45,4 +45,9 @@ public interface AnalysisMetadataHolder {
@CheckForNull
Snapshot getBaseProjectSnapshot();

/**
* @throws IllegalStateException if cross project duplication flag has not been set
*/
boolean isCrossProjectDuplicationEnabled();

}

+ 14
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java View File

@@ -35,6 +35,9 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder
@CheckForNull
private Snapshot baseProjectSnapshot;

@CheckForNull
private Boolean isCrossProjectDuplicationEnabled;

@Override
public void setAnalysisDate(Date date) {
checkState(analysisDate == null, "Analysis date has already been set");
@@ -66,4 +69,15 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder
return baseProjectSnapshot;
}

@Override
public void setIsCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled) {
checkState(this.isCrossProjectDuplicationEnabled == null, "Cross project duplication flag has already been set");
this.isCrossProjectDuplicationEnabled = isCrossProjectDuplicationEnabled;
}

@Override
public boolean isCrossProjectDuplicationEnabled() {
checkState(isCrossProjectDuplicationEnabled != null, "Cross project duplication flag has not been set");
return isCrossProjectDuplicationEnabled;
}
}

+ 5
- 0
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java View File

@@ -36,4 +36,9 @@ public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {
*/
void setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot);

/**
* @throws IllegalStateException if cross project duplication flag has already been set
*/
void setIsCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled);

}

+ 36
- 0
server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java View File

@@ -112,4 +112,40 @@ public class AnalysisMetadataHolderImplTest {
expectedException.expectMessage("Base project snapshot has already been set");
underTest.setBaseProjectSnapshot(BASE_PROJECT_SNAPSHOT);
}

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

underTest.setIsCrossProjectDuplicationEnabled(true);

assertThat(underTest.isCrossProjectDuplicationEnabled()).isEqualTo(true);
}

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

underTest.setIsCrossProjectDuplicationEnabled(false);

assertThat(underTest.isCrossProjectDuplicationEnabled()).isEqualTo(false);
}

@Test
public void isCrossProjectDuplicationEnabled_throws_ISE_when_holder_is_not_initialized() {
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("Cross project duplication flag has not been set");

new AnalysisMetadataHolderImpl().isCrossProjectDuplicationEnabled();
}

@Test
public void setIsCrossProjectDuplicationEnabled_throws_ISE_when_called_twice() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();
underTest.setIsCrossProjectDuplicationEnabled(true);

expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("Cross project duplication flag has already been set");
underTest.setIsCrossProjectDuplicationEnabled(false);
}
}

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

@@ -49,6 +49,11 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen
return delegate.isFirstAnalysis();
}

@Override
public void setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot) {
delegate.setBaseProjectSnapshot(baseProjectSnapshot);
}

@Override
@CheckForNull
public Snapshot getBaseProjectSnapshot() {
@@ -56,7 +61,12 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen
}

@Override
public void setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot) {
delegate.setBaseProjectSnapshot(baseProjectSnapshot);
public boolean isCrossProjectDuplicationEnabled() {
return delegate.isCrossProjectDuplicationEnabled();
}

@Override
public void setIsCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled) {
delegate.setIsCrossProjectDuplicationEnabled(isCrossProjectDuplicationEnabled);
}
}

Loading…
Cancel
Save