aboutsummaryrefslogtreecommitdiffstats
path: root/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java
diff options
context:
space:
mode:
Diffstat (limited to 'a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java')
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java98
1 files changed, 40 insertions, 58 deletions
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java
index 23dcba71..53cf62a2 100644
--- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java
+++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java
@@ -33,7 +33,6 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import lombok.Getter;
@@ -105,7 +104,7 @@ public class PolicyController implements A1PolicyManagementApi {
.create(); //
@Override
- public Mono<ResponseEntity<Object>> getPolicyTypeDefinition(String policyTypeId, ServerWebExchange exchange)
+ public Mono<ResponseEntity<PolicyTypeDefinition>> getPolicyTypeDefinition(String policyTypeId, ServerWebExchange exchange)
throws EntityNotFoundException, JsonProcessingException {
PolicyType type = policyTypes.getType(policyTypeId);
JsonNode node = objectMapper.readTree(type.getSchema());
@@ -114,7 +113,7 @@ public class PolicyController implements A1PolicyManagementApi {
}
@Override
- public Mono<ResponseEntity<Object>> getPolicyTypes(String ricId, String typeName, String compatibleWithVersion, ServerWebExchange exchange) throws Exception {
+ public Mono<ResponseEntity<PolicyTypeIdList>> getPolicyTypes(String ricId, String typeName, String compatibleWithVersion, ServerWebExchange exchange) throws Exception {
if (compatibleWithVersion != null && typeName == null) {
throw new ServiceException("Parameter " + Consts.COMPATIBLE_WITH_VERSION_PARAM + " can only be used when "
+ Consts.TYPE_NAME_PARAM + " is given", HttpStatus.BAD_REQUEST);
@@ -129,12 +128,12 @@ public class PolicyController implements A1PolicyManagementApi {
@Override
- public Mono<ResponseEntity<Object>> getPolicy(String policyId, final ServerWebExchange exchange)
+ public Mono<ResponseEntity<PolicyInfo>> getPolicy(String policyId, final ServerWebExchange exchange)
throws EntityNotFoundException {
Policy policy = policies.getPolicy(policyId);
return authorization.doAccessControl(exchange.getRequest().getHeaders().toSingleValueMap(), policy, AccessType.READ) //
- .map(x -> new ResponseEntity<>((Object) toPolicyInfo(policy), HttpStatus.OK)) //
- .onErrorResume(this::handleException);
+ .map(x -> new ResponseEntity<>(toPolicyInfo(policy), HttpStatus.OK)) //
+ .doOnError(error -> logger.error(error.getMessage()));
}
@Override
@@ -173,7 +172,7 @@ public class PolicyController implements A1PolicyManagementApi {
.flatMap(tuple -> {
Ric ric = tuple.getT1();
PolicyType type = tuple.getT2();
-
+ keepServiceAlive(policyInfoValue.getServiceId());
Policy policy = Policy.builder()
.id(policyInfoValue.getPolicyId())
.json(jsonString)
@@ -265,7 +264,7 @@ public class PolicyController implements A1PolicyManagementApi {
}
@Override
- public Mono<ResponseEntity<Object>> getPolicyInstances(String policyTypeId, String ricId, String serviceId, String typeName, ServerWebExchange exchange) throws Exception {
+ public Mono<ResponseEntity<PolicyInfoList>> getPolicyInstances(String policyTypeId, String ricId, String serviceId, String typeName, ServerWebExchange exchange) throws Exception {
if ((policyTypeId != null && this.policyTypes.get(policyTypeId) == null)) {
throw new EntityNotFoundException("Policy type identity not found");
}
@@ -279,12 +278,12 @@ public class PolicyController implements A1PolicyManagementApi {
.doOnError(e -> logger.debug("Unauthorized to read policy: {}", e.getMessage()))
.onErrorResume(e -> Mono.empty())
.collectList()
- .map(authPolicies -> new ResponseEntity<>((Object) policiesToJson(authPolicies), HttpStatus.OK))
- .onErrorResume(this::handleException);
+ .map(authPolicies -> new ResponseEntity<>(policiesToJson(authPolicies), HttpStatus.OK))
+ .doOnError(error -> logger.error(error.getMessage()));
}
@Override
- public Mono<ResponseEntity<Object>> getPolicyIds(String policyTypeId, String ricId, String serviceId, String typeName, ServerWebExchange exchange) throws Exception {
+ public Mono<ResponseEntity<PolicyIdList>> getPolicyIds(String policyTypeId, String ricId, String serviceId, String typeName, ServerWebExchange exchange) throws Exception {
if ((policyTypeId != null && this.policyTypes.get(policyTypeId) == null)) {
throw new EntityNotFoundException("Policy type not found");
}
@@ -298,32 +297,27 @@ public class PolicyController implements A1PolicyManagementApi {
.doOnError(e -> logger.debug("Unauthorized to read policy: {}", e.getMessage()))
.onErrorResume(e -> Mono.empty())
.collectList()
- .map(authPolicies -> new ResponseEntity<>((Object)toPolicyIdsJson(authPolicies), HttpStatus.OK))
- .onErrorResume(this::handleException);
+ .map(authPolicies -> new ResponseEntity<>(toPolicyIdsJson(authPolicies), HttpStatus.OK))
+ .doOnError(error -> logger.error(error.getMessage()));
}
@Override
- public Mono<ResponseEntity<Object>> getPolicyStatus(String policyId, ServerWebExchange exchange) throws Exception {
+ public Mono<ResponseEntity<PolicyStatusInfo>> getPolicyStatus(String policyId, ServerWebExchange exchange) throws Exception {
Policy policy = policies.getPolicy(policyId);
return authorization.doAccessControl(exchange.getRequest().getHeaders().toSingleValueMap(), policy, AccessType.READ) //
.flatMap(notUsed -> a1ClientFactory.createA1Client(policy.getRic())) //
.flatMap(client -> client.getPolicyStatus(policy).onErrorResume(e -> Mono.just("{}"))) //
.flatMap(status -> createPolicyStatus(policy, status))
- .onErrorResume(this::handleException);
+ .doOnError(error -> logger.error(error.getMessage()));
}
- private Mono<ResponseEntity<Object>> createPolicyStatus(Policy policy, String statusFromNearRic) {
+ private Mono<ResponseEntity<PolicyStatusInfo>> createPolicyStatus(Policy policy, String statusFromNearRic) {
- try {
PolicyStatusInfo policyStatusInfo = new PolicyStatusInfo();
policyStatusInfo.setLastModified(policy.getLastModified().toString());
policyStatusInfo.setStatus(fromJson(statusFromNearRic));
- String policyStatusInfoAsString = objectMapper.writeValueAsString(policyStatusInfo);
- return Mono.just(new ResponseEntity<>(policyStatusInfoAsString, HttpStatus.OK));
- } catch (JsonProcessingException ex) {
- throw new RuntimeException(ex);
- }
+ return Mono.just(new ResponseEntity<>(policyStatusInfo, HttpStatus.OK));
}
private void keepServiceAlive(String name) {
@@ -334,69 +328,57 @@ public class PolicyController implements A1PolicyManagementApi {
}
private PolicyInfo toPolicyInfo(Policy policy) {
- PolicyInfo policyInfo = new PolicyInfo()
- .policyId(policy.getId())
- .policyData(gson.fromJson(policy.getJson(), Map.class))
- .ricId(policy.getRic().id())
- .policytypeId(policy.getType().getId())
- .serviceId(policy.getOwnerServiceId())
- ._transient(policy.isTransient());
- if (!policy.getStatusNotificationUri().isEmpty()) {
- policyInfo.setStatusNotificationUri(policy.getStatusNotificationUri());
- }
- return policyInfo;
- }
-
- private String toPolicyInfoString(Policy policy) {
-
- try {
- return objectMapper.writeValueAsString(toPolicyInfo(policy));
- } catch (JsonProcessingException ex) {
- throw new RuntimeException(ex);
- }
+ try {
+ PolicyInfo policyInfo = new PolicyInfo()
+ .policyId(policy.getId())
+ .policyData(objectMapper.readTree(policy.getJson()))
+ .ricId(policy.getRic().id())
+ .policytypeId(policy.getType().getId())
+ .serviceId(policy.getOwnerServiceId())
+ ._transient(policy.isTransient());
+ if (!policy.getStatusNotificationUri().isEmpty()) {
+ policyInfo.setStatusNotificationUri(policy.getStatusNotificationUri());
+ }
+ return policyInfo;
+ } catch (JsonProcessingException ex) {
+ throw new RuntimeException(ex);
+ }
}
- private String policiesToJson(Collection<Policy> policies) {
+ private PolicyInfoList policiesToJson(Collection<Policy> policies) {
- try {
List<PolicyInfo> policiesList = new ArrayList<>(policies.size());
PolicyInfoList policyInfoList = new PolicyInfoList();
for (Policy policy : policies) {
policiesList.add(toPolicyInfo(policy));
}
policyInfoList.setPolicies(policiesList);
- return objectMapper.writeValueAsString(policyInfoList);
- } catch(JsonProcessingException ex) {
- throw new RuntimeException(ex);
- }
+ return policyInfoList;
}
private Object fromJson(String jsonStr) {
return gson.fromJson(jsonStr, Object.class);
}
- private String toPolicyTypeIdsJson(Collection<PolicyType> policyTypes) throws JsonProcessingException {
+ private PolicyTypeIdList toPolicyTypeIdsJson(Collection<PolicyType> policyTypes) {
+ List<String> policyTypeList = new ArrayList<>(policyTypes.size());
PolicyTypeIdList idList = new PolicyTypeIdList();
for (PolicyType policyType : policyTypes) {
- idList.addPolicytypeIdsItem(policyType.getId());
+ policyTypeList.add(policyType.getId());
}
-
- return objectMapper.writeValueAsString(idList);
+ idList.setPolicytypeIds(policyTypeList);
+ return idList;
}
- private String toPolicyIdsJson(Collection<Policy> policies) {
+ private PolicyIdList toPolicyIdsJson(Collection<Policy> policies) {
- try {
List<String> policyIds = new ArrayList<>(policies.size());
PolicyIdList idList = new PolicyIdList();
for (Policy policy : policies) {
policyIds.add(policy.getId());
}
idList.setPolicyIds(policyIds);
- return objectMapper.writeValueAsString(idList);
- } catch (JsonProcessingException ex) {
- throw new RuntimeException(ex);
- }
+ return idList;
}
}