X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FSdncOscA1Client.java;h=68601735e79e30ed6749eec645c34c45deaacd66;hb=0316038265be758ae8b1bce006b5fd017185c55d;hp=ece40e14e147dcdc49c79a8d49fe98ad905df266;hpb=7ab83b874b5118ce9bbbbcab2c010c1d5f17ba98;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java index ece40e14..68601735 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Optional; import org.immutables.value.Value; +import org.json.JSONObject; import org.oransc.policyagent.configuration.ControllerConfig; import org.oransc.policyagent.configuration.RicConfig; import org.oransc.policyagent.repository.Policy; @@ -57,8 +58,8 @@ public class SdncOscA1Client implements A1Client { @Value.Immutable @org.immutables.gson.Gson.TypeAdapters - public interface AdapterResponse { - public String body(); + public interface AdapterOutput { + public Optional body(); public int httpStatus(); } @@ -217,6 +218,7 @@ public class SdncOscA1Client implements A1Client { .body(body) // .build(); final String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); + logger.debug("POST inputJsonString = {}", inputJsonString); return restClient .postWithAuthHeader(controllerUrl(rpcName), inputJsonString, this.controllerConfig.userName(), @@ -224,17 +226,25 @@ public class SdncOscA1Client implements A1Client { .flatMap(this::extractResponseBody); } - private Mono extractResponseBody(String response) { - AdapterResponse output = gson.fromJson(response, ImmutableAdapterResponse.class); - String body = output.body(); + private Mono extractResponse(JSONObject responseOutput) { + AdapterOutput output = gson.fromJson(responseOutput.toString(), ImmutableAdapterOutput.class); + Optional optionalBody = output.body(); + String body = optionalBody.isPresent() ? optionalBody.get() : ""; if (HttpStatus.valueOf(output.httpStatus()).is2xxSuccessful()) { return Mono.just(body); + } else { + logger.debug("Error response: {} {}", output.httpStatus(), body); + byte[] responseBodyBytes = body.getBytes(StandardCharsets.UTF_8); + WebClientResponseException e = new WebClientResponseException(output.httpStatus(), "statusText", null, + responseBodyBytes, StandardCharsets.UTF_8, null); + + return Mono.error(e); } - byte[] responseBodyBytes = body.getBytes(StandardCharsets.UTF_8); - WebClientResponseException e = new WebClientResponseException(output.httpStatus(), "statusText", null, - responseBodyBytes, StandardCharsets.UTF_8, null); + } - return Mono.error(e); + private Mono extractResponseBody(String responseStr) { + return SdncJsonHelper.getOutput(responseStr) // + .flatMap(this::extractResponse); } private String controllerUrl(String rpcName) {