+ public ToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
+ throws PfModelException {
+
+ synchronized (providerLockObject) {
+ LOGGER.debug("->getFilteredPolicies: filter={}", filter);
+ String version = ToscaPolicyFilter.LATEST_VERSION.equals(filter.getVersion()) ? null : filter.getVersion();
+
+ SimpleToscaProvider simpleToscaProvider = new SimpleToscaProvider();
+ final JpaToscaServiceTemplate dbServiceTemplate =
+ simpleToscaProvider.getPolicies(dao, filter.getName(), version);
+
+ List<ToscaPolicy> filteredPolicies =
+ dbServiceTemplate.getTopologyTemplate().getPolicies().toAuthorativeList();
+ filteredPolicies = filter.filter(filteredPolicies);
+
+ if (CollectionUtils.isEmpty(filteredPolicies)) {
+ throw new PfModelRuntimeException(Response.Status.NOT_FOUND,
+ "policies for filter " + filter.toString() + " do not exist");
+ }
+
+ JpaToscaServiceTemplate filteredServiceTemplate = new JpaToscaServiceTemplate();
+
+ for (ToscaPolicy policy : filteredPolicies) {
+ JpaToscaServiceTemplate cascadedServiceTemplate =
+ simpleToscaProvider.getCascadedPolicies(dbServiceTemplate, policy.getName(), policy.getVersion());
+
+ filteredServiceTemplate =
+ ToscaServiceTemplateUtils.addFragment(filteredServiceTemplate, cascadedServiceTemplate);
+ }
+
+ ToscaServiceTemplate returnServiceTemplate = filteredServiceTemplate.toAuthorative();
+
+ LOGGER.debug("<-getFilteredPolicies: filter={}, serviceTemplate={}", filter, returnServiceTemplate);
+ return returnServiceTemplate;
+ }