Browse Source

SONAR-6993 Add root component ref in analysis metadata holder

tags/5.3-RC1
Julien Lancelot 8 years ago
parent
commit
0b18f3b8e7

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

@@ -56,4 +56,9 @@ public interface AnalysisMetadataHolder {
@CheckForNull
String getBranch();

/**
* @throws IllegalStateException if root component ref has not been set
*/
int getRootComponentRef();

}

+ 16
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/analysis/AnalysisMetadataHolderImpl.java View File

@@ -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;
}
}

}

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

@@ -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);

}

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

@@ -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);
}
}

+ 10
- 0
server/sonar-server/src/test/java/org/sonar/server/computation/analysis/MutableAnalysisMetadataHolderRule.java View File

@@ -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();
}
}

Loading…
Cancel
Save