+ private static final Logger LOGGER = LoggerFactory.getLogger(AuthorativeToscaProvider.class);
+
+ // TODO: In next release this locking mechanism should be removed and replaced with proper session handling
+ private static final Object providerLockObject = "providerLockObject";
+
+ /**
+ * Get a service template.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the control loop to get.
+ * @param version the version of the control loop to get.
+ * @return the control loops found
+ * @throws PfModelException on errors getting control loops
+ */
+ public ToscaServiceTemplate getServiceTemplate(@NonNull final PfDao dao, final String name, final String version)
+ throws PfModelException {
+
+ synchronized (providerLockObject) {
+ LOGGER.debug("->getServiceTemplate: name={}, version={}", name, version);
+
+ ToscaServiceTemplate gotServiceTemplate = new SimpleToscaProvider().getServiceTemplate(dao).toAuthorative();
+
+ LOGGER.debug("<-getServiceTemplate: name={}, version={}, gotServiceTemplate={}", name, version,
+ gotServiceTemplate);
+ return gotServiceTemplate;
+ }
+ }
+
+ /**
+ * Create a service template.
+ *
+ * @param dao the DAO to use to access the database
+ * @param serviceTemplate the service template to be created.
+ * @return the TOSCA service template that was created
+ * @throws PfModelException on errors creating the service template
+ */
+ public ToscaServiceTemplate createServiceTemplate(@NonNull final PfDao dao,
+ @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+
+ synchronized (providerLockObject) {
+ LOGGER.debug("->createServiceTemplate: serviceTemplate={}", serviceTemplate);
+
+ ToscaServiceTemplate createdServiceTemplate = new SimpleToscaProvider()
+ .appendToServiceTemplate(dao, new JpaToscaServiceTemplate(serviceTemplate)).toAuthorative();
+
+ LOGGER.debug("<-createServiceTemplate: createdServiceTemplate={}", createdServiceTemplate);
+ return createdServiceTemplate;
+ }
+ }
+
+ /**
+ * Delete a service template.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the service template to delete.
+ * @param version the version of the service template to delete.
+ * @return the TOSCA service template that was deleted
+ * @throws PfModelException on errors deleting the control loop
+ */
+ public ToscaServiceTemplate deleteServiceTemplate(@NonNull final PfDao dao, @NonNull final String name,
+ @NonNull final String version) throws PfModelException {
+
+ synchronized (providerLockObject) {
+ LOGGER.debug("->deleteServiceTemplate: name={}, version={}", name, version);
+
+ ToscaServiceTemplate deletedServiceTemplate =
+ new SimpleToscaProvider().deleteServiceTemplate(dao).toAuthorative();
+
+ LOGGER.debug("<-deleteServiceTemplate: name={}, version={}, deletedServiceTemplate={}", name, version,
+ deletedServiceTemplate);
+ return deletedServiceTemplate;
+ }
+ }
+