public interface AnalysisMetadataHolder {
+ /**
+ * @throws IllegalStateException if organizations enabled flag has not been set
+ */
+ boolean isOrganizationsEnabled();
+
/**
* Returns the organization the analysis belongs to.
* @throws IllegalStateException if organization has not been set
public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder {
private static final String BRANCH_NOT_SET = "Branch has not been set";
+ private final InitializedProperty<Boolean> organizationsEnabled = new InitializedProperty<>();
private final InitializedProperty<Organization> organization = new InitializedProperty<>();
private final InitializedProperty<String> uuid = new InitializedProperty<>();
private final InitializedProperty<Long> analysisDate = new InitializedProperty<>();
private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
private final InitializedProperty<Map<String, ScannerPlugin>> pluginsByKey = new InitializedProperty<>();
+ @Override
+ public MutableAnalysisMetadataHolder setOrganizationsEnabled(boolean isOrganizationsEnabled) {
+ checkState(!this.organizationsEnabled.isInitialized(), "Organization enabled flag has already been set");
+ this.organizationsEnabled.setProperty(isOrganizationsEnabled);
+ return this;
+ }
+
+ @Override
+ public boolean isOrganizationsEnabled() {
+ checkState(organizationsEnabled.isInitialized(), "Organizations enabled flag has not been set");
+ return organizationsEnabled.getProperty();
+ }
+
@Override
public MutableAnalysisMetadataHolder setOrganization(Organization organization) {
checkState(!this.organization.isInitialized(), "Organization has already been set");
public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {
+ /**
+ * @throws IllegalStateException if organizations enabled flag has already been set
+ */
+ MutableAnalysisMetadataHolder setOrganizationsEnabled(boolean isOrganizationsEnabled);
+
/**
* @throws IllegalStateException if the organization uuid has already been set
*/
private final String key;
private final String name;
private final String defaultQualityGateUuid;
- private final boolean organizationsEnabled;
- private Organization(String uuid, String key, String name, String defaultQualityGateUuid, boolean organizationsEnabled) {
+ private Organization(String uuid, String key, String name, String defaultQualityGateUuid) {
this.uuid = requireNonNull(uuid, "uuid can't be null");
this.key = requireNonNull(key, "key can't be null");
this.name = requireNonNull(name, "name can't be null");
this.defaultQualityGateUuid = requireNonNull(defaultQualityGateUuid, "defaultQualityGateUuid can't be null");
- this.organizationsEnabled = organizationsEnabled;
}
public String getUuid() {
return defaultQualityGateUuid;
}
- public boolean isOrganizationsEnabled() {
- return organizationsEnabled;
- }
-
@Override
public boolean equals(Object o) {
if (this == o) {
", key='" + key + '\'' +
", name='" + name + '\'' +
", defaultQualityGateUuid='" + defaultQualityGateUuid + '\'' +
- ", organizationsEnabled=" + organizationsEnabled +
'}';
}
.setDefaultQualityGateUuid(defaultQualityGateUuid);
}
- public static Organization from(OrganizationDto organizationDto, boolean organizationsEnabled) {
- return new Organization(
- organizationDto.getUuid(),
- organizationDto.getKey(),
- organizationDto.getName(),
- organizationDto.getDefaultQualityGateUuid(),
- organizationsEnabled);
+ public static Organization from(OrganizationDto organizationDto) {
+ return new Organization(organizationDto.getUuid(), organizationDto.getKey(), organizationDto.getName(), organizationDto.getDefaultQualityGateUuid());
}
}
@CheckForNull
private Organization createOrganization() {
- org.sonar.server.computation.task.projectanalysis.analysis.Organization organization = analysisMetadataHolder.getOrganization();
- if (organization.isOrganizationsEnabled()) {
- return new OrganizationImpl(organization.getName(), organization.getKey());
+ if (!analysisMetadataHolder.isOrganizationsEnabled()) {
+ return null;
}
- return null;
+ org.sonar.server.computation.task.projectanalysis.analysis.Organization organization = analysisMetadataHolder.getOrganization();
+ return new OrganizationImpl(organization.getName(), organization.getKey());
}
private Optional<Analysis> getAnalysis() {
private final OrganizationFlags organizationFlags;
public LoadReportAnalysisMetadataHolderStep(CeTask ceTask, BatchReportReader reportReader, MutableAnalysisMetadataHolder analysisMetadata,
- DefaultOrganizationProvider defaultOrganizationProvider, DbClient dbClient, BranchLoader branchLoader, PluginRepository pluginRepository, OrganizationFlags organizationFlags) {
+ DefaultOrganizationProvider defaultOrganizationProvider, DbClient dbClient, BranchLoader branchLoader, PluginRepository pluginRepository,
+ OrganizationFlags organizationFlags) {
this.ceTask = ceTask;
this.reportReader = reportReader;
this.analysisMetadata = analysisMetadata;
}
private Organization loadOrganization(ScannerReport.Metadata reportMetadata) {
- Organization organization = toOrganization(ceTask.getOrganizationUuid());
- checkOrganizationKeyConsistency(reportMetadata, organization);
- analysisMetadata.setOrganization(organization);
- return organization;
+ try (DbSession dbSession = dbClient.openSession(false)) {
+ Organization organization = toOrganization(dbSession, ceTask.getOrganizationUuid());
+ checkOrganizationKeyConsistency(reportMetadata, organization);
+ analysisMetadata.setOrganization(organization);
+ analysisMetadata.setOrganizationsEnabled(organizationFlags.isEnabled(dbSession));
+ return organization;
+ }
}
private void loadQualityProfiles(ScannerReport.Metadata reportMetadata, Organization organization) {
return organizationKey == null || organizationKey.isEmpty();
}
- private Organization toOrganization(String organizationUuid) {
- try (DbSession dbSession = dbClient.openSession(false)) {
- Optional<OrganizationDto> organizationDto = dbClient.organizationDao().selectByUuid(dbSession, organizationUuid);
- checkState(organizationDto.isPresent(), "Organization with uuid '%s' can't be found", organizationUuid);
- return Organization.from(organizationDto.get(), organizationFlags.isEnabled(dbSession));
- }
+ private Organization toOrganization(DbSession dbSession, String organizationUuid) {
+ Optional<OrganizationDto> organizationDto = dbClient.organizationDao().selectByUuid(dbSession, organizationUuid);
+ checkState(organizationDto.isPresent(), "Organization with uuid '%s' can't be found", organizationUuid);
+ return Organization.from(organizationDto.get());
}
private ComponentDto toProject(String projectKey) {
*/
package org.sonar.server.computation.task.projectanalysis.analysis;
-import java.util.Random;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@Test
public void setOrganization_throws_ISE_if_called_twice() {
- Organization organization = Organization.from(
- new OrganizationDto().setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("anyuuidr"),
- new Random().nextBoolean());
+ Organization organization = Organization.from(new OrganizationDto().setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("anyuuidr"));
underTest.setOrganization(organization);
expectedException.expect(IllegalStateException.class);
public class AnalysisMetadataHolderRule extends ExternalResource implements MutableAnalysisMetadataHolder {
+ private final InitializedProperty<Boolean> organizationsEnabled = new InitializedProperty<>();
+
private final InitializedProperty<Organization> organization = new InitializedProperty<>();
private final InitializedProperty<String> uuid = new InitializedProperty<>();
private final InitializedProperty<Map<String, ScannerPlugin>> pluginsByKey = new InitializedProperty<>();
+ @Override
+ public AnalysisMetadataHolderRule setOrganizationsEnabled(boolean isOrganizationsEnabled) {
+ this.organizationsEnabled.setProperty(isOrganizationsEnabled);
+ return this;
+ }
+
+ @Override
+ public boolean isOrganizationsEnabled() {
+ checkState(organizationsEnabled.isInitialized(), "Organizations enabled flag has not been set");
+ return organizationsEnabled.getProperty();
+ }
+
@Override
public AnalysisMetadataHolderRule setOrganization(Organization organization) {
requireNonNull(organization, "organization can't be null");
public AnalysisMetadataHolderRule setOrganizationUuid(String uuid, String defaultQualityGateUuid) {
requireNonNull(uuid, "organization uuid can't be null");
- this.organization.setProperty(Organization.from(
- new OrganizationDto()
- .setUuid(uuid)
- .setKey("key_" + uuid)
- .setName("name_" + uuid)
- .setDefaultQualityGateUuid(defaultQualityGateUuid),
- false));
+ this.organization.setProperty(Organization.from(new OrganizationDto().setUuid(uuid).setKey("key_" + uuid).setName("name_" + uuid).setDefaultQualityGateUuid(defaultQualityGateUuid)));
return this;
}
delegate = new AnalysisMetadataHolderImpl();
}
+ @Override
+ public boolean isOrganizationsEnabled() {
+ return delegate.isOrganizationsEnabled();
+ }
+
+ @Override
+ public MutableAnalysisMetadataHolderRule setOrganizationsEnabled(boolean isOrganizationsEnabled) {
+ delegate.setOrganizationsEnabled(isOrganizationsEnabled);
+ return this;
+ }
+
@Override
public MutableAnalysisMetadataHolderRule setOrganization(Organization organization) {
delegate.setOrganization(organization);
*/
package org.sonar.server.computation.task.projectanalysis.analysis;
-import java.util.Random;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
public void build_throws_NPE_if_dto_is_null() {
expectedException.expect(NullPointerException.class);
- Organization.from(null, new Random().nextBoolean());
+ Organization.from(null);
}
@Test
expectedException.expect(NullPointerException.class);
expectedException.expectMessage("uuid can't be null");
- Organization.from(underTest, new Random().nextBoolean());
+ Organization.from(underTest);
}
@Test
expectedException.expect(NullPointerException.class);
expectedException.expectMessage("key can't be null");
- Organization.from(underTest, new Random().nextBoolean());
+ Organization.from(underTest);
}
@Test
expectedException.expect(NullPointerException.class);
expectedException.expectMessage("defaultQualityGateUuid can't be null");
- Organization.from(underTest, new Random().nextBoolean());
+ Organization.from(underTest);
}
@Test
expectedException.expect(NullPointerException.class);
expectedException.expectMessage("name can't be null");
- Organization.from(underTest, new Random().nextBoolean());
+ Organization.from(underTest);
}
@Test
public void verify_getters() {
- boolean organizationsEnabled = new Random().nextBoolean();
- Organization organization = Organization.from(
- underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"),
- organizationsEnabled);
+ Organization organization = Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"));
assertThat(organization.getUuid()).isEqualTo("uuid");
assertThat(organization.getKey()).isEqualTo("key");
assertThat(organization.getName()).isEqualTo("name");
assertThat(organization.getDefaultQualityGateUuid()).isEqualTo("uuid1");
- assertThat(organization.isOrganizationsEnabled()).isEqualTo(organizationsEnabled);
}
@Test
public void verify_toString() {
- Organization organization = Organization.from(
- underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"),
- false);
+ Organization organization = Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"));
- assertThat(organization.toString()).isEqualTo("Organization{uuid='uuid', key='key', name='name', defaultQualityGateUuid='uuid1', organizationsEnabled=false}");
+ assertThat(organization.toString()).isEqualTo("Organization{uuid='uuid', key='key', name='name', defaultQualityGateUuid='uuid1'}");
}
@Test
public void equals_is_based_on_uuid_only() {
- boolean organizationsEnabled = new Random().nextBoolean();
- Organization organization = Organization.from(
- underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"),
- organizationsEnabled);
-
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"), organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"), !organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("other key").setName("name").setDefaultQualityGateUuid("uuid1"), organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("other key").setName("name").setDefaultQualityGateUuid("uuid1"), !organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("other name").setDefaultQualityGateUuid("uuid1"), organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("other name").setDefaultQualityGateUuid("uuid1"), !organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("other uuid"), organizationsEnabled));
- assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("other uuid"), !organizationsEnabled));
- assertThat(organization)
- .isNotEqualTo(Organization.from(underTest.setUuid("other uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"), organizationsEnabled));
- assertThat(organization).isNotEqualTo(
- Organization.from(underTest.setUuid("other uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"), !organizationsEnabled));
+ Organization organization = Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"));
+
+ assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1")));
+ assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("other key").setName("name").setDefaultQualityGateUuid("uuid1")));
+ assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("other name").setDefaultQualityGateUuid("uuid1")));
+ assertThat(organization).isEqualTo(Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("other uuid")));
+ assertThat(organization).isNotEqualTo(Organization.from(underTest.setUuid("other uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1")));
assertThat(organization).isNotEqualTo(null);
assertThat(organization).isNotEqualTo("toto");
}
@Test
public void hashcode_is_based_on_uuid_only() {
- Organization organization = Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"), new Random().nextBoolean());
+ Organization organization = Organization.from(underTest.setUuid("uuid").setKey("key").setName("name").setDefaultQualityGateUuid("uuid1"));
assertThat(organization.hashCode()).isEqualTo("uuid".hashCode());
}
CONDITION_2, ConditionStatus.NO_VALUE_STATUS));
Branch branch = mock(Branch.class);
when(branch.getType()).thenReturn(BranchType.LONG);
- analysisMetadataHolder.setBranch(branch);
- analysisMetadataHolder.setOrganization(Organization.from(
- new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo"),
- new Random().nextBoolean()));
+ analysisMetadataHolder
+ .setBranch(branch)
+ .setOrganizationsEnabled(new Random().nextBoolean())
+ .setOrganization(Organization.from(
+ new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo")));
}
@Test
@Test
@UseDataProvider("booleanValues")
public void organization_is_null_when_organization_are_disabled(boolean allStepsExecuted) {
- analysisMetadataHolder.setOrganization(Organization.from(
- new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo"),
- false));
+ analysisMetadataHolder
+ .setOrganizationsEnabled(false)
+ .setOrganization(Organization.from(
+ new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo")));
underTest.finished(allStepsExecuted);
verify(postProjectAnalysisTask).finished(projectAnalysisArgumentCaptor.capture());
@Test
@UseDataProvider("booleanValues")
public void organization_is_not_null_when_organization_are_enabled(boolean allStepsExecuted) {
- analysisMetadataHolder.setOrganization(Organization.from(
- new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo"),
- true));
+ analysisMetadataHolder
+ .setOrganizationsEnabled(true)
+ .setOrganization(Organization.from(
+ new OrganizationDto().setKey(organizationKey).setName(organizationName).setUuid(organizationUuid).setDefaultQualityGateUuid("foo")));
underTest.finished(allStepsExecuted);
verify(postProjectAnalysisTask).finished(projectAnalysisArgumentCaptor.capture());
*/
package org.sonar.server.computation.task.projectanalysis.issue;
-import java.util.Random;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
public void setUp() throws Exception {
organizationDto = db.organizations().insertForUuid(ORGANIZATION_UUID);
analysisMetadataHolder.setOrganization(Organization.from(
- new OrganizationDto().setUuid(ORGANIZATION_UUID).setKey("Organization key").setName("Organization name").setDefaultQualityGateUuid(QUALITY_GATE_UUID),
- new Random().nextBoolean()));
+ new OrganizationDto().setUuid(ORGANIZATION_UUID).setKey("Organization key").setName("Organization name").setDefaultQualityGateUuid(QUALITY_GATE_UUID)));
}
@Test
import org.sonar.server.computation.task.projectanalysis.component.BranchLoader;
import org.sonar.server.computation.task.step.ComputationStep;
import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.server.organization.OrganizationFlags;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
-import org.sonar.server.organization.TestOrganizationFlags;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
+import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
private DbClient dbClient = db.getDbClient();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
- private TestOrganizationFlags organizationFlags = TestOrganizationFlags.standalone();
private PluginRepository pluginRepository = mock(PluginRepository.class);
private ComputationStep underTest;
+ private OrganizationFlags organizationFlags = mock(OrganizationFlags.class);
@Before
public void setUp() {
newBatchReportBuilder()
.setOrganizationKey(db.getDefaultOrganization().getKey())
.build());
- organizationFlags.setEnabled(organizationEnabled);
+ when(organizationFlags.isEnabled(any())).thenReturn(organizationEnabled);
underTest.execute();
assertThat(organization.getUuid()).isEqualTo(defaultOrganization.getUuid());
assertThat(organization.getKey()).isEqualTo(defaultOrganization.getKey());
assertThat(organization.getName()).isEqualTo(defaultOrganization.getName());
- assertThat(organization.isOrganizationsEnabled()).isEqualTo(organizationEnabled);
+ assertThat(analysisMetadataHolder.isOrganizationsEnabled()).isEqualTo(organizationEnabled);
}
@Test
.setOrganizationKey(nonDefaultOrganizationDto.getKey())
.setProjectKey(project.getDbKey())
.build());
- organizationFlags.setEnabled(organizationEnabled);
+ when(organizationFlags.isEnabled(any())).thenReturn(organizationEnabled);
ComputationStep underTest = createStep(createCeTask(project.getDbKey(), nonDefaultOrganizationDto.getUuid()));
assertThat(organization.getUuid()).isEqualTo(nonDefaultOrganizationDto.getUuid());
assertThat(organization.getKey()).isEqualTo(nonDefaultOrganizationDto.getKey());
assertThat(organization.getName()).isEqualTo(nonDefaultOrganizationDto.getName());
- assertThat(organization.isOrganizationsEnabled()).isEqualTo(organizationEnabled);
+ assertThat(analysisMetadataHolder.isOrganizationsEnabled()).isEqualTo(organizationEnabled);
}
@DataProvider
public static Object[][] organizationEnabledFlags() {
return new Object[][] {
- { true },
- { false }
+ {true},
+ {false}
};
}
*/
package org.sonar.server.computation.task.projectanalysis.step;
-import java.util.Random;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
private OrganizationDto organization = newOrganizationDto();
@Rule
public MutableAnalysisMetadataHolderRule analysisMetadata = new MutableAnalysisMetadataHolderRule()
- .setOrganization(Organization.from(organization, new Random().nextBoolean()));
+ .setOrganization(Organization.from(organization));
private BillingValidationsProxy validations = mock(BillingValidationsProxy.class);