Improved java class documentation
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / clients / StdA1ClientVersion1.java
index 6b9ef17..f5486a5 100644 (file)
@@ -29,10 +29,60 @@ import org.oransc.policyagent.repository.Policy;
 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 final AsyncRestClient restClient;
 
-    private final A1UriBuilder uri;
+    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) {
         this(new AsyncRestClient(""), ricConfig);
@@ -40,7 +90,7 @@ public class StdA1ClientVersion1 implements A1Client {
 
     public StdA1ClientVersion1(AsyncRestClient restClient, RicConfig ricConfig) {
         this.restClient = restClient;
-        this.uri = new StdA1UriBuilderVersion1(ricConfig);
+        this.uri = new UriBuilder(ricConfig);
     }
 
     @Override
@@ -51,9 +101,7 @@ public class StdA1ClientVersion1 implements A1Client {
 
     @Override
     public Mono<String> putPolicy(Policy policy) {
-
-        return restClient.put(uri.createPutPolicyUri(policy), policy.json()) //
-            .flatMap(JsonHelper::validateJson);
+        return restClient.put(uri.createPutPolicyUri(policy.type().name(), policy.id()), policy.json());
     }
 
     @Override
@@ -85,15 +133,15 @@ public class StdA1ClientVersion1 implements A1Client {
 
     @Override
     public Mono<String> getPolicyStatus(Policy policy) {
-        return restClient.get(uri.createGetPolicyStatusUri(policy.id()));
+        return restClient.get(uri.createGetPolicyStatusUri(policy.type().name(), policy.id()));
     }
 
     private Flux<String> getPolicyIds() {
         return restClient.get(uri.createGetPolicyIdsUri()) //
-            .flatMapMany(JsonHelper::parseJsonArrayOfString);
+            .flatMapMany(SdncJsonHelper::parseJsonArrayOfString);
     }
 
     private Mono<String> deletePolicyById(String policyId) {
-        return restClient.delete(uri.createDeleteUri(policyId));
+        return restClient.delete(uri.createDeleteUri("", policyId));
     }
 }