diff options
Diffstat (limited to 'profiles/http/src/main')
3 files changed, 45 insertions, 14 deletions
diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java b/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java index 9291ef51..093f42b5 100644 --- a/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java +++ b/profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java @@ -35,10 +35,11 @@ import javax.net.ssl.X509TrustManager; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; -import org.apache.http.ParseException; +import org.apache.http.annotation.NotThreadSafe; import org.apache.http.client.CookieStore; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; @@ -63,6 +64,7 @@ import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; +import org.onap.cli.fw.conf.OnapCommandConstants; import org.onap.cli.fw.http.conf.OnapCommandHttpConstants; import org.onap.cli.fw.http.error.OnapCommandHttpFailure; import org.slf4j.Logger; @@ -294,7 +296,7 @@ public class OnapHttpConnection { if (input.isBinaryData()) { httpPost.setEntity(getMultipartEntity(input)); } else { - httpPost.setEntity(this.getStringEntity(input)); + httpPost.setEntity(this.getStringEntity(input)); } requestBase = httpPost; } else if ("put".equals(input.getMethod())) { @@ -304,7 +306,13 @@ public class OnapHttpConnection { } else if ("get".equals(input.getMethod())) { requestBase = new HttpGet(); } else if ("delete".equals(input.getMethod())) { - requestBase = new HttpDelete(); + if (!input.getBody().isEmpty()) { + HttpDeleteWithBody httpDelete = new HttpDeleteWithBody(); + httpDelete.setEntity(this.getStringEntity(input)); + requestBase = httpDelete; + } else { + requestBase = new HttpDelete(); + } } else { throw new IllegalArgumentException("Invalid HTTP method"); } @@ -332,7 +340,7 @@ public class OnapHttpConnection { result.setStatus(resp.getStatusLine().getStatusCode()); result.setRespHeaders(this.getHttpHeaders(resp)); this.updateResultFromCookies(result, cookieStore.getCookies()); - } catch (ParseException | IOException e) { + } catch (Exception e) { // NOSONAR throw new OnapCommandHttpFailure(e); } finally { String info = input + " " + result; @@ -360,4 +368,16 @@ public class OnapHttpConnection { multipartEntity.addPart(fileName, fileBody); return multipartEntity; } + + @NotThreadSafe + static class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase { + + public String getMethod() { + return OnapCommandHttpConstants.DELETE; + } + + public HttpDeleteWithBody() { + super(); + } + } } diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/schema/OnapCommandSchemaHttpLoader.java b/profiles/http/src/main/java/org/onap/cli/fw/http/schema/OnapCommandSchemaHttpLoader.java index 973c4ae1..52b7571d 100644 --- a/profiles/http/src/main/java/org/onap/cli/fw/http/schema/OnapCommandSchemaHttpLoader.java +++ b/profiles/http/src/main/java/org/onap/cli/fw/http/schema/OnapCommandSchemaHttpLoader.java @@ -133,9 +133,18 @@ public class OnapCommandSchemaHttpLoader { cmd.getInput().setReqQueries(query); break; case OnapCommandHttpConstants.CONTEXT: - Map<String, String> context = (Map<String, String>) map.get(key2); + Map<String, Object> context = (Map<String, Object>) map.get(key2); + + for (String key: context.keySet()) { + switch (key) { + case OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES: + Boolean flag = (Boolean) context.get(OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES); + cmd.getInput().getContext().put(OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES, flag.toString()); + break; + } + } + - cmd.getInput().getContext().putAll(context); break; case OnapCommandHttpConstants.MULTIPART_ENTITY_NAME: Object multipartEntityName = map.get(key2); @@ -376,15 +385,17 @@ public class OnapCommandSchemaHttpLoader { } String body = String.valueOf(bodyString); - JSONObject obj = null; - try { - obj = new ObjectMapper().readValue(body, JSONObject.class); - } catch (IOException e1) { // NOSONAR - errorList.add(OnapCommandHttpConstants.HTTP_BODY_FAILED_PARSING); - } - if (obj == null || "".equals(obj.toString())) { + + if (body == null || "".equals(body)) { errorList.add(OnapCommandHttpConstants.HTTP_BODY_JSON_EMPTY); + } else { + try { + new ObjectMapper().readValue(body, JSONObject.class); + } catch (IOException e1) { // NOSONAR + errorList.add(OnapCommandHttpConstants.HTTP_BODY_FAILED_PARSING); + } } + OnapCommandUtils.parseParameters(body, bodyParamNames); return bodyParamNames; diff --git a/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java b/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java index 43a80181..ed415335 100644 --- a/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java +++ b/profiles/http/src/main/java/org/onap/cli/fw/http/utils/OnapCommandHttpUtils.java @@ -89,7 +89,7 @@ public class OnapCommandHttpUtils { boolean isRemoveEmptyNodes = Boolean.parseBoolean(input.getContext().getOrDefault(OnapCommandHttpConstants.CONTEXT_REMOVE_EMPTY_JSON_NODES, "false")); if (isRemoveEmptyNodes) { - input.setBody(OnapCommandHttpUtils.normalizeJson(input.getBody())); + inp.setBody(OnapCommandHttpUtils.normalizeJson(inp.getBody())); } return inp; |