You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2012/05/08 10:13:02 UTC

svn commit: r1335375 - in /incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages: ./ panels/

Author: fmartelli
Date: Tue May  8 08:13:02 2012
New Revision: 1335375

URL: http://svn.apache.org/viewvc?rev=1335375&view=rev
Log:
SYNCOPE-80 #comment the same problem - more or less - has been solved for users as well

Modified:
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResultSetPanel.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java
    incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Tasks.java Tue May  8 08:13:02 2012
@@ -33,7 +33,9 @@ import org.apache.syncope.console.pages.
 import org.apache.syncope.console.pages.panels.SyncTasks;
 import org.apache.syncope.console.rest.TaskRestClient;
 import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.AbstractReadOnlyModel;
@@ -96,6 +98,7 @@ public class Tasks extends BasePage {
         public IModel<TaskExecTO> model(final TaskExecTO taskExecution) {
 
             return new AbstractReadOnlyModel<TaskExecTO>() {
+
                 private static final long serialVersionUID = 7485475149862342421L;
 
                 @Override
@@ -124,8 +127,8 @@ public class Tasks extends BasePage {
 
         private Class<T> reference;
 
-        public TasksProvider(final TaskRestClient restClient, final int paginatorRows, final String id,
-                final Class<T> reference) {
+        public TasksProvider(
+                final TaskRestClient restClient, final int paginatorRows, final String id, final Class<T> reference) {
 
             super();
 
@@ -156,8 +159,8 @@ public class Tasks extends BasePage {
                         }
                     });
 
-                    ((SchedTaskTO) task).setLastExec(task.getExecutions().get(task.getExecutions().size() - 1)
-                            .getStartDate());
+                    ((SchedTaskTO) task).setLastExec(task.getExecutions().get(task.getExecutions().size() - 1).
+                            getStartDate());
                 }
                 tasks.add(task);
             }
@@ -176,4 +179,30 @@ public class Tasks extends BasePage {
             return new CompoundPropertyModel<T>(object);
         }
     }
+
+    /**
+     * Update task table.
+     *
+     * @param columns columns.
+     * @param dataProvider data provider.
+     * @param container container.
+     * @param currentPage current page index.
+     * @return data table.
+     */
+    public static AjaxFallbackDefaultDataTable<TaskTO> updateTaskTable(
+            final List<IColumn<TaskTO>> columns,
+            final TasksProvider dataProvider,
+            final WebMarkupContainer container,
+            final int currentPage) {
+
+        final AjaxFallbackDefaultDataTable table = new AjaxFallbackDefaultDataTable<TaskTO>(
+                "datatable", columns, dataProvider, dataProvider.paginatorRows);
+
+        table.setCurrentPage(currentPage);
+        table.setOutputMarkupId(true);
+
+        container.addOrReplace(table);
+
+        return table;
+    }
 }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/Users.java Tue May  8 08:13:02 2012
@@ -81,8 +81,8 @@ public class Users extends BasePage {
                 editModalWin.show(target);
             }
         };
-        MetaDataRoleAuthorizationStrategy.authorize(createLink, ENABLE, xmlRolesReader.getAllAllowedRoles("Users",
-                "create"));
+        MetaDataRoleAuthorizationStrategy.authorize(
+                createLink, ENABLE, xmlRolesReader.getAllAllowedRoles("Users", "create"));
         add(createLink);
 
         setWindowClosedReloadCallback(editModalWin);

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/NotificationTasks.java Tue May  8 08:13:02 2012
@@ -40,12 +40,14 @@ import org.apache.wicket.model.ResourceM
 import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.syncope.client.to.NotificationTaskTO;
+import org.apache.syncope.client.to.PropagationTaskTO;
 import org.apache.syncope.client.to.TaskTO;
 import org.apache.syncope.client.validation.SyncopeClientCompositeErrorException;
 import org.apache.syncope.console.commons.Constants;
 import org.apache.syncope.console.commons.PreferenceManager;
 import org.apache.syncope.console.commons.XMLRolesReader;
 import org.apache.syncope.console.pages.NotificationTaskModalPage;
