diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-03-07 16:38:53 +0100 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2014-03-10 10:14:39 +0100 |
commit | f715a2cc8f6702b5f4fc226bd95162df8c9bf58a (patch) | |
tree | 79e6be92af511d9fca57f13a8bb34d746a3e7b1c | |
parent | bbcb1e1ae48e25bf0aad8fd3941f605afabc323c (diff) | |
download | sonarqube-f715a2cc8f6702b5f4fc226bd95162df8c9bf58a.tar.gz sonarqube-f715a2cc8f6702b5f4fc226bd95162df8c9bf58a.zip |
SONAR-4366 Fix NPE when quality gate is empty (no condition)
2 files changed, 20 insertions, 2 deletions
diff --git a/sonar-ws-client/src/main/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClient.java b/sonar-ws-client/src/main/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClient.java index 601acbaf2eb..ff24c155604 100644 --- a/sonar-ws-client/src/main/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClient.java +++ b/sonar-ws-client/src/main/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClient.java @@ -113,8 +113,10 @@ public class DefaultQualityGateClient implements QualityGateClient { Map jsonRoot = (Map) JSONValue.parse(json); Collection<Map> conditionArray = (Collection<Map>) jsonRoot.get("conditions"); Collection<QualityGateCondition> conditions = new ArrayList<QualityGateCondition>(); - for (Map conditionJson: conditionArray) { - conditions.add(new DefaultQualityGateCondition(conditionJson)); + if (conditionArray != null) { + for (Map conditionJson: conditionArray) { + conditions.add(new DefaultQualityGateCondition(conditionJson)); + } } return conditions; } diff --git a/sonar-ws-client/src/test/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClientTest.java b/sonar-ws-client/src/test/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClientTest.java index a2628931f74..7bb2f309a26 100644 --- a/sonar-ws-client/src/test/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClientTest.java +++ b/sonar-ws-client/src/test/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClientTest.java @@ -168,6 +168,22 @@ public class DefaultQualityGateClientTest { assertThat(sixth.warningThreshold()).isEqualTo("0"); } + @Test + public void should_show_empty_qualitygate_by_id() { + HttpRequestFactory requestFactory = new HttpRequestFactory(httpServer.url()); + + httpServer.stubResponseBody("{\"id\":5,\"name\":\"Sonar way\"}"); + + QualityGateClient client = new DefaultQualityGateClient(requestFactory); + + QualityGateDetails qGate = client.show(5L); + assertThat(httpServer.requestedPath()).isEqualTo("/api/qualitygates/show?id=5"); + assertThat(qGate.id()).isEqualTo(5L); + assertThat(qGate.name()).isEqualTo("Sonar way"); + + Collection<QualityGateCondition> conditions = qGate.conditions(); + assertThat(conditions).isEmpty(); + } @Test public void should_destroy_qualitygate() { |