@@ -45,4 +45,9 @@ public interface AnalysisMetadataHolder { | |||
@CheckForNull | |||
Snapshot getBaseProjectSnapshot(); | |||
/** | |||
* @throws IllegalStateException if cross project duplication flag has not been set | |||
*/ | |||
boolean isCrossProjectDuplicationEnabled(); | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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); | |||
} |
@@ -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); | |||
} | |||
} |
@@ -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); | |||
} | |||
} |