summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java
new file mode 100644
index 0000000000..8328098980
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentLocker.java
@@ -0,0 +1,55 @@
+package org.openecomp.sdc.be.components.impl;
+
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.model.Component;
+import org.openecomp.sdc.be.model.operations.StorageException;
+import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
+import org.openecomp.sdc.common.log.wrappers.Logger;
+
+
+@org.springframework.stereotype.Component
+public class ComponentLocker {
+
+ private static final Logger log = Logger.getLogger(ComponentLocker.class.getName());
+ private final GraphLockOperation graphLockOperation;
+
+ public ComponentLocker(GraphLockOperation graphLockOperation) {
+ this.graphLockOperation = graphLockOperation;
+ }
+
+ public void lock(String id, ComponentTypeEnum componentType) {
+ lock(id, componentType.getNodeType());
+ }
+
+ public void lock(Component component) {
+ doLockComponent(component.getUniqueId(), component.getComponentType().getNodeType());
+ }
+
+ public void lock(String id, NodeTypeEnum nodeTypeEnum) {
+ doLockComponent(id, nodeTypeEnum);
+ }
+
+ private void doLockComponent(String id, NodeTypeEnum nodeTypeEnum) {
+ log.debug("#doLockComponent - locking component {} of type {}", id, nodeTypeEnum);
+ StorageOperationStatus storageOperationStatus = graphLockOperation.lockComponent(id, nodeTypeEnum);
+ if (storageOperationStatus != StorageOperationStatus.OK) {
+ log.debug("#doLockComponent - failed to lock component {} with status {}", id, storageOperationStatus);
+ throw new StorageException(storageOperationStatus);
+ }
+ }
+
+ public void unlock(String id, ComponentTypeEnum componentType) {
+ unlock(id, componentType.getNodeType());
+ }
+
+ public void unlock(String id, NodeTypeEnum nodeTypeEnum) {
+ log.debug("#unlock - unlocking component {} of type {}", id, nodeTypeEnum);
+ StorageOperationStatus storageOperationStatus = graphLockOperation.unlockComponent(id, nodeTypeEnum);
+ if (storageOperationStatus != StorageOperationStatus.OK) {
+ log.debug("#unlock - failed to unlock component {} with status {}", id, storageOperationStatus);
+ throw new StorageException(storageOperationStatus, id);
+ }
+ }
+}