aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-03-07 16:38:53 +0100
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-03-10 10:14:39 +0100
commitf715a2cc8f6702b5f4fc226bd95162df8c9bf58a (patch)
tree79e6be92af511d9fca57f13a8bb34d746a3e7b1c
parentbbcb1e1ae48e25bf0aad8fd3941f605afabc323c (diff)
downloadsonarqube-f715a2cc8f6702b5f4fc226bd95162df8c9bf58a.tar.gz
sonarqube-f715a2cc8f6702b5f4fc226bd95162df8c9bf58a.zip
SONAR-4366 Fix NPE when quality gate is empty (no condition)
-rw-r--r--sonar-ws-client/src/main/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClient.java6
-rw-r--r--sonar-ws-client/src/test/java/org/sonar/wsclient/qualitygate/internal/DefaultQualityGateClientTest.java16
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() {