Change formatting of API documentation
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / clients / AsyncRestClient.java
index 83592ec..f0b2ce3 100644 (file)
@@ -34,6 +34,7 @@ import org.springframework.http.client.reactive.ReactorClientHttpConnector;
 import org.springframework.lang.Nullable;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec;
+import org.springframework.web.reactive.function.client.WebClientResponseException;
 
 import reactor.core.publisher.Mono;
 import reactor.netty.http.client.HttpClient;
@@ -101,6 +102,13 @@ public class AsyncRestClient {
         return retrieve(request);
     }
 
+    public Mono<ResponseEntity<String>> putForEntity(String uri) {
+        logger.debug("PUT uri = '{}{}''", baseUrl, uri);
+        RequestHeadersSpec<?> request = client.put() //
+            .uri(uri);
+        return retrieve(request);
+    }
+
     public Mono<String> put(String uri, String body) {
         return putForEntity(uri, body) //
             .flatMap(this::toBody);
@@ -130,10 +138,21 @@ public class AsyncRestClient {
 
     private Mono<ResponseEntity<String>> retrieve(RequestHeadersSpec<?> request) {
         return request.retrieve() //
-            .toEntity(String.class);
+            .toEntity(String.class) //
+            .doOnError(this::onHttpError);
+    }
+
+    private void onHttpError(Throwable t) {
+        if (t instanceof WebClientResponseException) {
+            WebClientResponseException exception = (WebClientResponseException) t;
+            logger.debug("HTTP error status = '{}', body '{}'", exception.getStatusCode(),
+                exception.getResponseBodyAsString());
+        } else {
+            logger.debug("HTTP error: {}", t.getMessage());
+        }
     }
 
-    Mono<String> toBody(ResponseEntity<String> entity) {
+    private Mono<String> toBody(ResponseEntity<String> entity) {
         if (entity.getBody() == null) {
             return Mono.just("");
         } else {