diff options
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.java | 55 |
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); + } + } +} |