Java 17 Upgrade
[policy/models.git] / models-interactions / model-actors / actor.xacml / src / main / java / org / onap / policy / controlloop / actor / xacml / ConfigureOperation.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2023 Nordix Foundation.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.controlloop.actor.xacml;
23
24 import jakarta.ws.rs.core.Response;
25 import java.util.Collections;
26 import java.util.Map;
27 import java.util.concurrent.CompletableFuture;
28 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
29 import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
30 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
31 import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig;
32 import org.onap.policy.models.decisions.concepts.DecisionRequest;
33 import org.onap.policy.models.decisions.concepts.DecisionResponse;
34
35 public class ConfigureOperation extends DecisionOperation {
36
37     // operation name
38     public static final String NAME = "Configure";
39
40     /**
41      * Constructs the object.
42      *
43      * @param params operation parameters
44      * @param config configuration for this operation
45      */
46     public ConfigureOperation(ControlLoopOperationParams params, HttpConfig config) {
47         super(params, config, Collections.emptyList());
48     }
49
50     @Override
51     protected DecisionRequest makeRequest() {
52         if (params.getPayload() == null) {
53             throw new IllegalArgumentException("missing payload");
54         }
55
56         DecisionRequest req = config.makeRequest();
57         req.setRequestId(getSubRequestId());
58         req.setResource(params.getPayload());
59
60         return req;
61     }
62
63     @Override
64     protected CompletableFuture<OperationOutcome> postProcessResponse(OperationOutcome outcome, String url,
65                     Response rawResponse, DecisionResponse response) {
66
67         outcome.setResponse(response);
68
69         // check for policies
70         Map<String, Object> policies = response.getPolicies();
71         if (policies == null || policies.isEmpty()) {
72             outcome.setResult(OperationResult.FAILURE);
73             outcome.setMessage("response contains no policies");
74             return CompletableFuture.completedFuture(outcome);
75         }
76
77         outcome.setResult(OperationResult.SUCCESS);
78
79         // set the message
80         outcome.setMessage(response.getMessage());
81
82         return CompletableFuture.completedFuture(outcome);
83     }
84 }