From: Sébastien Lesaint Date: Tue, 2 Jun 2015 15:41:29 +0000 (+0200) Subject: fix potential NPE in QualityProfileEventsStep X-Git-Tag: 5.2-RC1~1681 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6e5082fdce62ee74b31751c295238871f4cf72c2;p=sonarqube.git fix potential NPE in QualityProfileEventsStep --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/QualityProfileEventsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/QualityProfileEventsStep.java index 6064899b711..3a7c955b556 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/QualityProfileEventsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/QualityProfileEventsStep.java @@ -21,6 +21,7 @@ package org.sonar.server.computation.step; import com.google.common.base.Optional; import com.google.common.collect.ImmutableSortedMap; +import java.util.Collections; import java.util.Date; import java.util.Map; import javax.annotation.Nullable; @@ -75,17 +76,25 @@ public class QualityProfileEventsStep implements ComputationStep { } // Load current profiles - Map previousProfiles = QPMeasureData.fromJson(previousMeasure.get().getData()).getProfilesByKey(); Optional currentMeasure = measureRepository.findCurrent(projectComponent, CoreMetrics.QUALITY_PROFILES); if (!currentMeasure.isPresent()) { throw new IllegalStateException("Missing measure " + CoreMetrics.QUALITY_PROFILES + " for component " + projectComponent.getRef()); } Map currentProfiles = QPMeasureData.fromJson(currentMeasure.get().getStringValue()).getProfilesByKey(); + Map previousProfiles = parseJsonData(previousMeasure); detectNewOrUpdatedProfiles(projectComponent, previousProfiles, currentProfiles); detectNoMoreUsedProfiles(projectComponent, previousProfiles, currentProfiles); } + private static Map parseJsonData(Optional previousMeasure) { + String data = previousMeasure.get().getData(); + if (data == null) { + return Collections.emptyMap(); + } + return QPMeasureData.fromJson(data).getProfilesByKey(); + } + private void detectNoMoreUsedProfiles(Component context, Map previousProfiles, Map currentProfiles) { for (QualityProfile previousProfile : previousProfiles.values()) { if (!currentProfiles.containsKey(previousProfile.getQpKey())) {