diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-11-10 16:59:46 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2015-11-12 11:01:29 +0100 |
commit | 0b18f3b8e72a7576dd0e2d778de290489565dd69 (patch) | |
tree | 60c746f3b2b1995b55135e46b1fe853c24e76b8d /server | |
parent | dc752be6e8dad85bd8000297ea650e22133f7839 (diff) | |
download | sonarqube-0b18f3b8e72a7576dd0e2d778de290489565dd69.tar.gz sonarqube-0b18f3b8e72a7576dd0e2d778de290489565dd69.zip |
SONAR-6993 Add root component ref in analysis metadata holder
Diffstat (limited to 'server')
5 files changed, 63 insertions, 2 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java index c916fc8feb8..595afb2817f 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolder.java @@ -56,4 +56,9 @@ public interface AnalysisMetadataHolder { @CheckForNull String getBranch(); + /** + * @throws IllegalStateException if root component ref has not been set + */ + int getRootComponentRef(); + } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java index 81f10bef2ca..6cd49d3bd14 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java @@ -28,16 +28,17 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder { - @CheckForNull + private InitializedProperty<Long> analysisDate = new InitializedProperty<>(); private InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>(); - @CheckForNull private InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>(); private InitializedProperty<String> branch = new InitializedProperty<>(); + private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>(); + @Override public void setAnalysisDate(Date date) { checkNotNull(date, "Date must not be null"); @@ -93,6 +94,18 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder return branch.getProperty(); } + @Override + public void setRootComponentRef(int rootComponentRef) { + checkState(!this.rootComponentRef.isInitialized(), "Root component ref has already been set"); + this.rootComponentRef.setProperty(rootComponentRef); + } + + @Override + public int getRootComponentRef() { + checkState(rootComponentRef.isInitialized(), "Root component ref has not been set"); + return rootComponentRef.getProperty(); + } + private static class InitializedProperty<E> { private E property; private boolean initialized = false; @@ -112,4 +125,5 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder return initialized; } } + } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java index 8c3f0ca98ec..eec006c0591 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolder.java @@ -46,4 +46,9 @@ public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder { */ void setBranch(@Nullable String branch); + /** + * @throws IllegalStateException if root component ref has already been set + */ + void setRootComponentRef(int rootComponentRef); + } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java index f0aca8636a8..a204ab73c57 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImplTest.java @@ -194,4 +194,31 @@ public class AnalysisMetadataHolderImplTest { expectedException.expectMessage("Branch has already been set"); underTest.setBranch("origin/master"); } + + @Test + public void getRootComponentRef() throws InterruptedException { + AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl(); + + underTest.setRootComponentRef(10); + + assertThat(underTest.getRootComponentRef()).isEqualTo(10); + } + + @Test + public void getRootComponentRef_throws_ISE_when_holder_is_not_initialized() { + expectedException.expect(IllegalStateException.class); + expectedException.expectMessage("Root component ref has not been set"); + + new AnalysisMetadataHolderImpl().getRootComponentRef(); + } + + @Test + public void setRootComponentRef_throws_ISE_when_called_twice() { + AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl(); + underTest.setRootComponentRef(10); + + expectedException.expect(IllegalStateException.class); + expectedException.expectMessage("Root component ref has already been set"); + underTest.setRootComponentRef(9); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java b/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java index fed4344a683..51a9fb5295b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java @@ -79,4 +79,14 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen public void setBranch(@Nullable String branch) { delegate.setBranch(branch); } + + @Override + public void setRootComponentRef(int rootComponentRef) { + delegate.setRootComponentRef(rootComponentRef); + } + + @Override + public int getRootComponentRef() { + return delegate.getRootComponentRef(); + } } |