aboutsummaryrefslogtreecommitdiffstats
path: root/prh-aai-client/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'prh-aai-client/src/main/java')
-rw-r--r--prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClientImpl.java33
-rw-r--r--prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java4
-rw-r--r--prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/RequestVerbs.java3
3 files changed, 39 insertions, 1 deletions
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClientImpl.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClientImpl.java
index 133a537e..048d9fef 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClientImpl.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/service/AAIExtendedHttpClientImpl.java
@@ -23,9 +23,11 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPatch;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.onap.dcaegen2.services.config.AAIHttpClientConfiguration;
@@ -38,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.Nonnull;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Iterator;
@@ -151,6 +154,9 @@ public class AAIExtendedHttpClientImpl implements AAIExtendedHttpClient {
return new HttpGet(extendedURI);
} else if (isExtendedURINotNull(extendedURI) && (httpRequestDetails.requestVerb().equals(RequestVerbs.PUT))) {
return new HttpPut(extendedURI);
+ } else if (isExtendedURINotNull(extendedURI) &&
+ isPatchRequestValid(httpRequestDetails.requestVerb(),httpRequestDetails.jsonBody())) {
+ return createHttpPatch(extendedURI, httpRequestDetails.jsonBody());
} else {
return null;
}
@@ -159,4 +165,31 @@ public class AAIExtendedHttpClientImpl implements AAIExtendedHttpClient {
private Boolean isExtendedURINotNull(URI extendedURI) {
return extendedURI != null ? true : false;
}
+
+ private Optional<StringEntity> createStringEntity(Optional<String> jsonBody) {
+ return Optional.of(parseJson(jsonBody).get());
+ }
+
+ private HttpPatch createHttpPatch(URI extendedURI, Optional<String> jsonBody) {
+ HttpPatch httpPatch = new HttpPatch(extendedURI);
+ Optional<StringEntity> stringEntity = createStringEntity(jsonBody);
+ httpPatch.setEntity(stringEntity.get());
+ return httpPatch;
+ }
+
+ private Optional<StringEntity> parseJson(Optional<String> jsonBody) {
+ Optional<StringEntity> stringEntity = Optional.empty();
+
+ try {
+ stringEntity = Optional.of(new StringEntity(jsonBody.get()));
+ } catch (UnsupportedEncodingException e) {
+ logger.error("Exception while parsing JSON: {}", e);
+ }
+
+ return stringEntity;
+ }
+
+ private Boolean isPatchRequestValid(RequestVerbs requestVerb, Optional<String> jsonBody) {
+ return requestVerb == RequestVerbs.PATCH && jsonBody.isPresent();
+ }
}
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java
index 896e3068..574cb22f 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/HttpRequestDetails.java
@@ -24,6 +24,7 @@ import org.immutables.value.Value;
import java.io.Serializable;
import java.util.Map;
+import java.util.Optional;
@Value.Immutable(prehash = true)
@Value.Style(stagedBuilder = true)
@@ -35,6 +36,9 @@ public abstract class HttpRequestDetails implements Serializable {
public abstract String aaiAPIPath();
@Value.Parameter
+ public abstract Optional<String> jsonBody();
+
+ @Value.Parameter
public abstract Map<String,String> queryParameters();
@Value.Parameter
diff --git a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/RequestVerbs.java b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/RequestVerbs.java
index f350aa48..9b331de0 100644
--- a/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/RequestVerbs.java
+++ b/prh-aai-client/src/main/java/org/onap/dcaegen2/services/utils/RequestVerbs.java
@@ -22,7 +22,8 @@ package org.onap.dcaegen2.services.utils;
public enum RequestVerbs {
GET,
- PUT;
+ PUT,
+ PATCH;
private RequestVerbs() {};
}