You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2020/03/10 15:57:34 UTC

[syncope] branch 2_0_X updated: Fixing missing JobActionPanel for SchedTaskDirectoryPanel

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_0_X by this push:
     new 4de472e  Fixing missing JobActionPanel for SchedTaskDirectoryPanel
4de472e is described below

commit 4de472e18182df7b21ae09cbc1c36d3b5c7665da
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Mar 10 16:46:01 2020 +0100

    Fixing missing JobActionPanel for SchedTaskDirectoryPanel
---
 .../tasks/ProvisioningTaskDirectoryPanel.java      | 20 ++++++----
 .../console/tasks/SchedTaskDirectoryPanel.java     | 45 ++++++++++++++++++++--
 .../syncope/client/console/widgets/JobWidget.java  | 29 +++++++++++---
 3 files changed, 77 insertions(+), 17 deletions(-)

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 956e238..4765551 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,17 @@ 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);
             }
 
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 5cc8959..974d744 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -40,21 +40,26 @@ import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.Bas
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.widgets.JobActionPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
+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;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
 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;
@@ -131,7 +136,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
     }
 
     protected List<IColumn<T, String>> getFieldColumns() {
-        final List<IColumn<T, String>> columns = new ArrayList<>();
+        List<IColumn<T, String>> columns = new ArrayList<>();
 
         columns.add(new KeyPropertyColumn<T>(
                 new StringResourceModel("key", this), "key"));
@@ -146,8 +151,11 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
 
             @Override
             public void populateItem(
-                    final Item<ICellPopulator<T>> item, final String componentId, final IModel<T> rowModel) {
-                final IModel<?> model = getDataModel(rowModel);
+                    final Item<ICellPopulator<T>> item,
+                    final String componentId,
+                    final IModel<T> rowModel) {
+
+                IModel<?> model = getDataModel(rowModel);
                 if (model != null && model.getObject() instanceof String) {
                     String value = String.class.cast(model.getObject());
                     if (value.length() > 20) {
@@ -159,7 +167,6 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
                     super.populateItem(item, componentId, rowModel);
                 }
             }
-
         });
 
         columns.add(new DatePropertyColumn<T>(
@@ -174,6 +181,36 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
         columns.add(new BooleanPropertyColumn<T>(
                 new StringResourceModel("active", this), "active", "active"));
 
+        columns.add(new AbstractColumn<T, String>(new Model<>(""), "running") {
+
+            private static final long serialVersionUID = -4008579357070833846L;
+
+            @Override
+            public void populateItem(
+                    final Item<ICellPopulator<T>> cellItem,
+                    final String componentId,
+                    final IModel<T> rowModel) {
+
+                Component panel;
+                try {
+                    JobTO jobTO = restClient.getJob(rowModel.getObject().getKey());
+                    panel = new JobActionPanel(componentId, jobTO, false, SchedTaskDirectoryPanel.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);
+            }
+
+            @Override
+            public String getCssClass() {
+                return "col-xs-1";
+            }
+        });
+
         return columns;
     }
 
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
index 5cb35bc..b2eff2c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -358,12 +358,29 @@ public class JobWidget extends BaseWidget {
 
                     JobTO jobTO = rowModel.getObject();
                     JobActionPanel panel = new JobActionPanel(componentId, jobTO, true, JobWidget.this, pageRef);
-                    MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE,
-                            String.format("%s,%s,%s,%s",
-                                    StandardEntitlement.TASK_EXECUTE,
-                                    StandardEntitlement.REPORT_EXECUTE,
-                                    StandardEntitlement.TASK_UPDATE,
-                                    StandardEntitlement.REPORT_UPDATE));
+
+                    String roles;
+                    switch (jobTO.getType()) {
+                        case TASK:
+                            roles = String.format("%s,%s",
+                                    StandardEntitlement.TASK_EXECUTE, StandardEntitlement.TASK_UPDATE);
+                            break;
+
+                        case REPORT:
+                            roles = String.format("%s,%s",
+                                    StandardEntitlement.REPORT_EXECUTE, StandardEntitlement.REPORT_UPDATE);
+                            break;
+
+                        case NOTIFICATION:
+                            roles = String.format("%s,%s",
+                                    StandardEntitlement.NOTIFICATION_EXECUTE, StandardEntitlement.NOTIFICATION_UPDATE);
+                            break;
+
+                        default:
+                            roles = "NO_ROLES";
+                    }
+
+                    MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.ENABLE, roles);
                     cellItem.add(panel);
                 }