X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FStdA1ClientVersion1.java;h=4ebc25c679adf54b55bc82939da19d86000907d6;hb=6a39814272307d0207222c9229b0d765ac062bf0;hp=f8ea2ee9c3aac278075ed74ab98743aac0281fdf;hpb=be2000ec2d21151b42cb559ef881695eb32e35e9;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1ClientVersion1.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1ClientVersion1.java index f8ea2ee9..4ebc25c6 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1ClientVersion1.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/StdA1ClientVersion1.java @@ -20,44 +20,78 @@ package org.oransc.policyagent.clients; +import java.util.Arrays; import java.util.List; import org.oransc.policyagent.configuration.RicConfig; +import org.oransc.policyagent.configuration.WebClientConfig; import org.oransc.policyagent.repository.Policy; -import org.springframework.web.util.UriComponentsBuilder; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +/** + * Client for accessing standard A1 REST API version 1.1 + */ public class StdA1ClientVersion1 implements A1Client { - private static final String URL_PREFIX = "/A1-P/v1"; - - private static final String POLICY_TYPES_URI = "/policytypes"; - private static final String POLICY_TYPE_ID = "policyTypeId"; - - private static final String POLICIES_URI = "/policies"; - - private static final UriComponentsBuilder POLICY_TYPE_SCHEMA_URI = - UriComponentsBuilder.fromPath("/policytypes/{policy-type-name}"); - private static final UriComponentsBuilder POLICY_URI = - UriComponentsBuilder.fromPath("/policies/{policy-id}").queryParam(POLICY_TYPE_ID, "{policy-type-name}"); - - private static final UriComponentsBuilder POLICY_DELETE_URI = - UriComponentsBuilder.fromPath("/policies/{policy-id}"); - - private static final UriComponentsBuilder POLICY_STATUS_URI = - UriComponentsBuilder.fromPath("/policies/{policy-id}/status"); + public static class UriBuilder implements A1UriBuilder { + + private final RicConfig ricConfig; + + public UriBuilder(RicConfig ricConfig) { + this.ricConfig = ricConfig; + } + + /** + * /A1-P/v1/policies/{policyId} + */ + @Override + public String createPutPolicyUri(String type, String policyId) { + return policiesBaseUri() + policyId; + } + + /** + * /A1-P/v1/policies + */ + public String createGetPolicyIdsUri() { + return baseUri() + "/policies"; + } + + /** + * /A1-P/v1/policies/{policyId} + */ + @Override + public String createDeleteUri(String type, String policyId) { + return policiesBaseUri() + policyId; + } + + /** + * /A1-P/v1/policies/{policyId}/status + */ + public String createGetPolicyStatusUri(String type, String policyId) { + return policiesBaseUri() + policyId + "/status"; + } + + private String baseUri() { + return ricConfig.baseUrl() + "/A1-P/v1"; + } + + private String policiesBaseUri() { + return createGetPolicyIdsUri() + "/"; + } + } private final AsyncRestClient restClient; + private final UriBuilder uri; - public StdA1ClientVersion1(RicConfig ricConfig) { - String baseUrl = ricConfig.baseUrl() + URL_PREFIX; - this.restClient = new AsyncRestClient(baseUrl); + public StdA1ClientVersion1(RicConfig ricConfig, WebClientConfig webClientConfig) { + this(new AsyncRestClient("", webClientConfig), ricConfig); } - public StdA1ClientVersion1(AsyncRestClient restClient) { + public StdA1ClientVersion1(AsyncRestClient restClient, RicConfig ricConfig) { this.restClient = restClient; + this.uri = new UriBuilder(ricConfig); } @Override @@ -68,23 +102,17 @@ public class StdA1ClientVersion1 implements A1Client { @Override public Mono putPolicy(Policy policy) { - String uri = POLICY_URI.buildAndExpand(policy.id(), policy.type().name()).toUriString(); - return restClient.put(uri, policy.json()) // - .flatMap(JsonHelper::validateJson); + return restClient.put(uri.createPutPolicyUri(policy.type().name(), policy.id()), policy.json()); } @Override public Mono> getPolicyTypeIdentities() { - return restClient.get(POLICY_TYPES_URI) // - .flatMapMany(JsonHelper::parseJsonArrayOfString) // - .collectList(); + return Mono.just(Arrays.asList("")); } @Override public Mono getPolicyTypeSchema(String policyTypeId) { - String uri = POLICY_TYPE_SCHEMA_URI.buildAndExpand(policyTypeId).toUriString(); - return restClient.get(uri) // - .flatMap(JsonHelper::extractPolicySchema); + return Mono.just("{}"); } @Override @@ -100,23 +128,21 @@ public class StdA1ClientVersion1 implements A1Client { @Override public Mono getProtocolVersion() { - return getPolicyTypeIdentities() // - .flatMap(x -> Mono.just(A1ProtocolType.STD_V1)); + return getPolicyIdentities() // + .flatMap(x -> Mono.just(A1ProtocolType.STD_V1_1)); } @Override public Mono getPolicyStatus(Policy policy) { - String uri = POLICY_STATUS_URI.buildAndExpand(policy.id()).toUriString(); - return restClient.get(uri); + return restClient.get(uri.createGetPolicyStatusUri(policy.type().name(), policy.id())); } private Flux getPolicyIds() { - return restClient.get(POLICIES_URI) // - .flatMapMany(JsonHelper::parseJsonArrayOfString); + return restClient.get(uri.createGetPolicyIdsUri()) // + .flatMapMany(SdncJsonHelper::parseJsonArrayOfString); } private Mono deletePolicyById(String policyId) { - String uri = POLICY_DELETE_URI.buildAndExpand(policyId).toUriString(); - return restClient.delete(uri); + return restClient.delete(uri.createDeleteUri("", policyId)); } }