From 6625ef402d03967c3def145b759aac632020af76 Mon Sep 17 00:00:00 2001 From: anuchan Date: Mon, 25 Jul 2016 18:20:47 -0700 Subject: [PATCH] Fixing the issue of circular depedency due to the use of non-unique key --- .../main/java/com/microsoft/azure/Graph.java | 8 +++++++ .../com/microsoft/azure/TaskGroupBase.java | 21 ++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/azure-client-runtime/src/main/java/com/microsoft/azure/Graph.java b/azure-client-runtime/src/main/java/com/microsoft/azure/Graph.java index 89087dd6d358..fccc893d714a 100644 --- a/azure-client-runtime/src/main/java/com/microsoft/azure/Graph.java +++ b/azure-client-runtime/src/main/java/com/microsoft/azure/Graph.java @@ -7,6 +7,7 @@ package com.microsoft.azure; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -51,6 +52,13 @@ public void addNode(U node) { graph.put(node.key(), node); } + /** + * @return all nodes in the graph. + */ + public Collection getNodes() { + return graph.values(); + } + /** * Perform DFS visit in this graph. *

diff --git a/azure-client-runtime/src/main/java/com/microsoft/azure/TaskGroupBase.java b/azure-client-runtime/src/main/java/com/microsoft/azure/TaskGroupBase.java index b607a41f54ad..c7b982a8f098 100644 --- a/azure-client-runtime/src/main/java/com/microsoft/azure/TaskGroupBase.java +++ b/azure-client-runtime/src/main/java/com/microsoft/azure/TaskGroupBase.java @@ -17,10 +17,11 @@ * The base implementation of TaskGroup interface. * * @param the result type of the tasks in the group + * @param the task item */ -public abstract class TaskGroupBase - implements TaskGroup> { - private DAGraph, DAGNode>> dag; +public abstract class TaskGroupBase> + implements TaskGroup { + private DAGraph> dag; private ParallelServiceCall parallelServiceCall; /** @@ -29,13 +30,13 @@ public abstract class TaskGroupBase * @param rootTaskItemId the id of the root task in this task group * @param rootTaskItem the root task */ - public TaskGroupBase(String rootTaskItemId, TaskItem rootTaskItem) { + public TaskGroupBase(String rootTaskItemId, U rootTaskItem) { this.dag = new DAGraph<>(new DAGNode<>(rootTaskItemId, rootTaskItem)); this.parallelServiceCall = new ParallelServiceCall(); } @Override - public DAGraph, DAGNode>> dag() { + public DAGraph> dag() { return dag; } @@ -45,7 +46,7 @@ public boolean isPreparer() { } @Override - public void merge(TaskGroup> parentTaskGroup) { + public void merge(TaskGroup parentTaskGroup) { dag.merge(parentTaskGroup.dag()); } @@ -58,7 +59,7 @@ public void prepare() { @Override public void execute() throws Exception { - DAGNode> nextNode = dag.getNext(); + DAGNode nextNode = dag.getNext(); while (nextNode != null) { nextNode.data().execute(); this.dag().reportedCompleted(nextNode); @@ -84,7 +85,7 @@ public T taskResult(String taskId) { * @param callback the callback */ private void executeReadyTasksAsync(final ServiceCallback callback) { - DAGNode> nextNode = dag.getNext(); + DAGNode nextNode = dag.getNext(); while (nextNode != null) { ServiceCall serviceCall = nextNode.data().executeAsync(taskCallback(nextNode, callback)); this.parallelServiceCall.addCall(serviceCall); @@ -100,8 +101,8 @@ private void executeReadyTasksAsync(final ServiceCallback callback) { * @param callback the callback to wrap * @return the task callback */ - private ServiceCallback taskCallback(final DAGNode> taskNode, final ServiceCallback callback) { - final TaskGroupBase self = this; + private ServiceCallback taskCallback(final DAGNode taskNode, final ServiceCallback callback) { + final TaskGroupBase self = this; return new ServiceCallback() { @Override public void failure(Throwable t) {