diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java index 90a4aed155d..57b5571c0eb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java @@ -131,7 +131,7 @@ public WebMarkupContainer createPanel(String panelId) { @Override public boolean isVisible(){ - return super.isVisible() && parentTaskPage.getTaskTabVisibilty().isWorkManagementVisible(); + return super.isVisible() && parentTaskPage.getTaskTabVisibilty().isWorkManagementVisible(getTask()); } }; tabs.add(new PanelTab(parentPage.createStringResource("pageTask.workManagement.title"), workManagementTabVisibility) { @@ -174,7 +174,7 @@ public WebMarkupContainer createPanel(String panelId) { @Override public boolean isVisible(){ - return super.isVisible() && parentTaskPage.getTaskTabVisibilty().isSubtasksAndThreadsVisible(); + return super.isVisible() && parentTaskPage.getTaskTabVisibilty().isSubtasksAndThreadsVisible(getTask()); } }; tabs.add(new PanelTab(parentPage.createStringResource("pageTask.subtasks.title"), subtasksTabVisibility) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java index f72dedf9b15..434dfc08df9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java @@ -28,6 +28,7 @@ import org.apache.commons.lang.StringUtils; import java.io.Serializable; +import java.util.List; /** * Used to determine whether tabs have to be refreshed - by comparing instances of this class before and after task update. @@ -78,25 +79,21 @@ public boolean computeCleanupPolicyVisible(){ return cleanupPolicyVisible; } - public boolean computeSubtasksAndThreadsVisible(PageTask parentPage, PrismObjectWrapper taskWrapper) { + public boolean computeSubtasksAndThreadsVisible(TaskType task) { - PrismReference subtasks = taskWrapper.getObject().findReference(TaskType.F_SUBTASK_REF); - if (subtasks == null) { - return subtasksAndThreadsVisible = false; - } - if (CollectionUtils.isEmpty(subtasks.getValues())) { + List subtasks = task.getSubtaskRef(); + if (CollectionUtils.isEmpty(subtasks)) { return subtasksAndThreadsVisible = false; } boolean allEmpty = true; - for (PrismReferenceValue val : subtasks.getValues()) { - if (!val.isEmpty()) { + for (ObjectReferenceType subtask : subtasks) { + if (!subtask.asReferenceValue().isEmpty()){ allEmpty = false; - break; } } - return subtasksAndThreadsVisible = allEmpty; + return subtasksAndThreadsVisible = !allEmpty; @@ -164,7 +161,7 @@ public void computeAll(PageTask parentPage, PrismObjectWrapper taskWra computeSchedulingVisible(parentPage, taskType); computeWorkManagementVisible(taskType); computeCleanupPolicyVisible(); - computeSubtasksAndThreadsVisible(parentPage, taskWrapper); + computeSubtasksAndThreadsVisible(taskType); computeProgressVisible(parentPage); computeEnvironmentalPerformanceVisible(parentPage, taskWrapper); computeInternalPerformanceVisible(parentPage, taskWrapper); @@ -214,7 +211,8 @@ public boolean isSchedulingVisible() { return schedulingVisible; } - public boolean isWorkManagementVisible() { + public boolean isWorkManagementVisible(TaskType task) { + workManagementVisible = computeWorkManagementVisible(task); return workManagementVisible; } @@ -222,7 +220,8 @@ public boolean isCleanupPolicyVisible() { return cleanupPolicyVisible; } - public boolean isSubtasksAndThreadsVisible() { + public boolean isSubtasksAndThreadsVisible(TaskType task) { + subtasksAndThreadsVisible = computeSubtasksAndThreadsVisible(task); return subtasksAndThreadsVisible; }