/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2020 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
+
+import javax.ws.rs.core.Response.Status;
import lombok.NonNull;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
LOGGER.debug("->getPolicyTypes: name={}, version={}", name, version);
- ToscaServiceTemplate serviceTemplate =
- new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative();
+ JpaToscaServiceTemplate jpaServiceTemplate = new SimpleToscaProvider().getPolicyTypes(dao, name, version);
+
+ ToscaServiceTemplate serviceTemplate = jpaServiceTemplate.toAuthorative();
LOGGER.debug("<-getPolicyTypes: name={}, version={}, serviceTemplate={}", name, version, serviceTemplate);
return serviceTemplate;
LOGGER.debug("->getPolicyTypeList: name={}, version={}", name, version);
- List<ToscaPolicyType> policyTypeList = asConceptList(
- new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative().getPolicyTypes());
+ List<ToscaPolicyType> policyTypeList;
+
+ try {
+ policyTypeList = new ArrayList<>(new SimpleToscaProvider().getPolicyTypes(dao, name, version)
+ .toAuthorative().getPolicyTypes().values());
+ } catch (PfModelRuntimeException pfme) {
+ return handlePfModelRuntimeException(pfme);
+ }
LOGGER.debug("<-getPolicyTypeList: name={}, version={}, policyTypeList={}", name, version, policyTypeList);
return policyTypeList;
ToscaServiceTemplate serviceTemplate =
new SimpleToscaProvider().getPolicyTypes(dao, null, null).toAuthorative();
- List<ToscaPolicyType> filteredPolicyTypes = asConceptList(serviceTemplate.getPolicyTypes());
+ List<ToscaPolicyType> filteredPolicyTypes = new ArrayList<>(serviceTemplate.getPolicyTypes().values());
filteredPolicyTypes = filter.filter(filteredPolicyTypes);
serviceTemplate.setPolicyTypes(asConceptMap(filteredPolicyTypes));
LOGGER.debug("<-getFilteredPolicyTypeList: filter={}, filteredPolicyTypeList={}", filter,
filteredPolicyTypeList);
+
return filteredPolicyTypeList;
}
throws PfModelException {
LOGGER.debug("->getPolicyList: name={}, version={}", name, version);
- List<ToscaPolicy> policyList = asConceptList(new SimpleToscaProvider().getPolicies(dao, name, version)
- .toAuthorative().getToscaTopologyTemplate().getPolicies());
+ List<ToscaPolicy> policyList;
+
+ try {
+ policyList = asConceptList(new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative()
+ .getToscaTopologyTemplate().getPolicies());
+ } catch (PfModelRuntimeException pfme) {
+ return handlePfModelRuntimeException(pfme);
+ }
LOGGER.debug("<-getPolicyList: name={}, version={}, policyTypeList={}", name, version, policyList);
return policyList;
List<ToscaPolicy> filteredPolicies = asConceptList(serviceTemplate.getToscaTopologyTemplate().getPolicies());
filteredPolicies = filter.filter(filteredPolicies);
- serviceTemplate.getToscaTopologyTemplate().setPolicies(asConceptMap(filteredPolicies));
+ serviceTemplate.getToscaTopologyTemplate().setPolicies(asConceptMapList(filteredPolicies));
LOGGER.debug("<-getFilteredPolicies: filter={}, serviceTemplate={}", filter, serviceTemplate);
return serviceTemplate;
* @param conceptList the concept list
* @return the list of concept map
*/
- private <T extends ToscaEntity> List<Map<String, T>> asConceptMap(List<T> conceptList) {
+ private <T extends ToscaEntity> List<Map<String, T>> asConceptMapList(List<T> conceptList) {
List<Map<String, T>> toscaEntityMapList = new ArrayList<>();
for (T concept : conceptList) {
- Map<String, T> conceptMap = new LinkedHashMap<>();
+ Map<String, T> conceptMap = new TreeMap<>();
conceptMap.put(concept.getName(), concept);
toscaEntityMapList.add(conceptMap);
}
return toscaEntityMapList;
}
+
+ /**
+ * Return the contents of a list of concepts as map of concepts.
+ *
+ * @param conceptList the concept list
+ * @return the list of concept map
+ */
+ private <T extends ToscaEntity> Map<String, T> asConceptMap(List<T> conceptList) {
+ Map<String, T> conceptMap = new LinkedHashMap<>();
+ for (T concept : conceptList) {
+ conceptMap.put(concept.getName(), concept);
+ }
+
+ return conceptMap;
+ }
+
+ /**
+ * Handle a PfModelRuntimeException on a list call.
+ *
+ * @param pfme the model exception
+ * @return an empty list on 404
+ */
+ private <T extends ToscaEntity> List<T> handlePfModelRuntimeException(final PfModelRuntimeException pfme) {
+ if (Status.NOT_FOUND.equals(pfme.getErrorResponse().getResponseCode())) {
+ return Collections.emptyList();
+ } else {
+ throw pfme;
+ }
+ }
}