+import org.apache.syncope.console.pages.Tasks;
 import org.apache.syncope.console.pages.Tasks.TasksProvider;
 import org.apache.syncope.console.rest.TaskRestClient;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
@@ -76,14 +78,22 @@ public class NotificationTasks extends P
     @SpringBean
     protected XMLRolesReader xmlRolesReader;
 
+    private final List<IColumn<TaskTO>> columns;
+
+    private AjaxFallbackDefaultDataTable<TaskTO> table;
+
     public NotificationTasks(String id) {
         super(id);
 
+        container = new WebMarkupContainer("container");
+        container.setOutputMarkupId(true);
+        add(container);
+
         add(window = new ModalWindow("taskWin"));
 
         paginatorRows = prefMan.getPaginatorRows(getWebRequest(), Constants.PREF_NOTIFICATION_TASKS_PAGINATOR_ROWS);
 
-        List<IColumn<TaskTO>> columns = new ArrayList<IColumn<TaskTO>>();
+        columns = new ArrayList<IColumn<TaskTO>>();
 
         columns.add(new PropertyColumn(new ResourceModel("id"), "id", "id"));
         columns.add(new PropertyColumn(new ResourceModel("sender"), "sender", "sender"));
@@ -169,14 +179,13 @@ public class NotificationTasks extends P
             }
         });
 
-        final AjaxFallbackDefaultDataTable<TaskTO> table = new AjaxFallbackDefaultDataTable<TaskTO>("datatable",
-                columns, new TasksProvider(restClient, paginatorRows, getId(), NotificationTaskTO.class), paginatorRows);
+        table = Tasks.updateTaskTable(
+                columns,
+                new TasksProvider(restClient, paginatorRows, getId(), NotificationTaskTO.class),
+                container,
+                0);
 
-        container = new WebMarkupContainer("container");
         container.add(table);
-        container.setOutputMarkupId(true);
-
-        add(container);
 
         window.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
@@ -212,7 +221,11 @@ public class NotificationTasks extends P
                 prefMan.set(getWebRequest(), (WebResponse) getResponse(),
                         Constants.PREF_NOTIFICATION_TASKS_PAGINATOR_ROWS, String.valueOf(paginatorRows));
 
-                table.setItemsPerPage(paginatorRows);
+                table = Tasks.updateTaskTable(
+                        columns,
+                        new TasksProvider(restClient, paginatorRows, getId(), NotificationTaskTO.class),
+                        container,
+                        table == null ? 0 : table.getCurrentPage());
 
                 target.add(container);
             }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PropagationTasks.java Tue May  8 08:13:02 2012
@@ -47,6 +47,7 @@ import org.apache.syncope.console.common
 import org.apache.syncope.console.commons.PreferenceManager;
 import org.apache.syncope.console.commons.XMLRolesReader;
 import org.apache.syncope.console.pages.PropagationTaskModalPage;
+import org.apache.syncope.console.pages.Tasks;
 import org.apache.syncope.console.pages.Tasks.TasksProvider;
 import org.apache.syncope.console.rest.TaskRestClient;
 import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
@@ -80,14 +81,22 @@ public class PropagationTasks extends Pa
     @SpringBean
     protected XMLRolesReader xmlRolesReader;
 
+    private final List<IColumn<TaskTO>> columns;
+
+    private AjaxFallbackDefaultDataTable<TaskTO> table;
+
     public PropagationTasks(final String id) {
         super(id);
 
+        container = new WebMarkupContainer("container");
+        container.setOutputMarkupId(true);
+        add(container);
+
         add(window = new ModalWindow("taskWin"));
 
         paginatorRows = prefMan.getPaginatorRows(getWebRequest(), Constants.PREF_PROPAGATION_TASKS_PAGINATOR_ROWS);
 
-        List<IColumn<TaskTO>> columns = new ArrayList<IColumn<TaskTO>>();
+        columns = new ArrayList<IColumn<TaskTO>>();
 
         columns.add(new PropertyColumn(new ResourceModel("id"), "id", "id"));
 
@@ -179,14 +188,11 @@ public class PropagationTasks extends Pa
             }
         });
 
