1 package org.openecomp.sdc.be.components.impl;
3 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
4 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
5 import org.openecomp.sdc.be.model.Component;
6 import org.openecomp.sdc.be.model.operations.StorageException;
7 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
8 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
9 import org.openecomp.sdc.common.log.wrappers.Logger;
12 @org.springframework.stereotype.Component
13 public class ComponentLocker {
15 private static final Logger log = Logger.getLogger(ComponentLocker.class.getName());
16 private final GraphLockOperation graphLockOperation;
18 public ComponentLocker(GraphLockOperation graphLockOperation) {
19 this.graphLockOperation = graphLockOperation;
22 public void lock(String id, ComponentTypeEnum componentType) {
23 lock(id, componentType.getNodeType());
26 public void lock(Component component) {
27 doLockComponent(component.getUniqueId(), component.getComponentType().getNodeType());
30 public void lock(String id, NodeTypeEnum nodeTypeEnum) {
31 doLockComponent(id, nodeTypeEnum);
34 private void doLockComponent(String id, NodeTypeEnum nodeTypeEnum) {
35 log.debug("#doLockComponent - locking component {} of type {}", id, nodeTypeEnum);
36 StorageOperationStatus storageOperationStatus = graphLockOperation.lockComponent(id, nodeTypeEnum);
37 if (storageOperationStatus != StorageOperationStatus.OK) {
38 log.debug("#doLockComponent - failed to lock component {} with status {}", id, storageOperationStatus);
39 throw new StorageException(storageOperationStatus);
43 public void unlock(String id, ComponentTypeEnum componentType) {
44 unlock(id, componentType.getNodeType());
47 public void unlock(String id, NodeTypeEnum nodeTypeEnum) {
48 log.debug("#unlock - unlocking component {} of type {}", id, nodeTypeEnum);
49 StorageOperationStatus storageOperationStatus = graphLockOperation.unlockComponent(id, nodeTypeEnum);
50 if (storageOperationStatus != StorageOperationStatus.OK) {
51 log.debug("#unlock - failed to unlock component {} with status {}", id, storageOperationStatus);
52 throw new StorageException(storageOperationStatus, id);