import java.util.List;\r
import java.util.UUID;\r
import javax.ws.rs.core.Response.Status;\r
+import lombok.RequiredArgsConstructor;\r
import org.onap.policy.api.main.exception.PolicyApiRuntimeException;\r
import org.onap.policy.api.main.rest.provider.HealthCheckProvider;\r
-import org.onap.policy.api.main.rest.provider.PolicyProvider;\r
-import org.onap.policy.api.main.rest.provider.PolicyTypeProvider;\r
import org.onap.policy.api.main.rest.provider.StatisticsProvider;\r
+import org.onap.policy.api.main.service.ToscaServiceTemplateService;\r
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;\r
import org.onap.policy.common.endpoints.report.HealthCheckReport;\r
import org.onap.policy.common.endpoints.utils.NetLoggerUtil;\r
import org.onap.policy.models.base.PfModelException;\r
import org.onap.policy.models.base.PfModelRuntimeException;\r
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.http.HttpMethod;\r
import org.springframework.http.HttpStatus;\r
import org.springframework.http.ResponseEntity;\r
@ExtensionProperty(name = "component", value = "Policy Framework")})}),\r
schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS},\r
securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")}))\r
+@RequiredArgsConstructor\r
public class ApiRestController extends CommonRestController {\r
\r
private enum Target {\r
OTHER\r
}\r
\r
- @Autowired\r
- private PolicyProvider policyProvider;\r
-\r
- @Autowired\r
- private HealthCheckProvider healthCheckProvider;\r
-\r
- @Autowired\r
- private PolicyTypeProvider policyTypeProvider;\r
-\r
- @Autowired\r
- private ApiStatisticsManager mgr;\r
-\r
- @Autowired\r
- private StatisticsProvider statisticsProvider;\r
+ private final ToscaServiceTemplateService toscaServiceTemplateService;\r
+ private final HealthCheckProvider healthCheckProvider;\r
+ private final ApiStatisticsManager mgr;\r
+ private final StatisticsProvider statisticsProvider;\r
\r
/**\r
* Retrieves the healthcheck status of the API component.\r
@RequestHeader(name = REQUEST_ID_NAME, required = false)\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.fetchPolicyTypes(null, null);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.fetchPolicyTypes(null, null);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
@RequestHeader(name = REQUEST_ID_NAME, required = false)\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.fetchPolicyTypes(policyTypeId, null);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.fetchPolicyTypes(policyTypeId, null);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
@RequestHeader(name = REQUEST_ID_NAME, required = false)\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.fetchPolicyTypes(policyTypeId, versionId);\r
+ ToscaServiceTemplate serviceTemplate =\r
+ toscaServiceTemplateService.fetchPolicyTypes(policyTypeId, versionId);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
@RequestHeader(name = REQUEST_ID_NAME, required = false)\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.fetchLatestPolicyTypes(policyTypeId);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.fetchLatestPolicyTypes(policyTypeId);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policytypes", toJson(body));\r
}\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.createPolicyType(body);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicyType(body);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.POST);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
final var msg = "POST /policytypes";\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.POST);\r
@RequestHeader(name = REQUEST_ID_NAME, required = false)\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyTypeProvider.deletePolicyType(policyTypeId, versionId);\r
+ ToscaServiceTemplate serviceTemplate =\r
+ toscaServiceTemplateService.deletePolicyType(policyTypeId, versionId);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.OK, HttpMethod.DELETE);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
var msg = String.format("DELETE /policytypes/%s/versions/%s", policyTypeId, versionId);\r
updateApiStatisticsCounter(Target.POLICY_TYPE, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.DELETE);\r
+ " policies (default), REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchPolicies(policyTypeId, policyTypeVersion, null, null, mode);\r
+ toscaServiceTemplateService.fetchPolicies(policyTypeId, policyTypeVersion, null, null, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
+ " REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchPolicies(policyTypeId, policyTypeVersion, policyId, null, mode);\r
+ toscaServiceTemplateService.fetchPolicies(policyTypeId, policyTypeVersion, policyId, null, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
- var msg = String.format("/policytypes/%s/versions/$s/policies/%s",\r
+ var msg = String.format("/policytypes/%s/versions/%s/policies/%s",\r
policyTypeId, policyTypeVersion, policyId);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.GET);\r
@RequestParam(name = "mode", defaultValue = "bare") @ApiParam("Fetch mode for policies, BARE for bare policies"\r
+ " (default), REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
- ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchPolicies(policyTypeId, policyTypeVersion, policyId, policyVersion, mode);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService\r
+ .fetchPolicies(policyTypeId, policyTypeVersion, policyId, policyVersion, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
+ "policies (default), REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchLatestPolicies(policyTypeId, policyTypeVersion, policyId, mode);\r
+ toscaServiceTemplateService.fetchLatestPolicies(policyTypeId, policyTypeVersion, policyId, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
"/policytypes/" + policyTypeId + "/versions/" + policyTypeVersion + "/policies", toJson(body));\r
}\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(policyTypeId, policyTypeVersion, body);\r
+ ToscaServiceTemplate serviceTemplate =\r
+ toscaServiceTemplateService.createPolicy(policyTypeId, policyTypeVersion, body);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.POST);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
var msg = String.format("POST /policytypes/%s/versions/%s/policies", policyTypeId, policyTypeVersion);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.POST);\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.deletePolicy(policyTypeId, policyTypeVersion, policyId, policyVersion);\r
+ toscaServiceTemplateService.deletePolicy(policyTypeId, policyTypeVersion, policyId, policyVersion);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.DELETE);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
var msg = String.format("DELETE /policytypes/%s/versions/%s/policies/%s/versions/%s",\r
policyTypeId, policyTypeVersion, policyId, policyVersion);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
+ " policies (default), REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchPolicies(null, null, null, null, mode);\r
+ toscaServiceTemplateService.fetchPolicies(null, null, null, null, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
+ " policies (default), REFERENCED for fully referenced policies") PolicyFetchMode mode) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.fetchPolicies(null, null, policyId, policyVersion, mode);\r
+ toscaServiceTemplateService.fetchPolicies(null, null, policyId, policyVersion, mode);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.GET);\r
return makeOkResponse(requestId, serviceTemplate);\r
} catch (PfModelException | PfModelRuntimeException pfme) {\r
NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policies", toJson(body));\r
}\r
try {\r
- ToscaServiceTemplate serviceTemplate = policyProvider.createPolicies(body);\r
+ ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicies(body);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.POST);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
final var msg = "POST /policies";\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.POST);\r
@ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId) {\r
try {\r
ToscaServiceTemplate serviceTemplate =\r
- policyProvider.deletePolicy(null, null, policyId, policyVersion);\r
+ toscaServiceTemplateService.deletePolicy(null, null, policyId, policyVersion);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.OK, HttpMethod.DELETE);\r
return makeOkResponse(requestId, serviceTemplate);\r
- } catch (PfModelException | PfModelRuntimeException pfme) {\r
+ } catch (PfModelRuntimeException pfme) {\r
var msg = String.format("DELETE /policies/%s/versions/%s", policyId, policyVersion);\r
updateApiStatisticsCounter(Target.POLICY, HttpStatus.resolve(pfme.getErrorResponse().getResponseCode()\r
.getStatusCode()), HttpMethod.DELETE);\r
package org.onap.policy.api.main.service;
import java.util.List;
+import java.util.Optional;
import javax.ws.rs.core.Response;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
*/
public ToscaServiceTemplate fetchPolicyTypes(final String policyTypeName, final String policyTypeVersion)
throws PfModelException {
- return getFilteredPolicyTypes(policyTypeName, policyTypeVersion);
+ final var policyTypeFilter =
+ ToscaEntityFilter.<ToscaPolicyType>builder().name(policyTypeName).version(policyTypeVersion).build();
+ return getFilteredPolicyTypes(policyTypeFilter);
}
/**
* @return the ToscaServiceTemplate object
*/
public ToscaServiceTemplate fetchLatestPolicyTypes(final String policyTypeName) throws PfModelException {
- return getFilteredPolicyTypes(policyTypeName, ToscaEntityFilter.LATEST_VERSION);
+ final var policyTypeFilter = ToscaEntityFilter.<ToscaPolicyType>builder()
+ .name(policyTypeName).version(ToscaEntityFilter.LATEST_VERSION).build();
+ return getFilteredPolicyTypes(policyTypeFilter);
}
/**
ToscaUtils.assertPolicyTypesExist(incomingServiceTemplate);
// append the incoming fragment to the DB TOSCA service template
- final var serviceTemplateToWrite =
- ToscaServiceTemplateUtils.addFragment(getDefaultJpaToscaServiceTemplate(), incomingServiceTemplate);
+ var dbServiceTemplateOpt = getDefaultJpaToscaServiceTemplateOpt();
+ JpaToscaServiceTemplate serviceTemplateToWrite;
+ if (dbServiceTemplateOpt.isEmpty()) {
+ serviceTemplateToWrite = incomingServiceTemplate;
+ } else {
+ serviceTemplateToWrite =
+ ToscaServiceTemplateUtils.addFragment(dbServiceTemplateOpt.get(), incomingServiceTemplate);
+ }
final var result = serviceTemplateToWrite.validate("service template");
if (!result.isValid()) {
ToscaUtils.assertPoliciesExist(incomingServiceTemplate);
// append the incoming fragment to the DB TOSCA service template
- final var serviceTemplateToWrite =
- ToscaServiceTemplateUtils.addFragment(getDefaultJpaToscaServiceTemplate(), incomingServiceTemplate);
+ var dbServiceTemplateOpt = getDefaultJpaToscaServiceTemplateOpt();
+ JpaToscaServiceTemplate serviceTemplateToWrite;
+ if (dbServiceTemplateOpt.isEmpty()) {
+ serviceTemplateToWrite = incomingServiceTemplate;
+ } else {
+ serviceTemplateToWrite =
+ ToscaServiceTemplateUtils.addFragment(dbServiceTemplateOpt.get(), incomingServiceTemplate);
+ }
final var result = serviceTemplateToWrite.validate("Policies CRUD service template.");
if (!result.isValid()) {
toscaServiceTemplateRepository.save(serviceTemplateToWrite);
- LOGGER.debug("<-appendServiceTemplateFragment: returnServiceTempalate={}", serviceTemplateToWrite);
+ LOGGER.debug("<-appendServiceTemplateFragment: returnServiceTemplate={}", serviceTemplateToWrite);
return body;
}
/**
* Retrieves TOSCA service template with the specified version of the policy type.
*
- * @param policyTypeName the name of the policy type
- * @param policyTypeVersion the version of the policy type
+ * @param policyTypeFilter the policy type filter containing name and version of the policy type
* @return the TOSCA service template containing the specified version of the policy type
* @throws PfModelException on errors getting the policy type
*/
- private ToscaServiceTemplate getFilteredPolicyTypes(final String policyTypeName, final String policyTypeVersion)
+ public ToscaServiceTemplate getFilteredPolicyTypes(final ToscaEntityFilter<ToscaPolicyType> policyTypeFilter)
throws PfModelException {
final var dbServiceTemplate = getDefaultJpaToscaServiceTemplate();
- final var policyTypeFilter =
- ToscaEntityFilter.<ToscaPolicyType>builder().name(policyTypeName).version(policyTypeVersion).build();
LOGGER.debug("->getFilteredPolicyTypes: filter={}, serviceTemplate={}", policyTypeFilter, dbServiceTemplate);
// validate that policyTypes exist in db
"policy types for filter " + policyTypeFilter + DO_NOT_EXIST_MSG);
}
+ var version = ToscaTypedEntityFilter.LATEST_VERSION
+ .equals(policyTypeFilter.getVersion()) ? null : policyTypeFilter.getVersion();
// fetch all polices and filter by policyType, policy name and version
final var serviceTemplate = new SimpleToscaProvider()
- .getCascadedPolicyTypes(dbServiceTemplate, policyTypeName, policyTypeVersion);
+ .getCascadedPolicyTypes(dbServiceTemplate, policyTypeFilter.getName(), version);
var simpleToscaProvider = new SimpleToscaProvider();
List<ToscaPolicyType> filteredPolicyTypes = serviceTemplate.getPolicyTypes().toAuthorativeList();
/**
* Get Service Template.
+ *
* @return the Service Template read from the database
+ * @throws PfModelRuntimeException if service template if not found in database.
*/
- private JpaToscaServiceTemplate getDefaultJpaToscaServiceTemplate() {
- final var defaultServiceTemplateOpt = toscaServiceTemplateRepository
- .findById(new PfConceptKey(JpaToscaServiceTemplate.DEFAULT_NAME, JpaToscaServiceTemplate.DEFAULT_VERSION));
+ public JpaToscaServiceTemplate getDefaultJpaToscaServiceTemplate() throws PfModelRuntimeException {
+ final var defaultServiceTemplateOpt = getDefaultJpaToscaServiceTemplateOpt();
if (defaultServiceTemplateOpt.isEmpty()) {
throw new PfModelRuntimeException(Response.Status.NOT_FOUND, SERVICE_TEMPLATE_NOT_FOUND_MSG);
}
LOGGER.debug("<-getDefaultJpaToscaServiceTemplate: serviceTemplate={}", defaultServiceTemplateOpt.get());
return defaultServiceTemplateOpt.get();
}
+
+ /**
+ * Get Service Template Optional object.
+ *
+ * @return the Optional object for Service Template read from the database
+ */
+ private Optional<JpaToscaServiceTemplate> getDefaultJpaToscaServiceTemplateOpt() {
+ return toscaServiceTemplateRepository
+ .findById(new PfConceptKey(JpaToscaServiceTemplate.DEFAULT_NAME, JpaToscaServiceTemplate.DEFAULT_VERSION));
+ }
}
\ No newline at end of file