-        final AjaxFallbackDefaultDataTable<TaskTO> table = new AjaxFallbackDefaultDataTable<TaskTO>("datatable",
-                columns, new TasksProvider(restClient, paginatorRows, getId(), PropagationTaskTO.class), paginatorRows);
-
-        container = new WebMarkupContainer("container");
-        container.add(table);
-        container.setOutputMarkupId(true);
-
-        add(container);
+        table = Tasks.updateTaskTable(
+                columns,
+                new TasksProvider(restClient, paginatorRows, getId(), PropagationTaskTO.class),
+                container,
+                0);
 
         window.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
@@ -210,8 +216,8 @@ public class PropagationTasks extends Pa
 
         Form paginatorForm = new Form("PaginatorForm");
 
-        final DropDownChoice rowsChooser = new DropDownChoice("rowsChooser", new PropertyModel(this, "paginatorRows"),
-                prefMan.getPaginatorChoices());
+        final DropDownChoice rowsChooser = new DropDownChoice(
+                "rowsChooser", new PropertyModel(this, "paginatorRows"), prefMan.getPaginatorChoices());
 
         rowsChooser.add(new AjaxFormComponentUpdatingBehavior("onchange") {
 
@@ -222,7 +228,11 @@ public class PropagationTasks extends Pa
                 prefMan.set(getWebRequest(), (WebResponse) getResponse(),
                         Constants.PREF_PROPAGATION_TASKS_PAGINATOR_ROWS, String.valueOf(paginatorRows));
 
-                table.setItemsPerPage(paginatorRows);
+                table = Tasks.updateTaskTable(
+                        columns,
+                        new TasksProvider(restClient, paginatorRows, getId(), PropagationTaskTO.class),
+                        container,
+                        table == null ? 0 : table.getCurrentPage());
 
                 target.add(container);
             }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResultSetPanel.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResultSetPanel.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResultSetPanel.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/ResultSetPanel.java Tue May  8 08:13:02 2012
@@ -145,9 +145,8 @@ public class ResultSetPanel extends Pane
     final private FeedbackPanel feedbackPanel;
 
     /**
-     * Specify if results are about a filtered search or not. Using this
-     * attribute it is possible to use this panel to show results about user
-     * list and user search.
+     * Specify if results are about a filtered search or not. Using this attribute it is possible to use this panel to
+     * show results about user list and user search.
      */
     private boolean filtered;
 
@@ -167,8 +166,7 @@ public class ResultSetPanel extends Pane
     private UserDataProvider dataProvider;
 
     /**
-     * Modal window to be used for user profile editing. Global visibility is
-     * required ...
+     * Modal window to be used for user profile editing. Global visibility is required ...
      */
     private final ModalWindow editmodal = new ModalWindow("editModal");
 
@@ -226,13 +224,14 @@ public class ResultSetPanel extends Pane
         // Result table initialization
         // ---------------------------
         // preferences and container must be not null to use it ...
+        rows = preferences.getPaginatorRows(getRequest(), Constants.PREF_USERS_PAGINATOR_ROWS);
         updateResultTable(false);
         // ---------------------------
 
         // ---------------------------
         // Link to select schemas/columns to be shown
         // ---------------------------
-        AjaxLink displayAttrsLink = new IndicatingAjaxLink("displayAttrsLink") {
+        final AjaxLink displayAttrsLink = new IndicatingAjaxLink("displayAttrsLink") {
 
             private static final long serialVersionUID = -7978723352517770644L;
 
@@ -272,8 +271,8 @@ public class ResultSetPanel extends Pane
             }
         });
 
-        MetaDataRoleAuthorizationStrategy.authorize(displayAttrsLink, ENABLE, xmlRolesReader.getAllAllowedRoles(
-                "Users", "changeView"));
+        MetaDataRoleAuthorizationStrategy.authorize(
+                displayAttrsLink, ENABLE, xmlRolesReader.getAllAllowedRoles("Users", "changeView"));
 
         container.add(displayAttrsLink);
         // ---------------------------
@@ -284,8 +283,8 @@ public class ResultSetPanel extends Pane
         final Form paginatorForm = new Form("paginator");
         container.add(paginatorForm);
 
