FALCON-2268 Extension list api does not follow default ASC order

Author: Pracheer Agarwal <pracheer.agarwal@inmobi.com>
Author: Pracheer Agarwal <pracheeragarwal@gmail.com>
Author: Pracheer Agarwal <pr@im2216-x0.corp.inmobi.com>

Reviewers: @pallavi-rao,@sandeepSamudrala

Closes #353 from PracheerAgarwal/FALCON-2268 and squashes the following commits:

40bbe9b [Pracheer Agarwal] review comments changes
48fe3f4 [Pracheer Agarwal] review comments changes
ac32e54 [Pracheer Agarwal] FALCON-2268 Extension list api does not follow default ASC order
1dbde80 [Pracheer Agarwal] FALCON-2268 Extension list api does not follow default ASC order
9ff05df [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
9c2f0a5 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
9cd8c17 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
778c579 [Pracheer Agarwal] Merge branch 'master' of https://github.com/PracheerAgarwal/falcon
e39808d [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
a932633 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
fda3b28 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
a93d71a [Pracheer Agarwal] Merge branch 'master' of https://github.com/PracheerAgarwal/falcon
e3728d5 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
066c8e2 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
b20f044 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
7f572a1 [Pracheer Agarwal] Merge branch 'master' of https://github.com/apache/falcon
46042fd [Pracheer Agarwal] Merge branch 'master' of https://github.com/PracheerAgarwal/falcon
daa3ffc [Pracheer Agarwal] FALCON-2225 extension owner added for trusted extensions
622cae4 [Pracheer Agarwal] FALCON-2225 extension owner added for trusted extensions
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java
index 0a1322e..2d4f915 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java
@@ -37,10 +37,7 @@
 import org.slf4j.LoggerFactory;
 import javax.ws.rs.core.Response;
 import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -111,36 +108,27 @@
     }
 
     public ExtensionJobList getExtensionJobs(String extensionName, String sortOrder, String doAsUser) {
-
-        Comparator<ExtensionJobsBean> compareByJobName = new Comparator<ExtensionJobsBean>() {
-            @Override
-            public int compare(ExtensionJobsBean o1, ExtensionJobsBean o2) {
-                return o1.getJobName().compareToIgnoreCase(o2.getJobName());
-            }
-        };
-
-        Map<String, String> jobAndExtensionNames = new HashMap<>();
+        TreeMap<String, String> jobAndExtensionNames = new TreeMap<>();
         List<ExtensionJobsBean> extensionJobs = null;
+
         if (extensionName != null) {
             extensionJobs = ExtensionStore.getMetaStore().getJobsForAnExtension(extensionName);
         } else {
             extensionJobs = ExtensionStore.getMetaStore().getAllExtensionJobs();
         }
 
-        sortOrder = (sortOrder == null) ? ASCENDING_SORT_ORDER : sortOrder;
-        switch (sortOrder.toLowerCase()) {
-        case DESCENDING_SORT_ORDER:
-            Collections.sort(extensionJobs, Collections.reverseOrder(compareByJobName));
-            break;
-
-        default:
-            Collections.sort(extensionJobs, compareByJobName);
-        }
-
         for (ExtensionJobsBean job : extensionJobs) {
             jobAndExtensionNames.put(job.getJobName(), job.getExtensionName());
         }
-        return new ExtensionJobList(extensionJobs.size(), jobAndExtensionNames);
+
+        sortOrder = (sortOrder == null) ? ASCENDING_SORT_ORDER : sortOrder;
+        switch (sortOrder.toLowerCase()) {
+        case DESCENDING_SORT_ORDER:
+            return new ExtensionJobList(extensionJobs.size(), jobAndExtensionNames.descendingMap());
+
+        default:
+            return new ExtensionJobList(extensionJobs.size(), jobAndExtensionNames);
+        }
     }
 
     public APIResult deleteExtensionMetadata(String extensionName) {