http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java index 885a3d5..0069c52 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java @@ -18,6 +18,7 @@ */ package org.apache.syncope.client.console.panels; +import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; @@ -26,8 +27,8 @@ import java.util.List; import org.apache.syncope.client.console.rest.BaseRestClient; import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink; import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior; -import org.apache.syncope.client.console.bulk.BulkActionModal; -import org.apache.syncope.client.console.bulk.BulkContent; +import org.apache.syncope.client.console.batch.BatchModal; +import org.apache.syncope.client.console.batch.BatchContent; import org.apache.syncope.client.console.pages.BasePage; import org.apache.syncope.client.console.panels.DirectoryPanel.EventDataWrapper; import org.apache.syncope.client.console.rest.RestClient; @@ -68,9 +69,9 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab private int rowsPerPage = 10; - private final Collection<ActionLink.ActionType> bulkActions = new ArrayList<>(); + private final Collection<ActionLink.ActionType> batches = new ArrayList<>(); - private RestClient bulkActionExecutor; + private RestClient batchExecutor; private String itemKeyField; @@ -96,13 +97,13 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab return this; } - public Builder<T, S> addBulkAction(final ActionLink.ActionType actionType) { - bulkActions.add(actionType); + public Builder<T, S> addBatch(final ActionLink.ActionType actionType) { + batches.add(actionType); return this; } - public Builder<T, S> setBulkActionExecutor(final BaseRestClient bulkActionExecutor) { - this.bulkActionExecutor = bulkActionExecutor; + public Builder<T, S> setBatchExecutor(final BaseRestClient batchExecutor) { + this.batchExecutor = batchExecutor; return this; } @@ -111,15 +112,16 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab return this; } - public Builder<T, S> setBulkActions( - final Collection<ActionLink.ActionType> bulkActions, - final RestClient bulkActionExecutor, + public Builder<T, S> setBatches( + final Collection<ActionLink.ActionType> batches, + final RestClient batchExecutor, final String itemKeyField) { - this.bulkActions.clear(); - if (bulkActions != null) { - this.bulkActions.addAll(bulkActions); + + this.batches.clear(); + if (batches != null) { + this.batches.addAll(batches); } - this.bulkActionExecutor = bulkActionExecutor; + this.batchExecutor = batchExecutor; this.itemKeyField = itemKeyField; return this; } @@ -147,8 +149,8 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab return this; } - private boolean isBulkEnabled() { - return checkBoxEnabled && bulkActionExecutor != null && !bulkActions.isEmpty(); + private boolean isBatchEnabled() { + return checkBoxEnabled && batchExecutor != null && !batches.isEmpty(); } public void setMultiLevelPanel(final BaseModal<?> baseModal, final MultilevelPanel multiLevelPanel) { @@ -168,16 +170,17 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab private AjaxDataTablePanel(final String id, final Builder<T, S> builder) { super(id); - final BaseModal<T> bulkModal = new BaseModal<>("bulkModal"); - add(bulkModal); + BaseModal<T> batchModal = new BaseModal<>("batchModal"); + batchModal.size(Modal.Size.Large); + add(batchModal); - bulkModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { + batchModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = 8804221891699487149L; @Override public void onClose(final AjaxRequestTarget target) { - bulkModal.show(false); + batchModal.show(false); EventDataWrapper data = new EventDataWrapper(); data.setTarget(target); @@ -191,11 +194,11 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab } }); - Fragment fragment = new Fragment("tablePanel", "bulkAvailable", this); + Fragment fragment = new Fragment("tablePanel", "batchAvailable", this); add(fragment); - Form<T> bulkActionForm = new Form<>("groupForm"); - fragment.add(bulkActionForm); + Form<T> batchForm = new Form<>("groupForm"); + fragment.add(batchForm); group = new CheckGroup<>("checkgroup", model); group.add(new IndicatorAjaxFormChoiceComponentUpdatingBehavior() { @@ -210,7 +213,7 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab }); } }); - bulkActionForm.add(group); + batchForm.add(group); if (builder.checkBoxEnabled) { builder.columns.add(0, new CheckGroupColumn<>(group)); @@ -237,7 +240,7 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab group.add(dataTable); - fragment.add(new IndicatingAjaxButton("bulkActionLink", bulkActionForm) { + fragment.add(new IndicatingAjaxButton("batchLink", batchForm) { private static final long serialVersionUID = 382302811235019988L; @@ -249,40 +252,39 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab } if (builder.multiLevelPanel == null) { - bulkModal.header(new ResourceModel("bulk.action")); - bulkModal.changeCloseButtonLabel(getString("cancel", null, "Cancel"), target); + batchModal.header(new ResourceModel("batch")); + batchModal.changeCloseButtonLabel(getString("cancel", null, "Cancel"), target); - target.add(bulkModal.setContent(new BulkActionModal<>( - bulkModal, + target.add(batchModal.setContent(new BatchModal<>( + batchModal, builder.pageRef, new ArrayList<>(group.getModelObject()), builder.columns.size() == 1 ? builder.columns // serialization problem with sublist only : new ArrayList<>(builder.columns.subList(1, builder.columns.size())), - builder.bulkActions, - builder.bulkActionExecutor, + builder.batches, + builder.batchExecutor, builder.itemKeyField))); - bulkModal.show(true); + batchModal.show(true); } else { - builder.multiLevelPanel.next( - getString("bulk.action"), - new BulkContent<>( + builder.multiLevelPanel.next(getString("batch"), + new BatchContent<>( builder.baseModal, new ArrayList<>(group.getModelObject()), builder.columns.size() == 1 ? builder.columns // serialization problem with sublist only : new ArrayList<>(builder.columns.subList(1, builder.columns.size())), - builder.bulkActions, - builder.bulkActionExecutor, + builder.batches, + builder.batchExecutor, builder.itemKeyField), target); } group.setModelObject(Collections.<T>emptyList()); target.add(group); } - }.setEnabled(builder.isBulkEnabled()).setVisible(builder.isBulkEnabled())); + }.setEnabled(builder.isBatchEnabled()).setVisible(builder.isBatchEnabled())); } }
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java index bea77ae..8fdc994 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyDirectoryPanel.java @@ -221,12 +221,10 @@ public abstract class AnyDirectoryPanel<A extends AnyTO, E extends AbstractAnyRe } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { - List<ActionLink.ActionType> bulkActions = new ArrayList<>(); - - bulkActions.add(ActionLink.ActionType.DELETE); - - return bulkActions; + protected Collection<ActionLink.ActionType> getBatches() { + List<ActionLink.ActionType> batches = new ArrayList<>(); + batches.add(ActionLink.ActionType.DELETE); + return batches; } public interface AnyDirectoryPanelBuilder extends Serializable { http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java index 8754d01..280e90b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java @@ -110,7 +110,7 @@ public class AnyTypeClassesPanel extends TypesDirectoryPanel< } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java index 132a05a..97158e5 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java @@ -109,7 +109,7 @@ public class AnyTypesPanel extends TypesDirectoryPanel<AnyTypeTO, AnyTypesPanel. } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java index ba9e033..5fe68f0 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java @@ -214,7 +214,7 @@ public class ApplicationDirectoryPanel extends } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java index ab053bf..271d104 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnInstanceHistoryConfDirectoryPanel.java @@ -163,7 +163,7 @@ public abstract class ConnInstanceHistoryConfDirectoryPanel extends DirectoryPan } @Override - protected Collection<ActionType> getBulkActions() { + protected Collection<ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java index 22c104e..c2ef5e5 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java @@ -297,8 +297,7 @@ public abstract class DirectoryPanel< }. setColumns(getColumns()). - setRowsPerPage(rows). - setBulkActions(getBulkActions(), restClient, itemKeyFieldName). + setRowsPerPage(rows).setBatches(getBatches(), restClient, itemKeyFieldName). setContainer(container); if (!checkBoxEnabled) { @@ -397,7 +396,7 @@ public abstract class DirectoryPanel< } } - protected abstract Collection<ActionLink.ActionType> getBulkActions(); + protected abstract Collection<ActionLink.ActionType> getBatches(); public abstract static class Builder<T extends Serializable, W extends Serializable, E extends RestClient> extends WizardMgtPanel.Builder<W> { http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java index ebbacd4..6cc36c6 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java @@ -156,7 +156,7 @@ public class DynRealmDirectoryPanel extends } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java index 59c4901..ac5663b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java @@ -52,7 +52,7 @@ import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.lib.to.UserTO; import org.apache.syncope.common.lib.types.AnyEntitlement; import org.apache.syncope.common.lib.types.AnyTypeKind; -import org.apache.syncope.common.lib.types.BulkMembersActionType; +import org.apache.syncope.common.lib.types.ProvisionAction; import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -274,7 +274,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli @Override public void onClick(final AjaxRequestTarget target, final GroupTO ignore) { try { - restClient.bulkMembersAction(model.getObject().getKey(), BulkMembersActionType.PROVISION); + restClient.provisionMembers(model.getObject().getKey(), ProvisionAction.PROVISION); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); } catch (SyncopeClientException e) { @@ -288,15 +288,14 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli String.format("%s,%s", StandardEntitlement.TASK_CREATE, StandardEntitlement.TASK_EXECUTE)). setRealm(realm); - panel.add( - new ActionLink<GroupTO>() { + panel.add(new ActionLink<GroupTO>() { private static final long serialVersionUID = -7978723352517770644L; @Override public void onClick(final AjaxRequestTarget target, final GroupTO ignore) { try { - restClient.bulkMembersAction(model.getObject().getKey(), BulkMembersActionType.DEPROVISION); + restClient.provisionMembers(model.getObject().getKey(), ProvisionAction.DEPROVISION); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); } catch (SyncopeClientException e) { http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java index 174526c..6d2e0be 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java @@ -185,7 +185,7 @@ public class ImplementationDirectoryPanel extends DirectoryPanel< } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java index dbf222c..e2ebb57 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java @@ -133,7 +133,7 @@ public class ParametersDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>singletonList(ActionLink.ActionType.DELETE); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java index 2444812..47c972d 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java @@ -127,7 +127,7 @@ public class PrivilegeDirectoryPanel extends DirectoryPanel< } @Override - protected Collection<ActionType> getBulkActions() { + protected Collection<ActionType> getBatches() { return Collections.<ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java index 95331ee..303ec8e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java @@ -49,7 +49,7 @@ import org.apache.syncope.common.lib.to.EntityTO; import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.to.RealmTO; -import org.apache.syncope.common.lib.types.PropagationTaskExecStatus; +import org.apache.syncope.common.lib.types.ExecStatus; import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.Component; import org.apache.wicket.PageReference; @@ -204,7 +204,7 @@ public abstract class Realm extends WizardMgtPanel<RealmTO> { add(mlp); final PropagationStatus syncope = new PropagationStatus(); - syncope.setStatus(PropagationTaskExecStatus.SUCCESS); + syncope.setStatus(ExecStatus.SUCCESS); syncope.setResource(Constants.SYNCOPE); List<PropagationStatus> propagations = new ArrayList<>(); @@ -250,8 +250,8 @@ public abstract class Realm extends WizardMgtPanel<RealmTO> { @Override protected boolean statusCondition(final PropagationStatus bean) { return !Constants.SYNCOPE.equals(bean.getResource()) - && (PropagationTaskExecStatus.CREATED == bean.getStatus() - || PropagationTaskExecStatus.SUCCESS == bean.getStatus()); + && (ExecStatus.CREATED == bean.getStatus() + || ExecStatus.SUCCESS == bean.getStatus()); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java index 939ac8c..2df032d 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java @@ -112,7 +112,7 @@ public class RelationshipTypesPanel extends TypesDirectoryPanel< } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java index 1e34454..4adb141 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java @@ -302,7 +302,7 @@ public class RemediationDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java index 09a1cf9..a9a0f06 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ResourceHistoryConfDirectoryPanel.java @@ -164,7 +164,7 @@ public abstract class ResourceHistoryConfDirectoryPanel extends DirectoryPanel< } @Override - protected Collection<ActionType> getBulkActions() { + protected Collection<ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java index ed17bc3..c58c095 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java @@ -260,7 +260,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleWrapper, Role } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>singletonList(ActionLink.ActionType.DELETE); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java index 1ced1aa..e03aff7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java @@ -120,7 +120,7 @@ public class SchemaTypePanel extends TypesDirectoryPanel<SchemaTO, SchemaProvide } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java index 7660153..2f05b43 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java @@ -119,7 +119,7 @@ public class SecurityQuestionsPanel extends DirectoryPanel< } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java index 511fbfc..43ab301 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java @@ -163,7 +163,7 @@ public class TypeExtensionDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java index 5452853..b0edf68 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java @@ -89,15 +89,13 @@ public class UserDirectoryPanel extends AnyDirectoryPanel<UserTO, UserRestClient } @Override - protected Collection<ActionType> getBulkActions() { - List<ActionType> bulkActions = new ArrayList<>(); - - bulkActions.add(ActionType.MUSTCHANGEPASSWORD); - bulkActions.add(ActionType.DELETE); - bulkActions.add(ActionType.SUSPEND); - bulkActions.add(ActionType.REACTIVATE); - - return bulkActions; + protected Collection<ActionType> getBatches() { + List<ActionType> batches = new ArrayList<>(); + batches.add(ActionType.MUSTCHANGEPASSWORD); + batches.add(ActionType.DELETE); + batches.add(ActionType.SUSPEND); + batches.add(ActionType.REACTIVATE); + return batches; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java index a830311..a640367 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java @@ -280,7 +280,7 @@ public class WorkflowDirectoryPanel extends DirectoryPanel< } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java index 3ce4143..3380469 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java @@ -67,7 +67,7 @@ public abstract class AnySelectionDirectoryPanel<A extends AnyTO, E extends Abst } @Override - protected Collection<ActionType> getBulkActions() { + protected Collection<ActionType> getBatches() { return Collections.<ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java index aae9114..5f09529 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java @@ -194,7 +194,7 @@ public abstract class PolicyDirectoryPanel<T extends PolicyTO> } @Override - protected Collection<ActionType> getBulkActions() { + protected Collection<ActionType> getBatches() { return Collections.<ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java index 2b89ee4..3a14f41 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java @@ -205,10 +205,8 @@ public class PolicyRuleDirectoryPanel<T extends PolicyTO> extends DirectoryPanel } @Override - protected Collection<ActionType> getBulkActions() { - final List<ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionType.DELETE); - return bulkActions; + protected Collection<ActionType> getBatches() { + return Collections.emptyList(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java index 5109da3..537f5fd 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java @@ -47,6 +47,7 @@ import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.JobTO; import org.apache.syncope.common.lib.to.ReportTO; +import org.apache.wicket.Component; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; @@ -58,6 +59,7 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColu import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; @@ -112,7 +114,7 @@ public abstract class ReportDirectoryPanel columns.add(new DatePropertyColumn<>( new StringResourceModel("nextExec", this), null, "nextExec")); - + columns.add(new DatePropertyColumn<>( new StringResourceModel("start", this), "start", "start")); @@ -135,13 +137,18 @@ public abstract class ReportDirectoryPanel final String componentId, final IModel<ReportTO> rowModel) { - JobTO jobTO = restClient.getJob(rowModel.getObject().getKey()); - JobActionPanel panel = new JobActionPanel( - componentId, jobTO, false, ReportDirectoryPanel.this, pageRef); - MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, - String.format("%s,%s", - StandardEntitlement.TASK_EXECUTE, - StandardEntitlement.TASK_UPDATE)); + Component panel; + try { + JobTO jobTO = restClient.getJob(rowModel.getObject().getKey()); + panel = new JobActionPanel(componentId, jobTO, false, ReportDirectoryPanel.this, pageRef); + MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, + String.format("%s,%s", + StandardEntitlement.REPORT_EXECUTE, + StandardEntitlement.REPORT_UPDATE)); + } catch (Exception e) { + LOG.error("Could not get job for report {}", rowModel.getObject().getKey(), e); + panel = new Label(componentId, Model.of()); + } cellItem.add(panel); } @@ -218,7 +225,7 @@ public abstract class ReportDirectoryPanel @Override public void onClick(final AjaxRequestTarget target, final ReportTO ignore) { - viewTask(model.getObject(), target); + viewReport(model.getObject(), target); } }, ActionLink.ActionType.VIEW, StandardEntitlement.REPORT_READ); @@ -257,11 +264,11 @@ public abstract class ReportDirectoryPanel } @Override - protected Collection<ActionType> getBulkActions() { - final List<ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionType.EXECUTE); - bulkActions.add(ActionType.DELETE); - return bulkActions; + protected Collection<ActionType> getBatches() { + List<ActionType> batches = new ArrayList<>(); + batches.add(ActionType.EXECUTE); + batches.add(ActionType.DELETE); + return batches; } @Override @@ -274,7 +281,7 @@ public abstract class ReportDirectoryPanel return Constants.PREF_REPORT_TASKS_PAGINATOR_ROWS; } - protected abstract void viewTask(final ReportTO reportTO, final AjaxRequestTarget target); + protected abstract void viewReport(ReportTO reportTO, AjaxRequestTarget target); protected class ReportDataProvider extends DirectoryDataProvider<ReportTO> { http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java index 04a37a2..4cd32b7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java @@ -205,7 +205,7 @@ public class ReportTemplateDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { + protected Collection<ActionLink.ActionType> getBatches() { return Collections.<ActionLink.ActionType>emptyList(); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java index 6ac03e2..7b7edd1 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java @@ -191,10 +191,8 @@ public class ReportletDirectoryPanel extends DirectoryPanel< } @Override - protected Collection<ActionType> getBulkActions() { - final List<ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionType.DELETE); - return bulkActions; + protected Collection<ActionType> getBatches() { + return Collections.emptyList(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java index 639a4eb..0aa2a2f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java @@ -18,19 +18,32 @@ */ package org.apache.syncope.client.console.rest; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import javax.ws.rs.core.GenericType; +import javax.ws.rs.core.HttpHeaders; +import javax.ws.rs.core.Response; +import org.apache.commons.lang3.StringUtils; +import org.apache.cxf.jaxrs.client.Client; +import org.apache.cxf.jaxrs.client.WebClient; import org.apache.syncope.client.console.commons.status.StatusBean; import org.apache.syncope.client.console.commons.status.StatusUtils; +import org.apache.syncope.client.lib.batch.BatchRequest; import org.apache.syncope.common.lib.patch.AssociationPatch; import org.apache.syncope.common.lib.patch.DeassociationPatch; import org.apache.syncope.common.lib.patch.StatusPatch; import org.apache.syncope.common.lib.to.AnyTO; -import org.apache.syncope.common.lib.to.BulkAction; -import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.types.ResourceAssociationAction; import org.apache.syncope.common.lib.types.ResourceDeassociationAction; +import org.apache.syncope.common.rest.api.RESTHeaders; +import org.apache.syncope.common.rest.api.batch.BatchPayloadParser; +import org.apache.syncope.common.rest.api.batch.BatchRequestItem; +import org.apache.syncope.common.rest.api.batch.BatchResponseItem; import org.apache.syncope.common.rest.api.service.AnyService; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; @@ -59,112 +72,103 @@ public abstract class AbstractAnyRestClient<TO extends AnyTO> extends BaseRestCl return result; } - public BulkActionResult unlink(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; - synchronized (this) { - AnyService<?> service = getService(etag, getAnyServiceClass()); - - DeassociationPatch deassociationPatch = new DeassociationPatch.Builder().key(key). - action(ResourceDeassociationAction.UNLINK). - resources(StatusUtils.buildStatusPatch(statuses).getResources()).build(); - - result = service.deassociate(deassociationPatch).readEntity(BulkActionResult.class); - - resetClient(getAnyServiceClass()); - } - return result; + private List<BatchResponseItem> parseBatchResponse(final Response response) throws IOException { + return BatchPayloadParser.parse( + (InputStream) response.getEntity(), response.getMediaType(), new BatchResponseItem()); } - public BulkActionResult link(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; - synchronized (this) { - AnyService<?> service = getService(etag, getAnyServiceClass()); - - StatusPatch statusPatch = StatusUtils.buildStatusPatch(statuses); + public Map<String, String> associate( + final ResourceAssociationAction action, + final String etag, + final String key, + final List<StatusBean> statuses) { - AssociationPatch associationPatch = new AssociationPatch.Builder().key(key). - action(ResourceAssociationAction.LINK). - onSyncope(statusPatch.isOnSyncope()). - resources(statusPatch.getResources()).build(); - - result = service.associate(associationPatch).readEntity(BulkActionResult.class); - - resetClient(getAnyServiceClass()); - } - return result; - } - - public BulkActionResult deprovision(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; + Map<String, String> result = new LinkedHashMap<>(); synchronized (this) { AnyService<?> service = getService(etag, getAnyServiceClass()); + Client client = WebClient.client(service); + List<String> accept = client.getHeaders().get(HttpHeaders.ACCEPT); + if (!accept.contains(RESTHeaders.MULTIPART_MIXED)) { + client.accept(RESTHeaders.MULTIPART_MIXED); + } - DeassociationPatch deassociationPatch = new DeassociationPatch.Builder().key(key). - action(ResourceDeassociationAction.DEPROVISION). - resources(StatusUtils.buildStatusPatch(statuses).getResources()).build(); - - result = service.deassociate(deassociationPatch).readEntity(BulkActionResult.class); - - resetClient(getAnyServiceClass()); - } - return result; - } - - public BulkActionResult provision(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; - synchronized (this) { - AnyService<?> service = getService(etag, getAnyServiceClass()); - - StatusPatch statusPatch = StatusUtils.buildStatusPatch(statuses); + StatusPatch statusPatch = StatusUtils.statusPatch(statuses).build(); AssociationPatch associationPatch = new AssociationPatch.Builder().key(key). - action(ResourceAssociationAction.PROVISION). + action(action). onSyncope(statusPatch.isOnSyncope()). resources(statusPatch.getResources()).build(); - - result = service.associate(associationPatch).readEntity(BulkActionResult.class); + try { + List<BatchResponseItem> items = parseBatchResponse(service.associate(associationPatch)); + for (int i = 0; i < items.size(); i++) { + result.put( + associationPatch.getResources().get(i), + getStatus(items.get(i).getStatus())); + } + } catch (IOException e) { + LOG.error("While processing Batch response", e); + } resetClient(getAnyServiceClass()); } return result; } - public BulkActionResult unassign(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; + public Map<String, String> deassociate( + final ResourceDeassociationAction action, + final String etag, + final String key, + final List<StatusBean> statuses) { + + Map<String, String> result = new LinkedHashMap<>(); synchronized (this) { AnyService<?> service = getService(etag, getAnyServiceClass()); + Client client = WebClient.client(service); + List<String> accept = client.getHeaders().get(HttpHeaders.ACCEPT); + if (!accept.contains(RESTHeaders.MULTIPART_MIXED)) { + client.accept(RESTHeaders.MULTIPART_MIXED); + } DeassociationPatch deassociationPatch = new DeassociationPatch.Builder().key(key). - action(ResourceDeassociationAction.UNASSIGN). - resources(StatusUtils.buildStatusPatch(statuses).getResources()).build(); - - result = service.deassociate(deassociationPatch).readEntity(BulkActionResult.class); + action(action). + resources(StatusUtils.statusPatch(statuses).build().getResources()).build(); + try { + List<BatchResponseItem> items = parseBatchResponse(service.deassociate(deassociationPatch)); + for (int i = 0; i < items.size(); i++) { + result.put( + deassociationPatch.getResources().get(i), + getStatus(items.get(i).getStatus())); + } + } catch (IOException e) { + LOG.error("While processing Batch response", e); + } resetClient(getAnyServiceClass()); } return result; } - public BulkActionResult assign(final String etag, final String key, final List<StatusBean> statuses) { - BulkActionResult result; - synchronized (this) { - AnyService<?> service = getService(etag, getAnyServiceClass()); - - StatusPatch statusPatch = StatusUtils.buildStatusPatch(statuses); - - AssociationPatch associationPatch = new AssociationPatch.Builder().key(key). - action(ResourceAssociationAction.ASSIGN). - onSyncope(statusPatch.isOnSyncope()). - resources(statusPatch.getResources()).build(); - - result = service.associate(associationPatch).readEntity(BulkActionResult.class); - - resetClient(getAnyServiceClass()); + public Map<String, String> batch(final BatchRequest batchRequest) { + List<BatchRequestItem> batchRequestItems = new ArrayList<>(batchRequest.getItems()); + + Map<String, String> result = new LinkedHashMap<>(); + try { + List<BatchResponseItem> batchResponseItems = batchRequest.commit().getItems(); + for (int i = 0; i < batchResponseItems.size(); i++) { + String status = getStatus(batchResponseItems.get(i).getStatus()); + if (batchRequestItems.get(i).getRequestURI().endsWith("/status")) { + result.put(StringUtils.substringAfterLast( + StringUtils.substringBefore(batchRequestItems.get(i).getRequestURI(), "/status"), "/"), + status); + } else { + result.put(StringUtils.substringAfterLast( + batchRequestItems.get(i).getRequestURI(), "/"), status); + } + } + } catch (IOException e) { + LOG.error("While processing Batch response", e); } - return result; - } - public BulkActionResult bulkAction(final BulkAction action) { - return getService(getAnyServiceClass()).bulk(action).readEntity(BulkActionResult.class); + return result; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java index 4a780a6..ecea2ae 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java @@ -19,13 +19,13 @@ package org.apache.syncope.client.console.rest; import java.net.URI; - import javax.ws.rs.core.HttpHeaders; - import org.apache.cxf.jaxrs.client.WebClient; import org.apache.syncope.client.console.SyncopeConsoleSession; +import org.apache.syncope.client.console.commons.Constants; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.common.lib.search.OrderByClauseBuilder; +import org.apache.syncope.common.lib.types.ExecStatus; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.common.rest.api.service.JAXRSService; import org.apache.syncope.common.rest.api.service.SyncopeService; @@ -82,4 +82,11 @@ public abstract class BaseRestClient implements RestClient { header(HttpHeaders.AUTHORIZATION, "Bearer " + SyncopeConsoleSession.get().getJWT()). get(resultClass); } + + protected static String getStatus(final int httpStatus) { + ExecStatus execStatus = ExecStatus.fromHttpStatus(httpStatus); + return execStatus == null + ? Constants.UNKNOWN + : execStatus.name(); + } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java index 8cde692..d8c9ff9 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java @@ -20,6 +20,8 @@ package org.apache.syncope.client.console.rest; import java.util.Date; import java.util.List; +import java.util.Map; +import org.apache.syncope.client.lib.batch.BatchRequest; import org.apache.syncope.common.lib.to.ExecTO; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; @@ -34,4 +36,6 @@ public interface ExecutionRestClient extends RestClient { List<ExecTO> listExecutions(String taskKey, int page, int size, SortParam<String> sort); int countExecutions(String taskKey); + + Map<String, String> batch(BatchRequest batchRequest); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java index e5d642b..4669d4d 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java @@ -24,7 +24,7 @@ import javax.ws.rs.core.Response; import org.apache.syncope.common.lib.patch.GroupPatch; import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.lib.to.ProvisioningResult; -import org.apache.syncope.common.lib.types.BulkMembersActionType; +import org.apache.syncope.common.lib.types.ProvisionAction; import org.apache.syncope.common.rest.api.beans.AnyQuery; import org.apache.syncope.common.rest.api.service.AnyService; import org.apache.syncope.common.rest.api.service.GroupService; @@ -80,7 +80,7 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> { orderBy(toOrderBy(sort)).details(false).build()).getResult(); } - public void bulkMembersAction(final String key, final BulkMembersActionType actionType) { - getService(GroupService.class).bulkMembersAction(key, actionType); + public void provisionMembers(final String key, final ProvisionAction actionType) { + getService(GroupService.class).provisionMembers(key, actionType); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java index e65ce7e..8b60941 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java @@ -18,16 +18,20 @@ */ package org.apache.syncope.client.console.rest; +import static org.apache.syncope.client.console.rest.BaseRestClient.getStatus; + +import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Date; +import java.util.LinkedHashMap; import java.util.List; -import javax.ws.rs.NotSupportedException; +import java.util.Map; import javax.ws.rs.core.Response; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.syncope.common.lib.to.BulkAction; -import org.apache.syncope.common.lib.to.BulkActionResult; +import org.apache.syncope.client.lib.batch.BatchRequest; import org.apache.syncope.common.lib.to.ExecTO; import org.apache.syncope.common.lib.to.JobTO; import org.apache.syncope.common.lib.to.ReportTO; @@ -35,6 +39,8 @@ import org.apache.syncope.common.lib.to.ReportTemplateTO; import org.apache.syncope.common.lib.types.JobAction; import org.apache.syncope.common.lib.types.ReportExecExportFormat; import org.apache.syncope.common.lib.types.ReportTemplateFormat; +import org.apache.syncope.common.rest.api.batch.BatchRequestItem; +import org.apache.syncope.common.rest.api.batch.BatchResponseItem; import org.apache.syncope.common.rest.api.beans.ExecQuery; import org.apache.syncope.common.rest.api.beans.ExecuteQuery; import org.apache.syncope.common.rest.api.service.ReportService; @@ -155,25 +161,29 @@ public class ReportRestClient extends BaseRestClient key, format, IOUtils.toInputStream(content, StandardCharsets.UTF_8)); } - public BulkActionResult bulkAction(final BulkAction action) { - BulkActionResult result = new BulkActionResult(); + @Override + public Map<String, String> batch(final BatchRequest batchRequest) { + List<BatchRequestItem> batchRequestItems = new ArrayList<>(batchRequest.getItems()); - switch (action.getType()) { - case DELETE: - for (String target : action.getTargets()) { - delete(target); - result.getResults().put(target, BulkActionResult.Status.SUCCESS); - } - break; - case EXECUTE: - for (String target : action.getTargets()) { - startExecution(target, null); - result.getResults().put(target, BulkActionResult.Status.SUCCESS); + Map<String, String> result = new LinkedHashMap<>(); + try { + List<BatchResponseItem> batchResponseItems = batchRequest.commit().getItems(); + for (int i = 0; i < batchResponseItems.size(); i++) { + String status = getStatus(batchResponseItems.get(i).getStatus()); + + if (batchRequestItems.get(i).getRequestURI().contains("/execute")) { + result.put(StringUtils.substringAfterLast( + StringUtils.substringBefore(batchRequestItems.get(i).getRequestURI(), "/execute"), "/"), + status); + } else { + result.put(StringUtils.substringAfterLast( + batchRequestItems.get(i).getRequestURI(), "/"), status); } - break; - default: - throw new NotSupportedException(action.getType().name()); + } + } catch (IOException e) { + LOG.error("While processing Batch response", e); } + return result; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java index e1f8f78..c8e135b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ResourceRestClient.java @@ -24,12 +24,9 @@ import java.util.List; import javax.ws.rs.core.Response; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.tuple.Pair; -import org.apache.syncope.common.lib.patch.ResourceDeassociationPatch; -import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.ConnObjectTO; import org.apache.syncope.common.lib.to.PagedConnObjectTOResult; import org.apache.syncope.common.lib.to.ResourceTO; -import org.apache.syncope.common.lib.types.ResourceDeassociationAction; import org.apache.syncope.common.rest.api.beans.ConnObjectTOListQuery; import org.apache.syncope.common.rest.api.service.ResourceService; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; @@ -116,19 +113,6 @@ public class ResourceRestClient extends BaseRestClient { getService(ResourceService.class).delete(name); } - public BulkActionResult bulkAssociationAction( - final String resourceName, final String anyTypeName, - final ResourceDeassociationAction action, final List<String> anyKeys) { - - ResourceDeassociationPatch patch = new ResourceDeassociationPatch(); - patch.setKey(resourceName); - patch.setAnyTypeKey(anyTypeName); - patch.setAction(action); - patch.getAnyKyes().addAll(anyKeys); - - return getService(ResourceService.class).bulkDeassociation(patch); - } - public void setLatestSyncToken(final String key, final String anyType) { getService(ResourceService.class).setLatestSyncToken(key, anyType); } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java index 516ef7c..2e6692e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java @@ -18,11 +18,15 @@ */ package org.apache.syncope.client.console.rest; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; +import org.apache.syncope.client.lib.batch.BatchRequest; import org.apache.syncope.common.lib.to.TaskTO; -import org.apache.syncope.common.lib.to.BulkAction; -import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.NotificationTaskTO; import org.apache.syncope.common.lib.to.PropagationTaskTO; import org.apache.syncope.common.lib.to.PushTaskTO; @@ -34,6 +38,8 @@ import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.JobAction; import org.apache.syncope.common.lib.types.TaskType; +import org.apache.syncope.common.rest.api.batch.BatchRequestItem; +import org.apache.syncope.common.rest.api.batch.BatchResponseItem; import org.apache.syncope.common.rest.api.beans.ExecuteQuery; import org.apache.syncope.common.rest.api.beans.ExecQuery; import org.apache.syncope.common.rest.api.beans.TaskQuery; @@ -228,7 +234,29 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien getService(TaskService.class).update(type, taskTO); } - public BulkActionResult bulkAction(final BulkAction action) { - return getService(TaskService.class).bulk(action); + @Override + public Map<String, String> batch(final BatchRequest batchRequest) { + List<BatchRequestItem> batchRequestItems = new ArrayList<>(batchRequest.getItems()); + + Map<String, String> result = new LinkedHashMap<>(); + try { + List<BatchResponseItem> batchResponseItems = batchRequest.commit().getItems(); + for (int i = 0; i < batchResponseItems.size(); i++) { + String status = getStatus(batchResponseItems.get(i).getStatus()); + + if (batchRequestItems.get(i).getRequestURI().contains("/execute")) { + result.put(StringUtils.substringAfterLast( + StringUtils.substringBefore(batchRequestItems.get(i).getRequestURI(), "/execute"), "/"), + status); + } else { + result.put(StringUtils.substringAfterLast( + batchRequestItems.get(i).getRequestURI(), "/"), status); + } + } + } catch (IOException e) { + LOG.error("While processing Batch response", e); + } + + return result; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java index 514d970..11eb0fa 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserRestClient.java @@ -18,20 +18,21 @@ */ package org.apache.syncope.client.console.rest; +import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.Response; import org.apache.syncope.client.console.commons.Constants; +import org.apache.syncope.client.console.commons.status.Status; import org.apache.syncope.client.console.commons.status.StatusBean; import org.apache.syncope.client.console.commons.status.StatusUtils; import org.apache.syncope.common.lib.patch.BooleanReplacePatchItem; import org.apache.syncope.common.lib.patch.StatusPatch; import org.apache.syncope.common.lib.patch.UserPatch; -import org.apache.syncope.common.lib.to.BulkActionResult; -import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.to.UserTO; +import org.apache.syncope.common.lib.types.ExecStatus; import org.apache.syncope.common.lib.types.StatusPatchType; import org.apache.syncope.common.rest.api.beans.AnyQuery; import org.apache.syncope.common.rest.api.service.AnyService; @@ -85,69 +86,70 @@ public class UserRestClient extends AbstractAnyRestClient<UserTO> { } public ProvisioningResult<UserTO> mustChangePassword(final String etag, final boolean value, final String key) { - final UserPatch userPatch = new UserPatch(); + UserPatch userPatch = new UserPatch(); userPatch.setKey(key); userPatch.setMustChangePassword(new BooleanReplacePatchItem.Builder().value(value).build()); return update(etag, userPatch); } - public BulkActionResult suspend(final String etag, final String userKey, final List<StatusBean> statuses) { - StatusPatch statusPatch = StatusUtils.buildStatusPatch(statuses, false); - statusPatch.setKey(userKey); - statusPatch.setType(StatusPatchType.SUSPEND); + private Map<String, String> status( + final StatusPatchType type, final String etag, final String userKey, final List<StatusBean> statuses) { - BulkActionResult bulkActionResult; + StatusPatch statusPatch = StatusUtils.statusPatch(statuses).key(userKey).type(type).build(); + + Map<String, String> results; synchronized (this) { - bulkActionResult = new BulkActionResult(); - Map<String, BulkActionResult.Status> results = bulkActionResult.getResults(); - UserService service = getService(etag, UserService.class); + ProvisioningResult<UserTO> provisioningResult = getService(etag, UserService.class).status(statusPatch). + readEntity(new GenericType<ProvisioningResult<UserTO>>() { + }); - ProvisioningResult<UserTO> provisioningResult = service.status(statusPatch).readEntity( - new GenericType<ProvisioningResult<UserTO>>() { + statuses.forEach(statusBean -> statusBean.setStatus(Status.UNDEFINED)); + + results = new HashMap<>(); + provisioningResult.getPropagationStatuses().forEach(propagationStatus -> { + results.put(propagationStatus.getResource(), propagationStatus.getStatus().name()); + + if (propagationStatus.getAfterObj() != null) { + Boolean enabled = StatusUtils.isEnabled(propagationStatus.getAfterObj()); + if (enabled != null) { + statuses.stream(). + filter(statusBean -> propagationStatus.getResource().equals(statusBean.getResource())). + findFirst(). + ifPresent(statusBean -> statusBean.setStatus( + enabled ? Status.ACTIVE : Status.SUSPENDED)); + } + } }); - + statuses.stream(). + filter(statusBean -> Constants.SYNCOPE.equals(statusBean.getResource())). + findFirst(). + ifPresent(statusBean -> statusBean.setStatus( + "suspended".equalsIgnoreCase(provisioningResult.getEntity().getStatus()) + ? Status.SUSPENDED : Status.ACTIVE)); if (statusPatch.isOnSyncope()) { results.put(Constants.SYNCOPE, - "suspended".equalsIgnoreCase(provisioningResult.getEntity().getStatus()) - ? BulkActionResult.Status.SUCCESS - : BulkActionResult.Status.FAILURE); + ("suspended".equalsIgnoreCase(provisioningResult.getEntity().getStatus()) + && type == StatusPatchType.SUSPEND) + || ("active".equalsIgnoreCase(provisioningResult.getEntity().getStatus()) + && type == StatusPatchType.REACTIVATE) + ? ExecStatus.SUCCESS.name() + : ExecStatus.FAILURE.name()); } - for (PropagationStatus status : provisioningResult.getPropagationStatuses()) { - results.put(status.getResource(), BulkActionResult.Status.valueOf(status.getStatus().name())); - } resetClient(UserService.class); } - return bulkActionResult; + return results; } - public BulkActionResult reactivate(final String etag, final String userKey, final List<StatusBean> statuses) { - StatusPatch statusPatch = StatusUtils.buildStatusPatch(statuses, true); - statusPatch.setKey(userKey); - statusPatch.setType(StatusPatchType.REACTIVATE); - - BulkActionResult bulkActionResult; - synchronized (this) { - bulkActionResult = new BulkActionResult(); - Map<String, BulkActionResult.Status> results = bulkActionResult.getResults(); - UserService service = getService(etag, UserService.class); + public Map<String, String> suspend( + final String etag, final String userKey, final List<StatusBean> statuses) { - ProvisioningResult<UserTO> provisioningResult = service.status(statusPatch).readEntity( - new GenericType<ProvisioningResult<UserTO>>() { - }); + return status(StatusPatchType.SUSPEND, etag, userKey, statuses); + } - if (statusPatch.isOnSyncope()) { - results.put(Constants.SYNCOPE, - "active".equalsIgnoreCase(provisioningResult.getEntity().getStatus()) - ? BulkActionResult.Status.SUCCESS - : BulkActionResult.Status.FAILURE); - } + public Map<String, String> reactivate( + final String etag, final String userKey, final List<StatusBean> statuses) { - for (PropagationStatus status : provisioningResult.getPropagationStatuses()) { - results.put(status.getResource(), BulkActionResult.Status.valueOf(status.getStatus().name())); - } - resetClient(UserService.class); - } - return bulkActionResult; + return status(StatusPatchType.REACTIVATE, etag, userKey, statuses); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java index bd54f00..fe67ff6 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java @@ -247,20 +247,20 @@ public class AnyStatusDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { - List<ActionLink.ActionType> bulkActions = new ArrayList<>(); + protected Collection<ActionLink.ActionType> getBatches() { + List<ActionLink.ActionType> batches = new ArrayList<>(); if (statusOnly) { - bulkActions.add(ActionLink.ActionType.SUSPEND); - bulkActions.add(ActionLink.ActionType.REACTIVATE); + batches.add(ActionLink.ActionType.SUSPEND); + batches.add(ActionLink.ActionType.REACTIVATE); } else { - bulkActions.add(ActionLink.ActionType.UNLINK); - bulkActions.add(ActionLink.ActionType.LINK); - bulkActions.add(ActionLink.ActionType.DEPROVISION); - bulkActions.add(ActionLink.ActionType.PROVISION); - bulkActions.add(ActionLink.ActionType.ASSIGN); - bulkActions.add(ActionLink.ActionType.UNASSIGN); + batches.add(ActionLink.ActionType.UNLINK); + batches.add(ActionLink.ActionType.LINK); + batches.add(ActionLink.ActionType.DEPROVISION); + batches.add(ActionLink.ActionType.PROVISION); + batches.add(ActionLink.ActionType.ASSIGN); + batches.add(ActionLink.ActionType.UNASSIGN); } - return bulkActions; + return batches; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java index 8b621bc..bba8d2f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java @@ -215,15 +215,15 @@ public class ResourceStatusDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { - List<ActionLink.ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionLink.ActionType.UNLINK); - bulkActions.add(ActionLink.ActionType.LINK); - bulkActions.add(ActionLink.ActionType.DEPROVISION); - bulkActions.add(ActionLink.ActionType.PROVISION); - bulkActions.add(ActionLink.ActionType.ASSIGN); - bulkActions.add(ActionLink.ActionType.UNASSIGN); - return bulkActions; + protected Collection<ActionLink.ActionType> getBatches() { + List<ActionLink.ActionType> batches = new ArrayList<>(); + batches.add(ActionLink.ActionType.UNLINK); + batches.add(ActionLink.ActionType.LINK); + batches.add(ActionLink.ActionType.DEPROVISION); + batches.add(ActionLink.ActionType.PROVISION); + batches.add(ActionLink.ActionType.ASSIGN); + batches.add(ActionLink.ActionType.UNASSIGN); + return batches; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java index 1494e34..267987f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java @@ -157,10 +157,10 @@ public abstract class ExecutionsDirectoryPanel } @Override - protected Collection<ActionLink.ActionType> getBulkActions() { - final List<ActionLink.ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionLink.ActionType.DELETE); - return bulkActions; + protected Collection<ActionLink.ActionType> getBatches() { + List<ActionLink.ActionType> batches = new ArrayList<>(); + batches.add(ActionLink.ActionType.DELETE); + return batches; } protected class ExecProvider extends DirectoryDataProvider<ExecTO> { http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java index 656b707..3a584ca 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java @@ -176,11 +176,11 @@ public abstract class NotificationTaskDirectoryPanel } @Override - protected Collection<ActionType> getBulkActions() { - final List<ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionType.DELETE); - bulkActions.add(ActionType.EXECUTE); - return bulkActions; + protected Collection<ActionType> getBatches() { + List<ActionType> batches = new ArrayList<>(); + batches.add(ActionType.DELETE); + batches.add(ActionType.EXECUTE); + return batches; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java index 5298b22..67be4c8 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java @@ -183,11 +183,11 @@ public abstract class PropagationTaskDirectoryPanel } @Override - protected Collection<ActionType> getBulkActions() { - final List<ActionType> bulkActions = new ArrayList<>(); - bulkActions.add(ActionType.DELETE); - bulkActions.add(ActionType.EXECUTE); - return bulkActions; + protected Collection<ActionType> getBatches() { + List<ActionType> batches = new ArrayList<>(); + batches.add(ActionType.DELETE); + batches.add(ActionType.EXECUTE); + return batches; } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/34a2fdbb/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java index 0577433..2f44287 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java @@ -34,6 +34,7 @@ import org.apache.syncope.common.lib.to.PullTaskTO; import org.apache.syncope.common.lib.to.PushTaskTO; import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.syncope.common.lib.types.TaskType; +import org.apache.wicket.Component; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; @@ -43,6 +44,7 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColu import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -137,13 +139,18 @@ public abstract class ProvisioningTaskDirectoryPanel<T extends ProvisioningTaskT final String componentId, final IModel<T> rowModel) { - JobTO jobTO = restClient.getJob(rowModel.getObject().getKey()); - JobActionPanel panel = new JobActionPanel( - componentId, jobTO, false, ProvisioningTaskDirectoryPanel.this, pageRef); - MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, - String.format("%s,%s", - StandardEntitlement.TASK_EXECUTE, - StandardEntitlement.TASK_UPDATE)); + Component panel; + try { + JobTO jobTO = restClient.getJob(rowModel.getObject().getKey()); + panel = new JobActionPanel(componentId, jobTO, false, ProvisioningTaskDirectoryPanel.this, pageRef); + MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, + String.format("%s,%s", + StandardEntitlement.TASK_EXECUTE, + StandardEntitlement.TASK_UPDATE)); + } catch (Exception e) { + LOG.error("Could not get job for task {}", rowModel.getObject().getKey(), e); + panel = new Label(componentId, Model.of()); + } cellItem.add(panel); }