-        final DropDownChoice<Integer> rowsChooser = new DropDownChoice<Integer>("rowsChooser", new PropertyModel(this,
-                "rows"), preferences.getPaginatorChoices());
+        final DropDownChoice<Integer> rowsChooser = new DropDownChoice<Integer>(
+                "rowsChooser", new PropertyModel(this, "rows"), preferences.getPaginatorChoices());
 
         rowsChooser.add(new AjaxFormComponentUpdatingBehavior("onchange") {
 
@@ -297,6 +296,7 @@ public class ResultSetPanel extends Pane
 
                 final EventDataWrapper data = new EventDataWrapper();
                 data.setTarget(target);
+                data.setRows(rows);
 
                 send(getParent(), Broadcast.BREADTH, data);
             }
@@ -317,16 +317,17 @@ public class ResultSetPanel extends Pane
     }
 
     private void updateResultTable(final boolean create) {
-        // Requires preferences/container attributes not null ...
-        rows = preferences.getPaginatorRows(getRequest(), Constants.PREF_USERS_PAGINATOR_ROWS);
+        updateResultTable(create, rows);
+    }
 
+    private void updateResultTable(final boolean create, final int rows) {
         dataProvider = new UserDataProvider(userRestClient, rows, filtered);
         dataProvider.setSearchCond(filter);
 
         final int currentPage = resultTable != null
                 ? (create
-                        ? resultTable.getPageCount() - 1
-                        : resultTable.getCurrentPage())
+                ? resultTable.getPageCount() - 1
+                : resultTable.getCurrentPage())
                 : 0;
 
         resultTable = new AjaxFallbackDefaultDataTable<UserTO>("resultTable", getColumns(), dataProvider, rows);
@@ -480,11 +481,14 @@ public class ResultSetPanel extends Pane
         if (event.getPayload() instanceof EventDataWrapper) {
 
             final EventDataWrapper data = (EventDataWrapper) event.getPayload();
-            final AjaxRequestTarget target = data.getTarget();
 
-            updateResultTable(data.isCreate());
-
-            target.add(container);
+            if (data.getRows() < 1) {
+                updateResultTable(data.isCreate());
+            } else {
+                updateResultTable(data.isCreate(), data.getRows());
+            }
+            
+            data.getTarget().add(container);
         }
     }
 
@@ -497,6 +501,7 @@ public class ResultSetPanel extends Pane
             public void onClose(final AjaxRequestTarget target) {
                 final EventDataWrapper data = new EventDataWrapper();
                 data.setTarget(target);
+                data.setRows(rows);
 
                 send(getParent(), Broadcast.BREADTH, data);
 
@@ -518,6 +523,8 @@ public class ResultSetPanel extends Pane
 
         private boolean create;
 
+        private int rows;
+
         public AjaxRequestTarget getTarget() {
             return target;
         }
@@ -533,5 +540,13 @@ public class ResultSetPanel extends Pane
         public void setCreate(boolean create) {
             this.create = create;
         }
+
+        public int getRows() {
+            return rows;
+        }
+
+        public void setRows(int rows) {
+            this.rows = rows;
+        }
     }
 }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SchedTasks.java Tue May  8 08:13:02 2012
@@ -45,6 +45,7 @@ import org.apache.wicket.model.ResourceM
 import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.syncope.client.to.SchedTaskTO;
+import org.apache.syncope.client.to.TaskTO;
 import org.apache.syncope.client.validation.SyncopeClientCompositeErrorException;
 import org.apache.syncope.console.commons.Constants;
 import org.apache.syncope.console.commons.PreferenceManager;
