Fix synchronization issues in policy-api
[policy/api.git] / main / src / main / java / org / onap / policy / api / main / rest / ApiRestController.java
old mode 100644 (file)
new mode 100755 (executable)
index b44e60f..9745ec9
@@ -158,11 +158,17 @@ public class ApiRestController extends CommonRestController implements PolicyDes
             NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policytypes", toJson(body));\r
         }\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicyType(body);\r
             return makeOkResponse(requestId, serviceTemplate);\r
         } catch (PfModelRuntimeException pfme) {\r
             final var msg = "POST /policytypes";\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 \r
@@ -179,12 +185,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
         String versionId,\r
         UUID requestId) {\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate =\r
                 toscaServiceTemplateService.deletePolicyType(policyTypeId, versionId);\r
             return makeOkResponse(requestId, serviceTemplate);\r
         } catch (PfModelRuntimeException pfme) {\r
             var msg = String.format("DELETE /policytypes/%s/versions/%s", policyTypeId, versionId);\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 \r
@@ -310,12 +322,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
                 "/policytypes/" + policyTypeId + "/versions/" + policyTypeVersion + "/policies", toJson(body));\r
         }\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate =\r
                 toscaServiceTemplateService.createPolicy(policyTypeId, policyTypeVersion, body);\r
             return makeOkResponse(requestId, serviceTemplate);\r
         } catch (PfModelRuntimeException pfme) {\r
             var msg = String.format("POST /policytypes/%s/versions/%s/policies", policyTypeId, policyTypeVersion);\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 \r
@@ -336,6 +354,7 @@ public class ApiRestController extends CommonRestController implements PolicyDes
         String policyVersion,\r
         UUID requestId) {\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate =\r
                 toscaServiceTemplateService.deletePolicy(policyTypeId, policyTypeVersion, policyId, policyVersion);\r
             return makeOkResponse(requestId, serviceTemplate);\r
@@ -343,6 +362,11 @@ public class ApiRestController extends CommonRestController implements PolicyDes
             var msg = String.format("DELETE /policytypes/%s/versions/%s/policies/%s/versions/%s",\r
                 policyTypeId, policyTypeVersion, policyId, policyVersion);\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 \r
@@ -406,11 +430,17 @@ public class ApiRestController extends CommonRestController implements PolicyDes
             NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST, "/policies", toJson(body));\r
         }\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate = toscaServiceTemplateService.createPolicies(body);\r
             return makeOkResponse(requestId, serviceTemplate);\r
         } catch (PfModelRuntimeException pfme) {\r
             final var msg = "POST /policies";\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 \r
@@ -427,12 +457,18 @@ public class ApiRestController extends CommonRestController implements PolicyDes
         String policyVersion,\r
         UUID requestId) {\r
         try {\r
+            mutex.acquire();\r
             ToscaServiceTemplate serviceTemplate =\r
                 toscaServiceTemplateService.deletePolicy(null, null, policyId, policyVersion);\r
             return makeOkResponse(requestId, serviceTemplate);\r
         } catch (PfModelRuntimeException pfme) {\r
             var msg = String.format("DELETE /policies/%s/versions/%s", policyId, policyVersion);\r
             throw new PolicyApiRuntimeException(msg, pfme.getCause(), pfme.getErrorResponse(), requestId);\r
+        } catch (InterruptedException e) {\r
+            Thread.currentThread().interrupt();\r
+            throw new PolicyApiRuntimeException(e.getMessage(), null, null, requestId);\r
+        } finally {\r
+            mutex.release();\r
         }\r
     }\r
 }\r