aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/music/main/DeadlockDetectionUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/music/main/DeadlockDetectionUtil.java')
-rw-r--r--src/main/java/org/onap/music/main/DeadlockDetectionUtil.java148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/main/java/org/onap/music/main/DeadlockDetectionUtil.java b/src/main/java/org/onap/music/main/DeadlockDetectionUtil.java
deleted file mode 100644
index 4c9a74b7..00000000
--- a/src/main/java/org/onap/music/main/DeadlockDetectionUtil.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * ============LICENSE_START==========================================
- * org.onap.music
- * ===================================================================
- * Copyright (c) 2019 AT&T Intellectual Property
- * ===================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ============LICENSE_END=============================================
- * ====================================================================
- */
-package org.onap.music.main;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class DeadlockDetectionUtil {
- private Map<String, Node> nodeList = null;
- public enum OwnershipType {NONE, CREATED, ACQUIRED};
-
- private class Node implements Comparable<Node> {
- private String id;
- private List<Node> links;
- private boolean visited = false;
- private boolean onStack = false;
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer();
- for (Node link : links) sb.append(link.id);
- return "Node [id=" + id + ", links=" + sb.toString() + ", visited=" + visited + ", onStack=" + onStack + "]";
- }
-
- public Node(String id) {
- super();
- this.id = id;
- this.links = new ArrayList<Node>();
- }
-
- public List<Node> getLinks() {
- return links;
- }
-
- public void addLink(Node link) {
- this.links.add(link);
- }
-
- public void removeLink(Node link) {
- this.links.remove(link);
- }
-
- public boolean isVisited() {
- return visited;
- }
-
- public boolean isOnStack() {
- return onStack;
- }
-
- public void setVisited(boolean visited) {
- this.visited = visited;
- }
-
- public void setOnStack(boolean onStack) {
- this.onStack = onStack;
- }
-
- @Override
- public int compareTo(Node arg0) {
- return id.compareTo(arg0.id);
- }
- }
-
- public DeadlockDetectionUtil() {
- this.nodeList = new HashMap<String, Node>();
- }
-
- public void listAllNodes() {
- System.out.println("In DeadlockDetectionUtil: ");
- for (String key : nodeList.keySet()) {
- System.out.println(" " + key + " : " + nodeList.get(key));
- }
- }
-
- public boolean checkForDeadlock(String resource, String owner, OwnershipType operation) {
- setExisting(resource, owner, operation);
-
- Node currentNode = null;
- if (operation.equals(OwnershipType.ACQUIRED)) {
- currentNode = nodeList.get("r" + resource);
- } else if (operation.equals(OwnershipType.CREATED)) {
- currentNode = nodeList.get("o" + owner);
- }
-
- boolean cycle = findCycle(currentNode);
- return cycle;
- }
-
- private boolean findCycle(Node currentNode) {
- if (currentNode==null) return false;
- if (currentNode.isOnStack()) return true;
- if (currentNode.isVisited()) return false;
- currentNode.setOnStack(true);
- currentNode.setVisited(true);
- for (Node childNode : currentNode.getLinks()) {
- if (findCycle(childNode)) return true;
- }
- currentNode.setOnStack(false);
- return false;
- }
-
- public void setExisting(String resource, String owner, OwnershipType operation) {
- String resourceKey = "r" + resource;
- Node resourceNode = nodeList.get(resourceKey);
- if (resourceNode==null) {
- resourceNode = new Node(resourceKey);
- nodeList.put(resourceKey, resourceNode);
- }
-
- String ownerKey = "o" + owner;
- Node ownerNode = nodeList.get(ownerKey);
- if (ownerNode==null) {
- ownerNode = new Node(ownerKey);
- nodeList.put(ownerKey, ownerNode);
- }
-
- if (operation.equals(OwnershipType.ACQUIRED)) {
- resourceNode.addLink(ownerNode);
- ownerNode.removeLink(resourceNode);
- } else if (operation.equals(OwnershipType.CREATED)) {
- ownerNode.addLink(resourceNode);
- resourceNode.removeLink(ownerNode);
- }
- }
-
-}