@@ -80,6 +81,10 @@ public class SchedTasks extends Panel {
     @SpringBean
     protected XMLRolesReader xmlRolesReader;
 
+    private final List<IColumn<TaskTO>> columns;
+
+    private AjaxFallbackDefaultDataTable<TaskTO> table;
+
     public SchedTasks(final String id, final PageReference callerPageRef) {
 
         super(id);
@@ -99,7 +104,7 @@ public class SchedTasks extends Panel {
 
         paginatorRows = prefMan.getPaginatorRows(getWebRequest(), Constants.PREF_SCHED_TASKS_PAGINATOR_ROWS);
 
-        List<IColumn<SchedTaskTO>> columns = new ArrayList<IColumn<SchedTaskTO>>();
+        columns = new ArrayList<IColumn<TaskTO>>();
 
         columns.add(new PropertyColumn(new ResourceModel("id"), "id", "id"));
 
@@ -111,7 +116,7 @@ public class SchedTasks extends Panel {
 
         columns.add(new PropertyColumn(new ResourceModel("latestExecStatus"), "latestExecStatus", "latestExecStatus"));
 
-        columns.add(new AbstractColumn<SchedTaskTO>(new ResourceModel("actions", "")) {
+        columns.add(new AbstractColumn<TaskTO>(new ResourceModel("actions", "")) {
 
             private static final long serialVersionUID = 2054811145491901166L;
 
@@ -121,10 +126,10 @@ public class SchedTasks extends Panel {
             }
 
             @Override
-            public void populateItem(final Item<ICellPopulator<SchedTaskTO>> cellItem, final String componentId,
-                    final IModel<SchedTaskTO> model) {
+            public void populateItem(final Item<ICellPopulator<TaskTO>> cellItem, final String componentId,
+                    final IModel<TaskTO> model) {
 
-                final SchedTaskTO taskTO = model.getObject();
+                final SchedTaskTO taskTO = (SchedTaskTO) model.getObject();
 
                 final ActionLinksPanel panel = new ActionLinksPanel(componentId, model);
 
@@ -206,9 +211,12 @@ public class SchedTasks extends Panel {
             }
         });
 
-        final AjaxFallbackDefaultDataTable<SchedTaskTO> table = new AjaxFallbackDefaultDataTable<SchedTaskTO>(
-                "datatable", columns, new TasksProvider(restClient, paginatorRows, getId(), SchedTaskTO.class),
-                paginatorRows);
+        table = Tasks.updateTaskTable(
+                columns,
+                new TasksProvider(restClient, paginatorRows, getId(), SchedTaskTO.class),
+                container,
+                0);
+
         container.add(table);
 
         Form paginatorForm = new Form("PaginatorForm");
@@ -225,7 +233,11 @@ public class SchedTasks extends Panel {
                 prefMan.set(getWebRequest(), (WebResponse) getResponse(), Constants.PREF_SCHED_TASKS_PAGINATOR_ROWS,
                         String.valueOf(paginatorRows));
 
-                table.setItemsPerPage(paginatorRows);
+                table = Tasks.updateTaskTable(
+                        columns,
+                        new TasksProvider(restClient, paginatorRows, getId(), SchedTaskTO.class),
+                        container,
+                        table == null ? 0 : table.getCurrentPage());
 
                 target.add(container);
             }

Modified: incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java?rev=1335375&r1=1335374&r2=1335375&view=diff
==============================================================================
--- incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java (original)
+++ incubator/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/SyncTasks.java Tue May  8 08:13:02 2012
@@ -20,6 +20,20 @@ package org.apache.syncope.console.pages
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.client.to.SyncTaskTO;
+import org.apache.syncope.client.to.TaskTO;
+import org.apache.syncope.client.validation.SyncopeClientCompositeErrorException;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.commons.PreferenceManager;
+import org.apache.syncope.console.commons.XMLRolesReader;
+import org.apache.syncope.console.pages.SyncTaskModalPage;
+import org.apache.syncope.console.pages.Tasks;
+import org.apache.syncope.console.pages.Tasks.TasksProvider;
+import org.apache.syncope.console.pages.UserTemplateModalPage;
+import org.apache.syncope.console.rest.TaskRestClient;
+import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
 import org.apache.wicket.Page;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -43,19 +57,6 @@ import org.apache.wicket.model.PropertyM
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.syncope.client.to.SyncTaskTO;
-import org.apache.syncope.client.validation.SyncopeClientCompositeErrorException;
-import org.apache.syncope.console.commons.Constants;
-import org.apache.syncope.console.commons.PreferenceManager;
-import org.apache.syncope.console.commons.XMLRolesReader;
-import org.apache.syncope.console.pages.SyncTaskModalPage;
-import org.apache.syncope.console.pages.Tasks;
-import org.apache.syncope.console.pages.Tasks.TasksProvider;
-import org.apache.syncope.console.pages.UserTemplateModalPage;
-import org.apache.syncope.console.rest.TaskRestClient;
-import org.apache.syncope.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
-import org.apache.syncope.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.console.wicket.markup.html.form.ActionLinksPanel;
 
 public class SyncTasks extends Panel {
 
@@ -80,6 +81,10 @@ public class SyncTasks extends Panel {
     @SpringBean
     protected XMLRolesReader xmlRolesReader;
 
+    private final List<IColumn<TaskTO>> columns;
+
+    private AjaxFallbackDefaultDataTable<TaskTO> table;
+
     public SyncTasks(String id, final PageReference callerPageRef) {
         super(id);
 
@@ -98,7 +103,7 @@ public class SyncTasks extends Panel {
 
         paginatorRows = prefMan.getPaginatorRows(getWebRequest(), Constants.PREF_SYNC_TASKS_PAGINATOR_ROWS);
 
-        List<IColumn<SyncTaskTO>> columns = new ArrayList<IColumn<SyncTaskTO>>();
+        columns = new ArrayList<IColumn<TaskTO>>();
 
         columns.add(new PropertyColumn(new ResourceModel("id"), "id", "id"));
 
@@ -110,7 +115,7 @@ public class SyncTasks extends Panel {
 
         columns.add(new PropertyColumn(new ResourceModel("latestExecStatus"), "latestExecStatus", "latestExecStatus"));
 
-        columns.add(new AbstractColumn<SyncTaskTO>(new ResourceModel("actions", "")) {
+        columns.add(new AbstractColumn<TaskTO>(new ResourceModel("actions", "")) {
 
             private static final long serialVersionUID = 2054811145491901166L;
 
@@ -120,10 +125,10 @@ public class SyncTasks extends Panel {
             }
 
             @Override
-            public void populateItem(final Item<ICellPopulator<SyncTaskTO>> cellItem, final String componentId,
-                    final IModel<SyncTaskTO> model) {
+            public void populateItem(final Item<ICellPopulator<TaskTO>> cellItem, final String componentId,
+                    final IModel<TaskTO> model) {
 
-                final SyncTaskTO taskTO = model.getObject();
+                final SyncTaskTO taskTO = (SyncTaskTO) model.getObject();
 
                 final ActionLinksPanel panel = new ActionLinksPanel(componentId, model);
 
@@ -226,8 +231,12 @@ public class SyncTasks extends Panel {
             }
         });
 
-        final AjaxFallbackDefaultDataTable<SyncTaskTO> table = new AjaxFallbackDefaultDataTable<SyncTaskTO>(
-                "datatable", columns, new TasksProvider(restClient, paginatorRows, id, SyncTaskTO.class), paginatorRows);
+        table = Tasks.updateTaskTable(
+                columns,
+                new TasksProvider(restClient, paginatorRows, getId(), SyncTaskTO.class),
+                container,
+                0);
+
         container.add(table);
 
         Form paginatorForm = new Form("PaginatorForm");
@@ -244,7 +253,11 @@ public class SyncTasks extends Panel {
                 prefMan.set(getWebRequest(), (WebResponse) getResponse(), Constants.PREF_SYNC_TASKS_PAGINATOR_ROWS,
                         String.valueOf(paginatorRows));
 
-                table.setItemsPerPage(paginatorRows);
+                table = Tasks.updateTaskTable(
+                        columns,
+                        new TasksProvider(restClient, paginatorRows, getId(), SyncTaskTO.class),
+                        container,
+                        table == null ? 0 : table.getCurrentPage());
 
                 target.add(container);
             }
@@ -274,8 +287,8 @@ public class SyncTasks extends Panel {
             }
         };
 
-        MetaDataRoleAuthorizationStrategy.authorize(createLink, RENDER, xmlRolesReader.getAllAllowedRoles("Tasks",
-                "create"));
+        MetaDataRoleAuthorizationStrategy.authorize(
+                createLink, RENDER, xmlRolesReader.getAllAllowedRoles("Tasks", "create"));
 
         add(createLink);
     }