Keep resource provision list order after editing for SYNCOPE-1154 - This closes 
#53


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/13f9e9b9
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/13f9e9b9
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/13f9e9b9

Branch: refs/heads/master
Commit: 13f9e9b9b34659ef36ce3631b7e26073e72125e1
Parents: bd6f46e
Author: Matteo Alessandroni <matteo.alessandr...@tirasa.net>
Authored: Wed Jul 12 09:20:42 2017 +0200
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Thu Jul 13 10:10:41 2017 +0200

----------------------------------------------------------------------
 .../client/console/rest/AnyTypeRestClient.java  |  4 ++--
 .../resources/ResourceProvisionPanel.java       | 25 +++++++++++++++++---
 2 files changed, 24 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/13f9e9b9/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
index f422c2b..86d27c1 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java
@@ -75,7 +75,7 @@ public class AnyTypeRestClient extends BaseRestClient {
         getService(AnyTypeService.class).delete(key);
     }
 
-    private static class AnyTypeComparator implements Comparator<AnyTypeTO>, 
Serializable {
+    public static class AnyTypeComparator implements Comparator<AnyTypeTO>, 
Serializable {
 
         private static final long serialVersionUID = -8227715253094467138L;
 
@@ -97,7 +97,7 @@ public class AnyTypeRestClient extends BaseRestClient {
         }
     }
 
-    private static class AnyTypeKeyComparator implements Comparator<String>, 
Serializable {
+    public static class AnyTypeKeyComparator implements Comparator<String>, 
Serializable {
 
         private static final long serialVersionUID = -7778622183107320760L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/13f9e9b9/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index 28b4605..33e254a 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -21,6 +21,8 @@ package org.apache.syncope.client.console.wizards.resources;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.IteratorUtils;
@@ -33,6 +35,7 @@ import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload;
+import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
 import 
org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
@@ -193,7 +196,7 @@ public class ResourceProvisionPanel extends 
AbstractModalPanel<Serializable> {
 
             @Override
             protected void customActionCallback(final AjaxRequestTarget 
target) {
-                // change modal foter visibility
+                // change modal footer visibility
                 send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
             }
 
@@ -202,7 +205,7 @@ public class ResourceProvisionPanel extends 
AbstractModalPanel<Serializable> {
                 
ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true);
                 target.add(ResourceProvisionPanel.this.aboutRealmProvison);
 
-                // change modal foter visibility
+                // change modal footer visibility
                 send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
             }
 
@@ -211,11 +214,17 @@ public class ResourceProvisionPanel extends 
AbstractModalPanel<Serializable> {
                 
ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true);
                 target.add(ResourceProvisionPanel.this.aboutRealmProvison);
 
-                // change modal foter visibility
+                // keep list ordered - SYNCOPE-1154
+                sortProvisionList();
+
+                // change modal footer visibility
                 send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new 
BaseModal.ChangeFooterVisibilityEvent(target));
             }
         };
 
+        // keep list ordered - SYNCOPE-1154
+        sortProvisionList();
+
         builder.setItems(resourceTO.getProvisions());
         builder.includes("anyType", "objectClass", "auxClasses");
         builder.setReuseItem(false);
@@ -349,6 +358,16 @@ public class ResourceProvisionPanel extends 
AbstractModalPanel<Serializable> {
         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
     }
 
+    private void sortProvisionList() {
+        Collections.sort(resourceTO.getProvisions(), new 
Comparator<ProvisionTO>() {
+
+            @Override
+            public int compare(final ProvisionTO o1, final ProvisionTO o2) {
+                return new 
AnyTypeRestClient.AnyTypeKeyComparator().compare(o1.getAnyType(), 
o2.getAnyType());
+            }
+        });
+    }
+
     @Override
     public void onEvent(final IEvent<?> event) {
         if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent) {

Reply via email to