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=f5486a58e949057c968b61db476d31f41b913592;hb=2bfc144d136e8895aa5462cc331841a5d8107683;hp=7b194b443f98d21df08777f70999b8bc78aa0876;hpb=96805287db06a91e569c184cc34ba4e69e4d22b2;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 7b194b44..f5486a58 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 @@ -25,22 +25,72 @@ import java.util.List; import org.oransc.policyagent.configuration.RicConfig; 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 { + + 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) { - final String urlPrefix = "/A1-P/v1"; - String baseUrl = ricConfig.baseUrl() + urlPrefix; - this.restClient = new AsyncRestClient(baseUrl); + this(new AsyncRestClient(""), ricConfig); } - public StdA1ClientVersion1(AsyncRestClient restClient) { + public StdA1ClientVersion1(AsyncRestClient restClient, RicConfig ricConfig) { this.restClient = restClient; + this.uri = new UriBuilder(ricConfig); } @Override @@ -51,10 +101,7 @@ public class StdA1ClientVersion1 implements A1Client { @Override public Mono putPolicy(Policy policy) { - final UriComponentsBuilder policyUri = UriComponentsBuilder.fromPath("/policies/{policy-id}"); - final String uri = policyUri.buildAndExpand(policy.id()).toUriString(); - return restClient.put(uri, policy.json()) // - .flatMap(JsonHelper::validateJson); + return restClient.put(uri.createPutPolicyUri(policy.type().name(), policy.id()), policy.json()); } @Override @@ -80,26 +127,21 @@ public class StdA1ClientVersion1 implements A1Client { @Override public Mono getProtocolVersion() { - return getPolicyTypeIdentities() // + return getPolicyIdentities() // .flatMap(x -> Mono.just(A1ProtocolType.STD_V1_1)); } @Override public Mono getPolicyStatus(Policy policy) { - final UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/policies/{policy-id}/status"); - String uri = builder.buildAndExpand(policy.id()).toUriString(); - return restClient.get(uri); + return restClient.get(uri.createGetPolicyStatusUri(policy.type().name(), policy.id())); } private Flux getPolicyIds() { - final String uri = "/policies"; - return restClient.get(uri) // - .flatMapMany(JsonHelper::parseJsonArrayOfString); + return restClient.get(uri.createGetPolicyIdsUri()) // + .flatMapMany(SdncJsonHelper::parseJsonArrayOfString); } private Mono deletePolicyById(String policyId) { - final UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/policies/{policy-id}"); - String uri = builder.buildAndExpand(policyId).toUriString(); - return restClient.delete(uri); + return restClient.delete(uri.createDeleteUri("", policyId)); } }