From: Julien Lancelot Date: Tue, 10 Nov 2015 15:59:46 +0000 (+0100) Subject: SONAR-6993 Add root component ref in analysis metadata holder X-Git-Tag: 5.3-RC1~319 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0b18f3b8e72a7576dd0e2d778de290489565dd69;p=sonarqube.git SONAR-6993 Add root component ref in analysis metadata holder --- 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 analysisDate = new InitializedProperty<>(); private InitializedProperty baseProjectSnapshot = new InitializedProperty<>(); - @CheckForNull private InitializedProperty crossProjectDuplicationEnabled = new InitializedProperty<>(); private InitializedProperty branch = new InitializedProperty<>(); + private InitializedProperty 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 { 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(); + } }