From edc2b5329e4dde7b5dcb01b8a8bccf51a8064131 Mon Sep 17 00:00:00 2001 From: "k.kazak" Date: Fri, 22 Feb 2019 09:00:16 +0100 Subject: fix potential nullpointer from sonar MsoMulticloudUtils: multicloudClient may be null throw MsoException if it is null (instead of NullPointer) removed unnecessary StackInfo object creation using format specifiers for a logger instead of String concatenation removed else block to make the code easier to read Added tests for the method Change-Id: I80d2e0ba2ef2d20c488cdfcf103d9cfa5784ab65 Issue-ID: SO-1516 Signed-off-by: k.kazak --- .../so/openstack/utils/MsoMulticloudUtils.java | 46 ++++++++++++---------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'adapters/mso-adapter-utils/src/main/java') diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java index 5c0110b680..49758a1240 100644 --- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java +++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright (C) 2018 Intel Corp. All rights reserved. * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,6 +22,9 @@ package org.onap.so.openstack.utils; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.woorea.openstack.heat.model.CreateStackParam; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; @@ -27,10 +32,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; - import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilderException; - import org.onap.so.adapters.vdu.CloudInfo; import org.onap.so.adapters.vdu.PluginAction; import org.onap.so.adapters.vdu.VduArtifact; @@ -59,10 +62,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.woorea.openstack.heat.model.CreateStackParam; - @Component public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{ @@ -194,30 +193,35 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{ String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, null); RestClient multicloudClient = getMulticloudClient(multicloudEndpoint); - Response response = multicloudClient.post(multicloudRequest); + if (multicloudClient == null) { + MsoOpenstackException me = new MsoOpenstackException(0, "", "Multicloud client could not be initialized"); + me.addContext(CREATE_STACK); + throw me; + } - StackInfo createInfo = new StackInfo(); - createInfo.setName(stackName); + Response response = multicloudClient.post(multicloudRequest); MulticloudCreateResponse multicloudResponseBody = null; if (response.hasEntity()) { - multicloudResponseBody = getCreateBody((java.io.InputStream)response.getEntity()); + multicloudResponseBody = getCreateBody((java.io.InputStream) response.getEntity()); } if (response.getStatus() == Response.Status.CREATED.getStatusCode() && response.hasEntity()) { - createInfo.setCanonicalName(stackName + "/" + multicloudResponseBody.getWorkloadId()); - if (logger.isDebugEnabled()) { - logger.debug("Multicloud Create Response Body: " + multicloudResponseBody); + String canonicalName = stackName + "/"; + if (multicloudResponseBody != null) { + canonicalName = canonicalName + multicloudResponseBody.getWorkloadId(); } - return getStackStatus(cloudSiteId, tenantId, createInfo.getCanonicalName(), pollForCompletion, timeoutMinutes, backout); - } else { - StringBuilder stackErrorStatusReason = new StringBuilder(response.getStatusInfo().getReasonPhrase()); - if (null != multicloudResponseBody) { - stackErrorStatusReason.append(multicloudResponseBody.toString()); + if (logger.isDebugEnabled()) { + logger.debug("Multicloud Create Response Body: {}", multicloudResponseBody); } - MsoOpenstackException me = new MsoOpenstackException(0, "", stackErrorStatusReason.toString()); - me.addContext(CREATE_STACK); - throw me; + return getStackStatus(cloudSiteId, tenantId, canonicalName, pollForCompletion, timeoutMinutes, backout); + } + StringBuilder stackErrorStatusReason = new StringBuilder(response.getStatusInfo().getReasonPhrase()); + if (null != multicloudResponseBody) { + stackErrorStatusReason.append(multicloudResponseBody.toString()); } + MsoOpenstackException me = new MsoOpenstackException(0, "", stackErrorStatusReason.toString()); + me.addContext(CREATE_STACK); + throw me; } @Override -- cgit 1.2.3-korg