2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.services.onappf.handler;
23 import java.util.ArrayList;
24 import java.util.List;
25 import org.onap.policy.apex.services.onappf.ApexStarterConstants;
26 import org.onap.policy.apex.services.onappf.parameters.PdpStatusParameters;
27 import org.onap.policy.apex.services.onappf.parameters.ToscaPolicyTypeIdentifierParameters;
28 import org.onap.policy.common.utils.services.Registry;
29 import org.onap.policy.models.pdp.concepts.PdpResponseDetails;
30 import org.onap.policy.models.pdp.concepts.PdpStatus;
31 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
32 import org.onap.policy.models.pdp.enums.PdpResponseStatus;
33 import org.onap.policy.models.pdp.enums.PdpState;
34 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
35 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
36 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
39 * This class supports the handling of pdp messages.
41 * @author Ajith Sreekumar (ajith.sreekumar@est.tech)
43 public class PdpMessageHandler {
46 * Method to create PdpStatus message from the parameters which will be saved to the context.
48 * @param instanceId instance id of apex pdp
49 * @param pdpStatusParameters pdp status parameters read from the configuration file
51 * @return pdpStatus the pdp status message
53 public PdpStatus createPdpStatusFromParameters(final String instanceId,
54 final PdpStatusParameters pdpStatusParameters) {
55 final PdpStatus pdpStatus = new PdpStatus();
56 pdpStatus.setPdpGroup(pdpStatusParameters.getPdpGroup());
57 pdpStatus.setPdpType(pdpStatusParameters.getPdpType());
58 pdpStatus.setState(PdpState.PASSIVE);
59 pdpStatus.setHealthy(PdpHealthStatus.HEALTHY);
60 pdpStatus.setDescription(pdpStatusParameters.getDescription());
61 pdpStatus.setName(instanceId);
66 * Method to get supported policy types from the parameters.
68 * @param pdpStatusParameters pdp status parameters
69 * @return supportedPolicyTypes list of PolicyTypeIdent
71 public List<ToscaPolicyTypeIdentifier> getSupportedPolicyTypesFromParameters(
72 final PdpStatusParameters pdpStatusParameters) {
73 final List<ToscaPolicyTypeIdentifier> supportedPolicyTypes =
74 new ArrayList<>(pdpStatusParameters.getSupportedPolicyTypes().size());
75 for (final ToscaPolicyTypeIdentifierParameters policyTypeIdentParameters : pdpStatusParameters
76 .getSupportedPolicyTypes()) {
77 supportedPolicyTypes.add(new ToscaPolicyTypeIdentifier(policyTypeIdentParameters.getName(),
78 policyTypeIdentParameters.getVersion()));
80 return supportedPolicyTypes;
84 * Method to create PdpStatus message from the context, which is to be sent by apex-pdp to pap.
86 * @return PdpStatus the pdp status message
88 public PdpStatus createPdpStatusFromContext() {
89 final PdpStatus pdpStatusContext = Registry.get(ApexStarterConstants.REG_PDP_STATUS_OBJECT, PdpStatus.class);
90 final PdpStatus pdpStatus = new PdpStatus();
91 pdpStatus.setName(pdpStatusContext.getName());
92 pdpStatus.setPdpType(pdpStatusContext.getPdpType());
93 pdpStatus.setState(pdpStatusContext.getState());
94 pdpStatus.setHealthy(pdpStatusContext.getHealthy());
95 pdpStatus.setDescription(pdpStatusContext.getDescription());
96 pdpStatus.setPolicies(pdpStatusContext.getPolicies());
97 pdpStatus.setPdpGroup(pdpStatusContext.getPdpGroup());
98 pdpStatus.setPdpSubgroup(pdpStatusContext.getPdpSubgroup());
103 * Method to get a final pdp status when the apex started is shutting down.
105 * @return PdpStatus the pdp status message
107 public PdpStatus getTerminatedPdpStatus() {
108 final PdpStatus pdpStatusInContext = Registry.get(ApexStarterConstants.REG_PDP_STATUS_OBJECT, PdpStatus.class);
109 pdpStatusInContext.setState(PdpState.TERMINATED);
110 pdpStatusInContext.setDescription("Apex pdp shutting down.");
111 return createPdpStatusFromContext();
115 * Method create PdpResponseDetails which will be sent as part of pdp status to PAP.
117 * @param requestId request id of the PdpUpdate message from pap
118 * @param status response status to be sent back
119 * @param responseMessage response message to be sent back
121 * @return PdpResponseDetails
123 public PdpResponseDetails createPdpResonseDetails(final String requestId, final PdpResponseStatus status,
124 final String responseMessage) {
125 final PdpResponseDetails pdpResponseDetails = new PdpResponseDetails();
126 pdpResponseDetails.setResponseTo(requestId);
127 pdpResponseDetails.setResponseStatus(status);
128 pdpResponseDetails.setResponseMessage(responseMessage);
129 return pdpResponseDetails;
133 * Method to retrieve list of ToscaPolicyIdentifier from the list of ToscaPolicy.
135 * @param policies list of ToscaPolicy
137 * @return policyTypeIdentifiers
139 public List<ToscaPolicyIdentifier> getToscaPolicyIdentifiers(final List<ToscaPolicy> policies) {
140 final List<ToscaPolicyIdentifier> policyIdentifiers = new ArrayList<>(policies.size());
141 for (final ToscaPolicy policy : policies) {
142 if (null != policy.getName() && null != policy.getVersion()) {
143 policyIdentifiers.add(new ToscaPolicyIdentifier(policy.getName(), policy.getVersion()));
146 return policyIdentifiers;