diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
index 086bc0d1f4a..86158f88a14 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
@@ -27,6 +27,8 @@
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
+
+import org.apache.commons.lang.BooleanUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
@@ -46,6 +48,7 @@
* @author honchar
* @author Viliam Repan (lazyman)
*
+ *
*/
public class InlineMenuButtonColumn extends AbstractColumn {
@@ -88,6 +91,11 @@ private Component getPanel(String componentId, IModel rowModel,
if (rowModel != null && menuItem.getAction() != null && menuItem.getAction() instanceof ColumnMenuAction){
((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel);
}
+
+ if (menuItem.isCheckVisibility() && !isInlineMenuVisible(rowModel, isHeaderPanel)) {
+ continue;
+ }
+
filteredMenuItems.add(menuItem);
}
if (rowModel != null && rowModel.getObject() instanceof InlineMenuable &&
@@ -127,6 +135,10 @@ protected AjaxIconButton createButton(int index, String componentId, IModel m
}
};
}
+
+ protected boolean isInlineMenuVisible(IModel rowModel, boolean isHeader) {
+ return true;
+ }
protected boolean isButtonMenuItemEnabled(IModel rowModel){
return true;
@@ -233,6 +245,7 @@ private boolean isPanelVisible(boolean isHeaderPanel){
if (!isHeaderPanel && !(item.getAction() instanceof HeaderMenuAction)){
return true;
}
+
}
return false;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
index bfc2c8ac610..4e97cfda3a1 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
@@ -20,6 +20,7 @@
import org.apache.wicket.model.Model;
import java.io.Serializable;
+import java.util.function.Supplier;
/**
* TODO: update to better use with DropdownButtonPanel. Move away from depreated com.evolveum.midpoint.web.component.menu.cog.
@@ -35,6 +36,8 @@ public abstract class InlineMenuItem implements Serializable {
private boolean submit = false;
private InlineMenuItemAction action;
private int id = -1;
+
+ private boolean checkVisibility;
public InlineMenuItem(IModel label) {
this.label = label;
@@ -115,4 +118,13 @@ public IModel getConfirmationMessageModel() {
public boolean showConfirmationDialog() {
return true;
}
+
+ public boolean isCheckVisibility() {
+ return checkVisibility;
+ }
+
+ public void setCheckVisibility(boolean checkVisibility) {
+ this.checkVisibility = checkVisibility;
+ }
+
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java
index 6f86b8f7a0d..0a79d9fa2c8 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTasks.java
@@ -679,7 +679,31 @@ protected DisplayType getIconDisplayType(final IModel rowModel) {
});
IColumn menuColumn = new InlineMenuButtonColumn(createTasksInlineMenu(false, null),
- PageTasks.this);
+ PageTasks.this) {
+
+ @Override
+ protected boolean isInlineMenuVisible(IModel rowModel, boolean isHeader) {
+ if (rowModel == null) {
+ return isHeader;
+ }
+ TaskDto dto = rowModel.getObject();
+ if (isHeader) {
+ return false;
+ }
+
+ if (dto == null) {
+ return false;
+ }
+
+ TaskWorkManagementType workManagement = dto.getTaskType().getWorkManagement();
+ if (workManagement == null) {
+ return false;
+ }
+
+ return TaskKindType.COORDINATOR == workManagement.getTaskKind();
+
+ }
+ };
columns.add(menuColumn);
return columns;
@@ -825,116 +849,123 @@ public IModel getConfirmationMessageModel() {
}
});
- if (!isHeader && dto != null) {
- if (dto.getTaskType().getWorkManagement() != null
- && dto.getTaskType().getWorkManagement().getTaskKind() == TaskKindType.COORDINATOR) {
- items.add(new InlineMenuItem(createStringResource("pageTasks.button.reconcileWorkers")) {
+ InlineMenuItem reconcileWorkers = new InlineMenuItem(createStringResource("pageTasks.button.reconcileWorkers")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new ColumnMenuAction() {
private static final long serialVersionUID = 1L;
@Override
- public InlineMenuItemAction initAction() {
- return new ColumnMenuAction() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getRowModel() == null) {
- throw new UnsupportedOperationException();
- } else {
- TaskDto rowDto = getRowModel().getObject();
- reconcileWorkersConfirmedPerformed(target, rowDto);
- }
- }
- };
+ public void onClick(AjaxRequestTarget target) {
+ if (getRowModel() == null) {
+ throw new UnsupportedOperationException();
+ } else {
+ TaskDto rowDto = getRowModel().getObject();
+ reconcileWorkersConfirmedPerformed(target, rowDto);
+ }
}
+ };
+ }
- @Override
- public IModel getConfirmationMessageModel() {
- String actionName = createStringResource("pageTasks.message.reconcileWorkersAction").getString();
- return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
- }
- });
+ @Override
+ public IModel getConfirmationMessageModel() {
+ String actionName = createStringResource("pageTasks.message.reconcileWorkersAction").getString();
+ return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
+ }
+ };
+ reconcileWorkers.setCheckVisibility(true);
+
+ items.add(reconcileWorkers);
+
+ InlineMenuItem suspendCoordinatorOnly = new InlineMenuItem(createStringResource("pageTasks.button.suspendCoordinatorOnly")) {
+ private static final long serialVersionUID = 1L;
- items.add(new InlineMenuItem(createStringResource("pageTasks.button.suspendCoordinatorOnly")) {
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new ColumnMenuAction() {
private static final long serialVersionUID = 1L;
@Override
- public InlineMenuItemAction initAction() {
- return new ColumnMenuAction() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getRowModel() == null) {
- throw new UnsupportedOperationException();
- } else {
- TaskDto rowDto = getRowModel().getObject();
- suspendCoordinatorOnly(target, rowDto);
- }
- }
- };
+ public void onClick(AjaxRequestTarget target) {
+ if (getRowModel() == null) {
+ throw new UnsupportedOperationException();
+ } else {
+ TaskDto rowDto = getRowModel().getObject();
+ suspendCoordinatorOnly(target, rowDto);
+ }
}
+ };
+ }
- @Override
- public IModel getConfirmationMessageModel() {
- String actionName = createStringResource("pageTasks.message.suspendAction").getString();
- return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
- }
- });
- items.add(new InlineMenuItem(createStringResource("pageTasks.button.resumeCoordinatorOnly")) {
+ @Override
+ public IModel getConfirmationMessageModel() {
+ String actionName = createStringResource("pageTasks.message.suspendAction").getString();
+ return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
+ }
+ };
+ suspendCoordinatorOnly.setCheckVisibility(true);
+ items.add(suspendCoordinatorOnly);
+
+ InlineMenuItem resumeCoordinatorOnly = new InlineMenuItem(createStringResource("pageTasks.button.resumeCoordinatorOnly")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new ColumnMenuAction() {
private static final long serialVersionUID = 1L;
@Override
- public InlineMenuItemAction initAction() {
- return new ColumnMenuAction() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getRowModel() == null) {
- throw new UnsupportedOperationException();
- } else {
- TaskDto rowDto = getRowModel().getObject();
- resumeCoordinatorOnly(target, rowDto);
- }
- }
- };
+ public void onClick(AjaxRequestTarget target) {
+ if (getRowModel() == null) {
+ throw new UnsupportedOperationException();
+ } else {
+ TaskDto rowDto = getRowModel().getObject();
+ resumeCoordinatorOnly(target, rowDto);
+ }
}
+ };
+ }
- @Override
- public IModel getConfirmationMessageModel() {
- String actionName = createStringResource("pageTasks.message.resumeAction").getString();
- return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
- }
- });
- items.add(new InlineMenuItem(createStringResource("pageTasks.button.deleteWorkersAndWorkState")) {
+ @Override
+ public IModel getConfirmationMessageModel() {
+ String actionName = createStringResource("pageTasks.message.resumeAction").getString();
+ return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
+ }
+ };
+ resumeCoordinatorOnly.setCheckVisibility(true);
+ items.add(resumeCoordinatorOnly);
+
+ InlineMenuItem deleteWorkStateAndWorkers = new InlineMenuItem(createStringResource("pageTasks.button.deleteWorkersAndWorkState")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new ColumnMenuAction() {
private static final long serialVersionUID = 1L;
@Override
- public InlineMenuItemAction initAction() {
- return new ColumnMenuAction() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getRowModel() == null) {
- throw new UnsupportedOperationException();
- } else {
- TaskDto rowDto = getRowModel().getObject();
- deleteWorkersAndWorkState(target, rowDto);
- }
- }
- };
+ public void onClick(AjaxRequestTarget target) {
+ if (getRowModel() == null) {
+ throw new UnsupportedOperationException();
+ } else {
+ TaskDto rowDto = getRowModel().getObject();
+ deleteWorkersAndWorkState(target, rowDto);
+ }
}
+ };
+ }
- @Override
- public IModel getConfirmationMessageModel() {
- String actionName = createStringResource("pageTasks.message.deleteWorkersAndWorkState").getString();
- return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
- }
- });
+ @Override
+ public IModel getConfirmationMessageModel() {
+ String actionName = createStringResource("pageTasks.message.deleteWorkersAndWorkState").getString();
+ return PageTasks.this.getTaskConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}
- }
+ };
+ deleteWorkStateAndWorkers.setCheckVisibility(true);
+ items.add(deleteWorkStateAndWorkers);
+
if (isHeader) {
items.add(new InlineMenuItem(createStringResource("pageTasks.button.deleteAllClosedTasks")) {
private static final long serialVersionUID = 1L;
@@ -1330,644 +1361,671 @@ private void scheduleTasksPerformed(AjaxRequestTarget target, List oids)
private void scheduleTaskPerformed(AjaxRequestTarget target, TaskDto dto) {
scheduleTasksPerformed(target, Arrays.asList(dto.getOid()));
- }
+ }
- private void scheduleTasksPerformed(AjaxRequestTarget target) {
- List taskDtoList = WebComponentUtil.getSelectedData(getTaskTable());
- if (!isSomeTaskSelected(taskDtoList, target)) {
- return;
- }
+ private void scheduleTasksPerformed(AjaxRequestTarget target) {
+ List taskDtoList = WebComponentUtil.getSelectedData(getTaskTable());
+ if (!isSomeTaskSelected(taskDtoList, target)) {
+ return;
+ }
- scheduleTasksPerformed(target, TaskDto.getOids(taskDtoList));
- }
- //endregion
+ scheduleTasksPerformed(target, TaskDto.getOids(taskDtoList));
+ }
+ // endregion
- //region Node-level actions
- private void nodeDetailsPerformed(AjaxRequestTarget target, String oid) {
+ // region Node-level actions
+ private void nodeDetailsPerformed(AjaxRequestTarget target, String oid) {
- }
+ }
- private void stopSchedulersAndTasksPerformed(AjaxRequestTarget target, List identifiers) {
- Task opTask = createSimpleTask(OPERATION_STOP_SCHEDULERS_AND_TASKS);
- OperationResult result = opTask.getResult();
- try {
- boolean suspended = getTaskService().stopSchedulersAndTasks(identifiers, WAIT_FOR_TASK_STOP, opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- if (suspended) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.success").getString());
- } else {
- result.recordWarning(createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.warning").getString());
- }
- }
- } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ private void stopSchedulersAndTasksPerformed(AjaxRequestTarget target, List identifiers) {
+ Task opTask = createSimpleTask(OPERATION_STOP_SCHEDULERS_AND_TASKS);
+ OperationResult result = opTask.getResult();
+ try {
+ boolean suspended = getTaskService().stopSchedulersAndTasks(identifiers, WAIT_FOR_TASK_STOP, opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ if (suspended) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.success").getString());
+ } else {
+ result.recordWarning(
+ createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.warning").getString());
+ }
+ }
+ } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(
+ createStringResource("pageTasks.message.stopSchedulersAndTasksPerformed.fatalError").getString(), e);
+ }
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void stopSchedulersAndTasksPerformed(AjaxRequestTarget target, NodeDto dto) {
- List nodeDtoList = new ArrayList<>();
- if (dto != null){
- nodeDtoList.add(dto);
- } else {
- nodeDtoList.addAll(WebComponentUtil.getSelectedData(getNodeTable()));
- }
- if (!isSomeNodeSelected(nodeDtoList, target)) {
- return;
- }
+ private void stopSchedulersAndTasksPerformed(AjaxRequestTarget target, NodeDto dto) {
+ List nodeDtoList = new ArrayList<>();
+ if (dto != null) {
+ nodeDtoList.add(dto);
+ } else {
+ nodeDtoList.addAll(WebComponentUtil.getSelectedData(getNodeTable()));
+ }
+ if (!isSomeNodeSelected(nodeDtoList, target)) {
+ return;
+ }
- stopSchedulersAndTasksPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
- }
+ stopSchedulersAndTasksPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
+ }
- private void startSchedulersPerformed(AjaxRequestTarget target, List identifiers) {
- Task opTask = createSimpleTask(OPERATION_START_SCHEDULERS);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().startSchedulers(identifiers, opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.startSchedulersPerformed.success").getString());
- }
- } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.startSchedulersPerformed.fatalError").getString(), e);
- }
+ private void startSchedulersPerformed(AjaxRequestTarget target, List identifiers) {
+ Task opTask = createSimpleTask(OPERATION_START_SCHEDULERS);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().startSchedulers(identifiers, opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.startSchedulersPerformed.success").getString());
+ }
+ } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.startSchedulersPerformed.fatalError").getString(), e);
+ }
- showResult(result);
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void startSchedulersPerformed(AjaxRequestTarget target, NodeDto dto) {
- startSchedulersPerformed(target, Collections.singletonList(dto.getNodeIdentifier()));
- }
+ private void startSchedulersPerformed(AjaxRequestTarget target, NodeDto dto) {
+ startSchedulersPerformed(target, Collections.singletonList(dto.getNodeIdentifier()));
+ }
- private void startSchedulersPerformed(AjaxRequestTarget target) {
- List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
- if (!isSomeNodeSelected(nodeDtoList, target)) {
- return;
- }
+ private void startSchedulersPerformed(AjaxRequestTarget target) {
+ List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
+ if (!isSomeNodeSelected(nodeDtoList, target)) {
+ return;
+ }
- startSchedulersPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
- }
+ startSchedulersPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
+ }
- private void stopSchedulersPerformed(AjaxRequestTarget target, List identifiers) {
- Task opTask = createSimpleTask(OPERATION_STOP_SCHEDULERS);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().stopSchedulers(identifiers, opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.stopSchedulersPerformed.success").getString());
- }
- } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.stopSchedulersPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ private void stopSchedulersPerformed(AjaxRequestTarget target, List identifiers) {
+ Task opTask = createSimpleTask(OPERATION_STOP_SCHEDULERS);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().stopSchedulers(identifiers, opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.stopSchedulersPerformed.success").getString());
+ }
+ } catch (SecurityViolationException | ObjectNotFoundException | SchemaException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.stopSchedulersPerformed.fatalError").getString(), e);
+ }
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void stopSchedulersPerformed(AjaxRequestTarget target, NodeDto dto) {
- stopSchedulersPerformed(target, Collections.singletonList(dto.getNodeIdentifier()));
- }
+ private void stopSchedulersPerformed(AjaxRequestTarget target, NodeDto dto) {
+ stopSchedulersPerformed(target, Collections.singletonList(dto.getNodeIdentifier()));
+ }
- private void stopSchedulersPerformed(AjaxRequestTarget target) {
- List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
- if (!isSomeNodeSelected(nodeDtoList, target)) {
- return;
- }
+ private void stopSchedulersPerformed(AjaxRequestTarget target) {
+ List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
+ if (!isSomeNodeSelected(nodeDtoList, target)) {
+ return;
+ }
- stopSchedulersPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
- }
+ stopSchedulersPerformed(target, NodeDto.getNodeIdentifiers(nodeDtoList));
+ }
- private void deleteNodesPerformed(AjaxRequestTarget target, List nodes) {
- OperationResult result = new OperationResult(OPERATION_DELETE_NODES);
+ private void deleteNodesPerformed(AjaxRequestTarget target, List nodes) {
+ OperationResult result = new OperationResult(OPERATION_DELETE_NODES);
- Task task = createSimpleTask(OPERATION_DELETE_NODES);
+ Task task = createSimpleTask(OPERATION_DELETE_NODES);
- for (NodeDto nodeDto : nodes) {
- Collection> deltas = new ArrayList<>();
- deltas.add(getPrismContext().deltaFactory().object().createDeleteDelta(NodeType.class, nodeDto.getOid()
- ));
- try {
- getModelService().executeChanges(deltas, null, task, result);
- } catch (Exception e) { // until java 7 we do it in this way
- result.recordFatalError(createStringResource("pageTasks.message.deleteNodesPerformed.fatalError").getString() + nodeDto.getNodeIdentifier(), e);
- }
- }
+ for (NodeDto nodeDto : nodes) {
+ Collection> deltas = new ArrayList<>();
+ deltas.add(getPrismContext().deltaFactory().object().createDeleteDelta(NodeType.class, nodeDto.getOid()));
+ try {
+ getModelService().executeChanges(deltas, null, task, result);
+ } catch (Exception e) { // until java 7 we do it in this way
+ result.recordFatalError(createStringResource("pageTasks.message.deleteNodesPerformed.fatalError").getString()
+ + nodeDto.getNodeIdentifier(), e);
+ }
+ }
- result.computeStatus();
- if (result.isSuccess()) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.deleteNodesPerformed.success").getString());
- }
- showResult(result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.deleteNodesPerformed.success").getString());
+ }
+ showResult(result);
- NodeDtoProvider provider = (NodeDtoProvider) getNodeTable().getDataTable().getDataProvider();
- provider.clearCache();
+ NodeDtoProvider provider = (NodeDtoProvider) getNodeTable().getDataTable().getDataProvider();
+ provider.clearCache();
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void deleteNodesPerformed(AjaxRequestTarget target, NodeDto dto) {
- deleteNodesPerformed(target, Collections.singletonList(dto));
- }
+ private void deleteNodesPerformed(AjaxRequestTarget target, NodeDto dto) {
+ deleteNodesPerformed(target, Collections.singletonList(dto));
+ }
- private void deleteNodesPerformed(AjaxRequestTarget target) {
- List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
- if (!isSomeNodeSelected(nodeDtoList, target)) {
- return;
- }
+ private void deleteNodesPerformed(AjaxRequestTarget target) {
+ List nodeDtoList = WebComponentUtil.getSelectedData(getNodeTable());
+ if (!isSomeNodeSelected(nodeDtoList, target)) {
+ return;
+ }
- deleteNodesPerformed(target, nodeDtoList);
- }
- //endregion
+ deleteNodesPerformed(target, nodeDtoList);
+ }
+ // endregion
- //region Diagnostics actions
- private void deactivateServiceThreadsPerformed(AjaxRequestTarget target) {
- Task opTask = createSimpleTask(OPERATION_DEACTIVATE_SERVICE_THREADS);
- OperationResult result = opTask.getResult();
+ // region Diagnostics actions
+ private void deactivateServiceThreadsPerformed(AjaxRequestTarget target) {
+ Task opTask = createSimpleTask(OPERATION_DEACTIVATE_SERVICE_THREADS);
+ OperationResult result = opTask.getResult();
- try {
- boolean stopped = getTaskService().deactivateServiceThreads(WAIT_FOR_TASK_STOP, opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- if (stopped) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.success").getString());
- } else {
- result.recordWarning(createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.warning").getString());
- }
- }
- } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ try {
+ boolean stopped = getTaskService().deactivateServiceThreads(WAIT_FOR_TASK_STOP, opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ if (stopped) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.success").getString());
+ } else {
+ result.recordWarning(
+ createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.warning").getString());
+ }
+ }
+ } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(
+ createStringResource("pageTasks.message.deactivateServiceThreadsPerformed.fatalError").getString(), e);
+ }
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void reactivateServiceThreadsPerformed(AjaxRequestTarget target) {
- Task opTask = createSimpleTask(OPERATION_REACTIVATE_SERVICE_THREADS);
- OperationResult result = opTask.getResult();
+ private void reactivateServiceThreadsPerformed(AjaxRequestTarget target) {
+ Task opTask = createSimpleTask(OPERATION_REACTIVATE_SERVICE_THREADS);
+ OperationResult result = opTask.getResult();
- try {
- getTaskService().reactivateServiceThreads(opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.reactivateServiceThreadsPerformed.success").getString());
- }
- } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.reactivateServiceThreadsPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ try {
+ getTaskService().reactivateServiceThreads(opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.reactivateServiceThreadsPerformed.success").getString());
+ }
+ } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(
+ createStringResource("pageTasks.message.reactivateServiceThreadsPerformed.fatalError").getString(), e);
+ }
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void refreshTables(AjaxRequestTarget target) {
- clearTablesCache();
- target.add(getFeedbackPanel());
- target.add((Component) getTaskTable());
- target.add((Component) getNodeTable());
- }
+ private void refreshTables(AjaxRequestTarget target) {
+ clearTablesCache();
+ target.add(getFeedbackPanel());
+ target.add((Component) getTaskTable());
+ target.add((Component) getNodeTable());
+ }
- private void clearTablesCache(){
- if (getTaskTable() != null && getTaskTable().getDataTable() != null){
- WebComponentUtil.clearProviderCache(getTaskTable().getDataTable().getDataProvider());
- }
- if (getNodeTable() != null && getNodeTable().getDataTable() != null){
- WebComponentUtil.clearProviderCache(getNodeTable().getDataTable().getDataProvider());
- }
- }
+ private void clearTablesCache() {
+ if (getTaskTable() != null && getTaskTable().getDataTable() != null) {
+ WebComponentUtil.clearProviderCache(getTaskTable().getDataTable().getDataProvider());
+ }
+ if (getNodeTable() != null && getNodeTable().getDataTable() != null) {
+ WebComponentUtil.clearProviderCache(getNodeTable().getDataTable().getDataProvider());
+ }
+ }
- private void synchronizeTasksPerformed(AjaxRequestTarget target) {
- Task opTask = createSimpleTask(OPERATION_SYNCHRONIZE_TASKS);
- OperationResult result = opTask.getResult();
+ private void synchronizeTasksPerformed(AjaxRequestTarget target) {
+ Task opTask = createSimpleTask(OPERATION_SYNCHRONIZE_TASKS);
+ OperationResult result = opTask.getResult();
- try {
- getTaskService().synchronizeTasks(opTask, result);
- result.computeStatus();
- if (result.isSuccess()) { // brutal hack - the subresult's message contains statistics
- result.recordStatus(OperationResultStatus.SUCCESS, result.getLastSubresult().getMessage());
- }
- } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.synchronizeTasksPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ try {
+ getTaskService().synchronizeTasks(opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) { // brutal hack - the subresult's message
+ // contains statistics
+ result.recordStatus(OperationResultStatus.SUCCESS, result.getLastSubresult().getMessage());
+ }
+ } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.synchronizeTasksPerformed.fatalError").getString(),
+ e);
+ }
+ showResult(result);
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
private void synchronizeWorkflowRequestsPerformed(AjaxRequestTarget target) {
Task opTask = createSimpleTask(OPERATION_SYNCHRONIZE_WORKFLOW_REQUESTS);
- OperationResult result = opTask.getResult();
+ OperationResult result = opTask.getResult();
try {
getTaskService().synchronizeWorkflowRequests(opTask, result);
result.computeStatusIfUnknown();
- if (result.isSuccess()) { // brutal hack - the subresult's message contains statistics
+ if (result.isSuccess()) { // brutal hack - the subresult's message
+ // contains statistics
result.recordStatus(OperationResultStatus.SUCCESS, result.getLastSubresult().getMessage());
}
- } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.synchronizeTasksPerformed.fatalError").getString(), e);
+ } catch (RuntimeException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | ObjectNotFoundException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.synchronizeTasksPerformed.fatalError").getString(),
+ e);
}
showResult(result);
- //refresh feedback and table
+ // refresh feedback and table
refreshTables(target);
}
- //endregion
+ // endregion
- private void refreshTasks(AjaxRequestTarget target) {
-// searchModel = new LoadableModel(false) {
-//
-// @Override
-// protected TasksSearchDto load() {
-// return loadTasksSearchDto();
-// }
-// };
+ private void refreshTasks(AjaxRequestTarget target) {
+ // searchModel = new LoadableModel(false) {
+ //
+ // @Override
+ // protected TasksSearchDto load() {
+ // return loadTasksSearchDto();
+ // }
+ // };
target.add(refreshPanel);
- //refresh feedback and table
- refreshTables(target);
+ // refresh feedback and table
+ refreshTables(target);
if (refreshModel.getObject().isEnabled()) {
refreshPanel.startRefreshing(this, target);
}
- }
+ }
- private void searchFilterPerformed(AjaxRequestTarget target) {
- TasksSearchDto dto = searchModel.getObject();
+ private void searchFilterPerformed(AjaxRequestTarget target) {
+ TasksSearchDto dto = searchModel.getObject();
-// ObjectQuery query = createTaskQuery(dto.getStatus(), dto.getCategory(), dto.isShowSubtasks());
- ObjectQuery query = createTaskQuery();
+ // ObjectQuery query = createTaskQuery(dto.getStatus(),
+ // dto.getCategory(), dto.isShowSubtasks());
+ ObjectQuery query = createTaskQuery();
- Table panel = getTaskTable();
- DataTable table = panel.getDataTable();
- TaskDtoProvider provider = (TaskDtoProvider) table.getDataProvider();
- provider.setQuery(query);
- table.setCurrentPage(0);
+ Table panel = getTaskTable();
+ DataTable table = panel.getDataTable();
+ TaskDtoProvider provider = (TaskDtoProvider) table.getDataProvider();
+ provider.setQuery(query);
+ table.setCurrentPage(0);
- TasksStorage storage = getSessionStorage().getTasks();
- storage.setTasksSearch(dto);
+ TasksStorage storage = getSessionStorage().getTasks();
+ storage.setTasksSearch(dto);
- target.add(getFeedbackPanel());
- target.add((Component) getTaskTable());
- }
+ target.add(getFeedbackPanel());
+ target.add((Component) getTaskTable());
+ }
- private ObjectQuery createTaskQuery() {
- TasksSearchDto dto = searchModel.getObject();
- TaskDtoExecutionStatusFilter status = dto.getStatus();
- String category = dto.getCategory();
- boolean showSubtasks = dto.isShowSubtasks();
+ private ObjectQuery createTaskQuery() {
+ TasksSearchDto dto = searchModel.getObject();
+ TaskDtoExecutionStatusFilter status = dto.getStatus();
+ String category = dto.getCategory();
+ boolean showSubtasks = dto.isShowSubtasks();
- S_AtomicFilterEntry q = getPrismContext().queryFor(TaskType.class);
- if (status != null) {
- q = status.appendFilter(q);
- }
- if (category != null && !ALL_CATEGORIES.equals(category)) {
- q = q.item(TaskType.F_CATEGORY).eq(category).and();
- }
- if (StringUtils.isNotBlank(searchText)) {
- PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
- String normalizedString = normalizer.normalize(searchText);
- q = q.item(TaskType.F_NAME).containsPoly(normalizedString, normalizedString).matchingNorm().and();
- searchText = ""; // ???
- }
- if (!Boolean.TRUE.equals(showSubtasks)) {
- q = q.item(TaskType.F_PARENT).isNull().and();
- }
- return q.all().build();
- }
+ S_AtomicFilterEntry q = getPrismContext().queryFor(TaskType.class);
+ if (status != null) {
+ q = status.appendFilter(q);
+ }
+ if (category != null && !ALL_CATEGORIES.equals(category)) {
+ q = q.item(TaskType.F_CATEGORY).eq(category).and();
+ }
+ if (StringUtils.isNotBlank(searchText)) {
+ PolyStringNormalizer normalizer = getPrismContext().getDefaultPolyStringNormalizer();
+ String normalizedString = normalizer.normalize(searchText);
+ q = q.item(TaskType.F_NAME).containsPoly(normalizedString, normalizedString).matchingNorm().and();
+ searchText = ""; // ???
+ }
+ if (!Boolean.TRUE.equals(showSubtasks)) {
+ q = q.item(TaskType.F_PARENT).isNull().and();
+ }
+ return q.all().build();
+ }
- private void clearSearchPerformed(AjaxRequestTarget target) {
- TasksSearchDto tasksSearchDto = new TasksSearchDto();
- tasksSearchDto.setCategory(ALL_CATEGORIES);
- tasksSearchDto.setStatus(TaskDtoExecutionStatusFilter.ALL);
- searchModel.setObject(tasksSearchDto);
+ private void clearSearchPerformed(AjaxRequestTarget target) {
+ TasksSearchDto tasksSearchDto = new TasksSearchDto();
+ tasksSearchDto.setCategory(ALL_CATEGORIES);
+ tasksSearchDto.setStatus(TaskDtoExecutionStatusFilter.ALL);
+ searchModel.setObject(tasksSearchDto);
- Table panel = getTaskTable();
- DataTable table = panel.getDataTable();
- TaskDtoProvider provider = (TaskDtoProvider) table.getDataProvider();
- provider.setQuery(null);
+ Table panel = getTaskTable();
+ DataTable table = panel.getDataTable();
+ TaskDtoProvider provider = (TaskDtoProvider) table.getDataProvider();
+ provider.setQuery(null);
- TasksStorage storage = getSessionStorage().getTasks();
- storage.setTasksSearch(searchModel.getObject());
- panel.setCurrentPage(storage.getPaging());
+ TasksStorage storage = getSessionStorage().getTasks();
+ storage.setTasksSearch(searchModel.getObject());
+ panel.setCurrentPage(storage.getPaging());
- target.add((Component) panel);
- }
+ target.add((Component) panel);
+ }
- private void deleteTaskConfirmedPerformed(AjaxRequestTarget target, TaskDto task) {
- List taskDtoList = new ArrayList<>();
- if (task != null){
- taskDtoList.add(task);
- } else {
- taskDtoList.addAll(WebComponentUtil.getSelectedData(getTaskTable()));
- }
- if (!isSomeTaskSelected(taskDtoList, target)) {
- return;
- }
+ private void deleteTaskConfirmedPerformed(AjaxRequestTarget target, TaskDto task) {
+ List taskDtoList = new ArrayList<>();
+ if (task != null) {
+ taskDtoList.add(task);
+ } else {
+ taskDtoList.addAll(WebComponentUtil.getSelectedData(getTaskTable()));
+ }
+ if (!isSomeTaskSelected(taskDtoList, target)) {
+ return;
+ }
- Task opTask = createSimpleTask(OPERATION_DELETE_TASKS);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().suspendAndDeleteTasks(TaskDto.getOids(taskDtoList), WAIT_FOR_TASK_STOP, true, opTask, result);
- result.computeStatus();
- if (result.isSuccess()) {
- result.recordStatus(OperationResultStatus.SUCCESS, createStringResource("pageTasks.message.deleteTaskConfirmedPerformed.success").getString());
- }
- } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.deleteTaskConfirmedPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ Task opTask = createSimpleTask(OPERATION_DELETE_TASKS);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().suspendAndDeleteTasks(TaskDto.getOids(taskDtoList), WAIT_FOR_TASK_STOP, true, opTask, result);
+ result.computeStatus();
+ if (result.isSuccess()) {
+ result.recordStatus(OperationResultStatus.SUCCESS,
+ createStringResource("pageTasks.message.deleteTaskConfirmedPerformed.success").getString());
+ }
+ } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.deleteTaskConfirmedPerformed.fatalError").getString(),
+ e);
+ }
+ showResult(result);
- TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
- provider.clearCache();
+ TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
+ provider.clearCache();
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void reconcileWorkersConfirmedPerformed(AjaxRequestTarget target, @NotNull TaskDto task) {
- Task opTask = createSimpleTask(OPERATION_RECONCILE_WORKERS);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().reconcileWorkers(task.getOid(), opTask, result);
- result.computeStatus();
- if (result.isSuccess() && result.getSubresults().size() == 1) { // brutal hack: to show statistics
- result.setMessage(result.getSubresults().get(0).getMessage());
- }
- } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.reconcileWorkersConfirmedPerformed.fatalError").getString(), e);
- }
- showResult(result);
+ private void reconcileWorkersConfirmedPerformed(AjaxRequestTarget target, @NotNull TaskDto task) {
+ Task opTask = createSimpleTask(OPERATION_RECONCILE_WORKERS);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().reconcileWorkers(task.getOid(), opTask, result);
+ result.computeStatus();
+ if (result.isSuccess() && result.getSubresults().size() == 1) { // brutal
+ // hack:
+ // to
+ // show
+ // statistics
+ result.setMessage(result.getSubresults().get(0).getMessage());
+ }
+ } catch (ObjectAlreadyExistsException | ObjectNotFoundException | SchemaException | SecurityViolationException
+ | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(
+ createStringResource("pageTasks.message.reconcileWorkersConfirmedPerformed.fatalError").getString(), e);
+ }
+ showResult(result);
- TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
- provider.clearCache();
+ TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
+ provider.clearCache();
- //refresh feedback and table
- refreshTables(target);
- }
+ // refresh feedback and table
+ refreshTables(target);
+ }
- private void suspendCoordinatorOnly(AjaxRequestTarget target, @NotNull TaskDto task) {
- Task opTask = createSimpleTask(OPERATION_SUSPEND_TASK);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().suspendTasks(Collections.singleton(task.getOid()), WAIT_FOR_TASK_STOP, opTask, result);
- // TODO check whether the suspension was complete
- result.computeStatus();
- } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.suspendCoordinatorOnly.fatalError").getString(), e);
- }
- showResult(result);
+ private void suspendCoordinatorOnly(AjaxRequestTarget target, @NotNull TaskDto task) {
+ Task opTask = createSimpleTask(OPERATION_SUSPEND_TASK);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().suspendTasks(Collections.singleton(task.getOid()), WAIT_FOR_TASK_STOP, opTask, result);
+ // TODO check whether the suspension was complete
+ result.computeStatus();
+ } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.suspendCoordinatorOnly.fatalError").getString(), e);
+ }
+ showResult(result);
- TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
- provider.clearCache();
- refreshTables(target);
- }
+ TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
+ provider.clearCache();
+ refreshTables(target);
+ }
- private void resumeCoordinatorOnly(AjaxRequestTarget target, @NotNull TaskDto task) {
- Task opTask = createSimpleTask(OPERATION_RESUME_TASK);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().resumeTasks(Collections.singleton(task.getOid()), opTask, result);
- result.computeStatus();
- } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.resumeCoordinatorOnly.fatalError").getString(), e);
- }
- showResult(result);
+ private void resumeCoordinatorOnly(AjaxRequestTarget target, @NotNull TaskDto task) {
+ Task opTask = createSimpleTask(OPERATION_RESUME_TASK);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().resumeTasks(Collections.singleton(task.getOid()), opTask, result);
+ result.computeStatus();
+ } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.resumeCoordinatorOnly.fatalError").getString(), e);
+ }
+ showResult(result);
- TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
- provider.clearCache();
- refreshTables(target);
- }
+ TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
+ provider.clearCache();
+ refreshTables(target);
+ }
- private void deleteWorkersAndWorkState(AjaxRequestTarget target, @NotNull TaskDto task) {
- Task opTask = createSimpleTask(OPERATION_DELETE_WORKERS_AND_WORK_STATE);
- OperationResult result = opTask.getResult();
- try {
- getTaskService().deleteWorkersAndWorkState(task.getOid(), WAIT_FOR_TASK_STOP, opTask, result);
- result.computeStatus();
- } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException | RuntimeException | CommunicationException | ConfigurationException e) {
- result.recordFatalError(createStringResource("pageTasks.message.deleteWorkersAndWorkState.fatalError").getString(), e);
- }
- showResult(result);
+ private void deleteWorkersAndWorkState(AjaxRequestTarget target, @NotNull TaskDto task) {
+ Task opTask = createSimpleTask(OPERATION_DELETE_WORKERS_AND_WORK_STATE);
+ OperationResult result = opTask.getResult();
+ try {
+ getTaskService().deleteWorkersAndWorkState(task.getOid(), WAIT_FOR_TASK_STOP, opTask, result);
+ result.computeStatus();
+ } catch (ObjectNotFoundException | SchemaException | SecurityViolationException | ExpressionEvaluationException
+ | RuntimeException | CommunicationException | ConfigurationException e) {
+ result.recordFatalError(createStringResource("pageTasks.message.deleteWorkersAndWorkState.fatalError").getString(),
+ e);
+ }
+ showResult(result);
- TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
- provider.clearCache();
- refreshTables(target);
- }
+ TaskDtoProvider provider = (TaskDtoProvider) getTaskTable().getDataTable().getDataProvider();
+ provider.clearCache();
+ refreshTables(target);
+ }
- private static class SearchFragment extends Fragment {
+ private static class SearchFragment extends Fragment {
- public SearchFragment(String id, String markupId, MarkupContainer markupProvider,
- IModel model) {
- super(id, markupId, markupProvider, model);
+ public SearchFragment(String id, String markupId, MarkupContainer markupProvider, IModel model) {
+ super(id, markupId, markupProvider, model);
- initLayout();
- }
+ initLayout();
+ }
- private void initLayout() {
- final Form searchForm = new com.evolveum.midpoint.web.component.form.Form(ID_SEARCH_FORM);
- add(searchForm);
- searchForm.setOutputMarkupId(true);
-
- final IModel searchModel = (IModel) getDefaultModel();
-
- DropDownChoice listSelect = new DropDownChoice<>(ID_STATE,
- new PropertyModel<>(searchModel, TasksSearchDto.F_STATUS),
- new ReadOnlyEnumValuesModel<>(TaskDtoExecutionStatusFilter.class),
- new EnumChoiceRenderer<>(this));
- listSelect.add(createFilterAjaxBehaviour());
- listSelect.setOutputMarkupId(true);
- listSelect.setNullValid(false);
- if (listSelect.getModel().getObject() == null) {
- listSelect.getModel().setObject(TaskDtoExecutionStatusFilter.ALL);
- }
- searchForm.add(listSelect);
-
- DropDownChoice categorySelect = new DropDownChoice(ID_CATEGORY,
- new PropertyModel(searchModel, TasksSearchDto.F_CATEGORY),
- new IModel>() {
-
- @Override
- public List getObject() {
- return createCategoryList();
- }
- },
- new StringChoiceRenderer.Prefixed("pageTasks.category.") {
-
- @Override
- public String getDisplayValue(String object) {
- if (ALL_CATEGORIES.equals(object)) {
- object = "AllCategories";
- }
- return getPage().getString("pageTasks.category." + object);
- }
-
- }
- );
- categorySelect.setOutputMarkupId(true);
- categorySelect.setNullValid(false);
- categorySelect.add(createFilterAjaxBehaviour());
- if (categorySelect.getModel().getObject() == null) {
- categorySelect.getModel().setObject(ALL_CATEGORIES);
- }
- searchForm.add(categorySelect);
-
- CheckBox showSubtasks = new CheckBox(ID_SHOW_SUBTASKS,
- new PropertyModel(searchModel, TasksSearchDto.F_SHOW_SUBTASKS));
- showSubtasks.add(createFilterAjaxBehaviour());
- searchForm.add(showSubtasks);
-
- AjaxSubmitButton clearButton = new AjaxSubmitButton(ID_SEARCH_CLEAR) {
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- PageTasks page = (PageTasks) getPage();
- page.clearSearchPerformed(target);
- }
-
- @Override
- protected void onError(AjaxRequestTarget target) {
- PageTasks page = (PageTasks) getPage();
- target.add(page.getFeedbackPanel());
- }
- };
- searchForm.add(clearButton);
- }
+ private void initLayout() {
+ final Form searchForm = new com.evolveum.midpoint.web.component.form.Form(ID_SEARCH_FORM);
+ add(searchForm);
+ searchForm.setOutputMarkupId(true);
- private AjaxFormComponentUpdatingBehavior createFilterAjaxBehaviour() {
- return new AjaxFormComponentUpdatingBehavior("change") {
+ final IModel searchModel = (IModel) getDefaultModel();
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- PageTasks page = (PageTasks) getPage();
- page.searchFilterPerformed(target);
- }
- };
- }
+ DropDownChoice listSelect = new DropDownChoice<>(ID_STATE, new PropertyModel<>(searchModel, TasksSearchDto.F_STATUS),
+ new ReadOnlyEnumValuesModel<>(TaskDtoExecutionStatusFilter.class), new EnumChoiceRenderer<>(this));
+ listSelect.add(createFilterAjaxBehaviour());
+ listSelect.setOutputMarkupId(true);
+ listSelect.setNullValid(false);
+ if (listSelect.getModel().getObject() == null) {
+ listSelect.getModel().setObject(TaskDtoExecutionStatusFilter.ALL);
+ }
+ searchForm.add(listSelect);
- private List createCategoryList() {
- List categories = new ArrayList<>();
- categories.add(ALL_CATEGORIES);
+ DropDownChoice categorySelect = new DropDownChoice(ID_CATEGORY,
+ new PropertyModel(searchModel, TasksSearchDto.F_CATEGORY), new IModel>() {
- PageTasks page = (PageTasks) getPage();
- List list = page.getTaskService().getAllTaskCategories();
- if (list != null) {
- categories.addAll(list);
- Collections.sort(categories);
- }
+ @Override
+ public List getObject() {
+ return createCategoryList();
+ }
+ }, new StringChoiceRenderer.Prefixed("pageTasks.category.") {
- return categories;
- }
- }
+ @Override
+ public String getDisplayValue(String object) {
+ if (ALL_CATEGORIES.equals(object)) {
+ object = "AllCategories";
+ }
+ return getPage().getString("pageTasks.category." + object);
+ }
- private void deleteAllClosedTasksConfirmedPerformed(AjaxRequestTarget target) {
- OperationResult launchResult = new OperationResult(OPERATION_DELETE_ALL_CLOSED_TASKS);
- Task task = createSimpleTask(OPERATION_DELETE_ALL_CLOSED_TASKS);
+ });
+ categorySelect.setOutputMarkupId(true);
+ categorySelect.setNullValid(false);
+ categorySelect.add(createFilterAjaxBehaviour());
+ if (categorySelect.getModel().getObject() == null) {
+ categorySelect.getModel().setObject(ALL_CATEGORIES);
+ }
+ searchForm.add(categorySelect);
- task.setHandlerUri(ModelPublicConstants.CLEANUP_TASK_HANDLER_URI);
- task.setName("Closed tasks cleanup");
+ CheckBox showSubtasks = new CheckBox(ID_SHOW_SUBTASKS,
+ new PropertyModel(searchModel, TasksSearchDto.F_SHOW_SUBTASKS));
+ showSubtasks.add(createFilterAjaxBehaviour());
+ searchForm.add(showSubtasks);
- try {
- CleanupPolicyType policy = new CleanupPolicyType();
- policy.setMaxAge(XmlTypeConverter.createDuration(0));
-
- CleanupPoliciesType policies = new CleanupPoliciesType(getPrismContext());
- policies.setClosedTasks(policy);
- task.setExtensionContainerValue(SchemaConstants.MODEL_EXTENSION_CLEANUP_POLICIES, policies);
- } catch (SchemaException e) {
- LOGGER.error("Error dealing with schema (task {})", task, e);
- launchResult.recordFatalError(createStringResource("pageTasks.message.deleteAllClosedTasksConfirmedPerformed.fatalError").getString(), e);
- throw new IllegalStateException("Error dealing with schema", e);
- }
+ AjaxSubmitButton clearButton = new AjaxSubmitButton(ID_SEARCH_CLEAR) {
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ PageTasks page = (PageTasks) getPage();
+ page.clearSearchPerformed(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ PageTasks page = (PageTasks) getPage();
+ target.add(page.getFeedbackPanel());
+ }
+ };
+ searchForm.add(clearButton);
+ }
- getTaskManager().switchToBackground(task, launchResult);
+ private AjaxFormComponentUpdatingBehavior createFilterAjaxBehaviour() {
+ return new AjaxFormComponentUpdatingBehavior("change") {
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ PageTasks page = (PageTasks) getPage();
+ page.searchFilterPerformed(target);
+ }
+ };
+ }
+
+ private List createCategoryList() {
+ List categories = new ArrayList<>();
+ categories.add(ALL_CATEGORIES);
+
+ PageTasks page = (PageTasks) getPage();
+ List list = page.getTaskService().getAllTaskCategories();
+ if (list != null) {
+ categories.addAll(list);
+ Collections.sort(categories);
+ }
+
+ return categories;
+ }
+ }
+
+ private void deleteAllClosedTasksConfirmedPerformed(AjaxRequestTarget target) {
+ OperationResult launchResult = new OperationResult(OPERATION_DELETE_ALL_CLOSED_TASKS);
+ Task task = createSimpleTask(OPERATION_DELETE_ALL_CLOSED_TASKS);
+
+ task.setHandlerUri(ModelPublicConstants.CLEANUP_TASK_HANDLER_URI);
+ task.setName("Closed tasks cleanup");
+
+ try {
+ CleanupPolicyType policy = new CleanupPolicyType();
+ policy.setMaxAge(XmlTypeConverter.createDuration(0));
+
+ CleanupPoliciesType policies = new CleanupPoliciesType(getPrismContext());
+ policies.setClosedTasks(policy);
+ task.setExtensionContainerValue(SchemaConstants.MODEL_EXTENSION_CLEANUP_POLICIES, policies);
+ } catch (SchemaException e) {
+ LOGGER.error("Error dealing with schema (task {})", task, e);
+ launchResult.recordFatalError(
+ createStringResource("pageTasks.message.deleteAllClosedTasksConfirmedPerformed.fatalError").getString(), e);
+ throw new IllegalStateException("Error dealing with schema", e);
+ }
+
+ getTaskManager().switchToBackground(task, launchResult);
launchResult.setBackgroundTaskOid(task.getOid());
- showResult(launchResult);
- target.add(getFeedbackPanel());
- }
+ showResult(launchResult);
+ target.add(getFeedbackPanel());
+ }
- private void addInlineMenuToTaskRow(TaskDto dto) {
- addInlineMenuToTaskDto(dto);
+ private void addInlineMenuToTaskRow(TaskDto dto) {
+ addInlineMenuToTaskDto(dto);
- List list = new ArrayList<>();
- if (dto.getSubtasks() != null) {
- list.addAll(dto.getTransientSubtasks());
- }
- if (dto.getTransientSubtasks() != null) {
- list.addAll(dto.getSubtasks());
- }
+ List list = new ArrayList<>();
+ if (dto.getSubtasks() != null) {
+ list.addAll(dto.getTransientSubtasks());
+ }
+ if (dto.getTransientSubtasks() != null) {
+ list.addAll(dto.getSubtasks());
+ }
- for (TaskDto task : list) {
- addInlineMenuToTaskDto(task);
- }
- }
+ for (TaskDto task : list) {
+ addInlineMenuToTaskDto(task);
+ }
+ }
- private void addInlineMenuToTaskDto(final TaskDto dto) {
- List items = dto.getMenuItems();
- if (!items.isEmpty()) {
- //menu was already added
- return;
- }
+ private void addInlineMenuToTaskDto(final TaskDto dto) {
+ List items = dto.getMenuItems();
+ if (!items.isEmpty()) {
+ // menu was already added
+ return;
+ }
- items.addAll(createTasksInlineMenu(false, dto));
- }
+ items.addAll(createTasksInlineMenu(false, dto));
+ }
- private void addInlineMenuToNodeRow(final NodeDto dto) {
- List items = dto.getMenuItems();
- if (!items.isEmpty()) {
- //menu already added
- return;
- }
+ private void addInlineMenuToNodeRow(final NodeDto dto) {
+ List items = dto.getMenuItems();
+ if (!items.isEmpty()) {
+ // menu already added
+ return;
+ }
- items.addAll(createNodesInlineMenu());
- }
+ items.addAll(createNodesInlineMenu());
+ }
- private IModel getTaskConfirmationMessageModel(ColumnMenuAction action, String actionName){
- if (action.getRowModel() == null) {
- return createStringResource("pageTasks.message.confirmationMessageForMultipleTaskObject",
- actionName, WebComponentUtil.getSelectedData(getTaskTable()).size());
- } else {
- String objectName = ((TaskDto)(action.getRowModel().getObject())).getName();
- return createStringResource("pageTasks.message.confirmationMessageForSingleTaskObject",
- actionName, objectName);
- }
+ private IModel getTaskConfirmationMessageModel(ColumnMenuAction action, String actionName) {
+ if (action.getRowModel() == null) {
+ return createStringResource("pageTasks.message.confirmationMessageForMultipleTaskObject", actionName,
+ WebComponentUtil.getSelectedData(getTaskTable()).size());
+ } else {
+ String objectName = ((TaskDto) (action.getRowModel().getObject())).getName();
+ return createStringResource("pageTasks.message.confirmationMessageForSingleTaskObject", actionName, objectName);
+ }
- }
+ }
- private boolean isTaskShowConfirmationDialog(ColumnMenuAction action){
- return action.getRowModel() != null ||
- WebComponentUtil.getSelectedData(getTaskTable()).size() > 0;
- }
+ private boolean isTaskShowConfirmationDialog(ColumnMenuAction action) {
+ return action.getRowModel() != null || WebComponentUtil.getSelectedData(getTaskTable()).size() > 0;
+ }
- private IModel getNodeConfirmationMessageModel(ColumnMenuAction action, String actionName){
- if (action.getRowModel() == null) {
- return createStringResource("pageTasks.message.confirmationMessageForMultipleNodeObject",
- actionName, WebComponentUtil.getSelectedData(getNodeTable()).size());
- } else {
- String objectName = ((NodeDto)(action.getRowModel().getObject())).getName();
- return createStringResource("pageTasks.message.confirmationMessageForSingleNodeObject",
- actionName, objectName);
- }
+ private IModel getNodeConfirmationMessageModel(ColumnMenuAction action, String actionName) {
+ if (action.getRowModel() == null) {
+ return createStringResource("pageTasks.message.confirmationMessageForMultipleNodeObject", actionName,
+ WebComponentUtil.getSelectedData(getNodeTable()).size());
+ } else {
+ String objectName = ((NodeDto) (action.getRowModel().getObject())).getName();
+ return createStringResource("pageTasks.message.confirmationMessageForSingleNodeObject", actionName, objectName);
+ }
- }
+ }
- private boolean isNodeShowConfirmationDialog(ColumnMenuAction action){
- return action.getRowModel() != null ||
- WebComponentUtil.getSelectedData(getNodeTable()).size() > 0;
- }
+ private boolean isNodeShowConfirmationDialog(ColumnMenuAction action) {
+ return action.getRowModel() != null || WebComponentUtil.getSelectedData(getNodeTable()).size() > 0;
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSubtasksAndThreadsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSubtasksAndThreadsTabPanel.java
index 1c5ab78cfc1..8db36b9b3a3 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSubtasksAndThreadsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSubtasksAndThreadsTabPanel.java
@@ -107,7 +107,7 @@ public boolean isVisible() {
Label subtasksLabel = new Label(ID_SUBTASKS_LABEL, new ResourceModel("pageTaskEdit.subtasksLabel"));
subtasksLabel.add(hiddenWhenEditingOrNoSubtasks);
add(subtasksLabel);
- SubtasksPanel subtasksPanel = new SubtasksPanel(ID_SUBTASKS_PANEL, new PropertyModel<>(taskDtoModel, TaskDto.F_SUBTASKS), parentPage.getWorkflowManager().isEnabled(), parentPage);
+ SubtasksPanel subtasksPanel = new SubtasksPanel(ID_SUBTASKS_PANEL, new PropertyModel<>(taskDtoModel, TaskDto.F_SUBTASKS), parentPage.getWorkflowManager().isEnabled());
subtasksPanel.add(hiddenWhenEditingOrNoSubtasks);
add(subtasksPanel);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
index 105d0e8e559..b3b9bcaf62c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/dto/TaskDto.java
@@ -94,6 +94,7 @@ public class TaskDto extends Selectable implements InlineMenuable {
public static final String F_MODEL_OPERATION_STATUS = "modelOperationStatus";
public static final String F_SUBTASKS = "subtasks";
public static final String F_NAME = "name";
+ public static final String F_TASK_KIND = "taskKind";
public static final String F_OID = "oid";
public static final String F_DESCRIPTION = "description";
public static final String F_CATEGORY = "category";
@@ -169,7 +170,7 @@ public class TaskDto extends Selectable implements InlineMenuable {
private List triggers; // initialized on demand
private PageBase pageBase;
- //region Construction
+ //region Construction
// parentTaskBean can be filled-in for optimization purposes (MID-4238); but take care to provide it in a suitable form
// (e.g. with subtasks, if they are needed) - a conservative approach to this is implemented in fillInChildren
@@ -639,6 +640,14 @@ public void setWorkerThreads(Integer workerThreads) {
//endregion
//region Getters for read-only properties
+ public TaskKindType getTaskKind() {
+ if (taskType.getWorkManagement() == null) {
+ return null;
+ }
+
+ return taskType.getWorkManagement().getTaskKind();
+ }
+
public String getCategory() {
return taskType.getCategory();
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/subtasks/SubtasksPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/subtasks/SubtasksPanel.java
index 12c00414a08..423667f003f 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/subtasks/SubtasksPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/subtasks/SubtasksPanel.java
@@ -20,15 +20,23 @@
import java.util.List;
import com.evolveum.midpoint.gui.api.page.PageBase;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.data.TablePanel;
+import com.evolveum.midpoint.web.component.data.column.EnumPropertyColumn;
+import com.evolveum.midpoint.web.component.data.column.LinkColumn;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
+import com.evolveum.midpoint.web.page.admin.server.PageTaskEdit;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
+import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
/**
* @author mederly
@@ -36,18 +44,28 @@
public class SubtasksPanel extends BasePanel> {
private static final String ID_SUBTASKS_TABLE = "subtasksTable";
+
+ private boolean workflowsEnabled;
- public SubtasksPanel(String id, IModel> model, boolean workflowsEnabled, PageBase pageBase) {
+ public SubtasksPanel(String id, IModel> model, boolean workflowsEnabled) {
super(id, model);
- initLayout(workflowsEnabled, pageBase);
+ this.workflowsEnabled = workflowsEnabled;
+
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ initLayout();
}
- private void initLayout(boolean workflowsEnabled, PageBase pageBase) {
+ private void initLayout() {
List> columns = new ArrayList<>();
columns.add(PageTasks.createTaskNameColumn(this, "SubtasksPanel.label.name"));
+ columns.add(createTaskKindColumn());
columns.add(PageTasks.createTaskCategoryColumn(this, "SubtasksPanel.label.category"));
columns.add(PageTasks.createTaskExecutionStatusColumn(this, "SubtasksPanel.label.executionState"));
- columns.add(PageTasks.createProgressColumn(pageBase, "SubtasksPanel.label.progress"));
+ columns.add(PageTasks.createProgressColumn(getPageBase(), "SubtasksPanel.label.progress"));
columns.add(PageTasks.createTaskResultStatusColumn(this, "SubtasksPanel.label.result"));
//columns.add(PageTasks.createTaskDetailColumn(this, "SubtasksPanel.label.detail", workflowsEnabled));
@@ -55,4 +73,15 @@ private void initLayout(boolean workflowsEnabled, PageBase pageBase) {
add(new TablePanel<>(ID_SUBTASKS_TABLE, provider, columns));
}
+
+ public EnumPropertyColumn createTaskKindColumn() {
+ return new EnumPropertyColumn(createStringResource("SubtasksPanel.label.kind"), TaskDto.F_TASK_KIND) {
+
+ @Override
+ protected String translate(Enum en) {
+ return createStringResource(en).getString();
+ }
+ };
+ }
+
}
diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
index cfef5865efe..939317baee5 100755
--- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties
+++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties
@@ -4389,4 +4389,9 @@ PolyStringEditorPanel.keyLabel=key
PolyStringEditorPanel.showLanguages=Show languages
PolyStringEditorPanel.hideLanguages=Hide languages
PolyStringEditorPanel.addLanguage=Add language
-ValueChoosePanel.undefined=Undefined
\ No newline at end of file
+ValueChoosePanel.undefined=Undefined
+TaskKindType.STANDALONE=Standalone
+TaskKindType.COORDINATOR=Coordinator
+TaskKindType.WORKER=Worker
+TaskKindType.PARTITIONED_MASTER=Partitioned master
+SubtasksPanel.label.kind=Task kind
\ No newline at end of file
diff --git a/icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractDummyConnector.java b/icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractDummyConnector.java
index b056b70508a..697c504b665 100644
--- a/icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractDummyConnector.java
+++ b/icf-connectors/dummy-connector/src/main/java/com/evolveum/icf/dummy/connector/AbstractDummyConnector.java
@@ -41,6 +41,7 @@
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import javax.security.sasl.AuthenticationException;
@@ -558,7 +559,11 @@ private List createAuxiliaryObjectClasses() {
private void buildAttributes(ObjectClassInfoBuilder icfObjClassBuilder, DummyObjectClass dummyObjectClass) {
for (DummyAttributeDefinition dummyAttrDef : dummyObjectClass.getAttributeDefinitions()) {
- AttributeInfoBuilder attrBuilder = new AttributeInfoBuilder(dummyAttrDef.getAttributeName(), dummyAttrDef.getAttributeType());
+ Class> attributeClass = dummyAttrDef.getAttributeType();
+ if (dummyAttrDef.isSensitive()) {
+ attributeClass = GuardedString.class;
+ }
+ AttributeInfoBuilder attrBuilder = new AttributeInfoBuilder(dummyAttrDef.getAttributeName(), attributeClass);
attrBuilder.setMultiValued(dummyAttrDef.isMulti());
attrBuilder.setRequired(dummyAttrDef.isRequired());
attrBuilder.setReturnedByDefault(dummyAttrDef.isReturnedByDefault());
@@ -1209,7 +1214,7 @@ private ConnectorObjectBuilder createConnectorObjectBuilderCommon(DummyObject du
}
}
// Return all attributes that are returned by default. We will filter them out later.
- Set