Add support for DELETE with request body 83/37383/1
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Wed, 21 Mar 2018 09:04:21 +0000 (14:34 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Wed, 21 Mar 2018 09:04:21 +0000 (14:34 +0530)
Issue-ID: CLI-103

Change-Id: If2bca74d8963549aa8696fa896f7b1a69ff5ee05
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
profiles/http/src/main/java/org/onap/cli/fw/http/connect/OnapHttpConnection.java

index 9291ef5..093f42b 100644 (file)
@@ -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();
+        }
+    }
 }