+ @Override
+ public Flux<String> deleteAllPolicies() {
+ return getPolicyTypeIdentities() //
+ .flatMapMany(types -> Flux.fromIterable(types)) //
+ .flatMap(typeId -> deletePoliciesForType(typeId)); //
+ }
+
+ private Flux<String> deletePoliciesForType(String typeId) {
+ return getPolicyIdentities(typeId) //
+ .flatMapMany(policyIds -> Flux.fromIterable(policyIds)) //
+ .flatMap(policyId -> deletePolicy(typeId, policyId)); //
+ }
+
+ private Mono<List<String>> parseJsonArrayOfString(String inputString) {
+ try {
+ List<String> arrayList = new ArrayList<>();
+ JSONArray jsonArray = new JSONArray(inputString);
+ for (int i = 0; i < jsonArray.length(); i++) {
+ arrayList.add(jsonArray.getString(i));
+ }
+ logger.debug("A1 client: received list = {}", arrayList);
+ return Mono.just(arrayList);
+ } catch (JSONException ex) { // invalid json
+ return Mono.error(ex);
+ }
+ }
+
+ @Override
+ public Mono<String> getPolicyStatus(Policy policy) {
+ // /a1-p/policytypes/{policy_type_id}/policies/{policy_instance_id}/status
+ return restClient.get("/policytypes/" + policy.type().name() + "/policies/" + policy.id() + "/status");
+
+ }