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

mpapirkovskyy pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new eaae0af  AMBARI-24930. Recommendation configs request was failed with 
custom config group. (#2637)
eaae0af is described below

commit eaae0af01789cab9e169221ec21e80b472aa2938
Author: Myroslav Papirkovskyi <mpapirkovs...@apache.org>
AuthorDate: Tue Nov 27 16:44:14 2018 +0200

    AMBARI-24930. Recommendation configs request was failed with custom config 
group. (#2637)
    
    * AMBARI-24930. Recommendation configs request was failed with custom 
config group. (mpapirkovskyy)
    
    * AMBARI-24930. Recommendation configs request was failed with custom 
config group. (mpapirkovskyy)
    
    * AMBARI-24930. Recommendation configs request was failed with custom 
config group. (mpapirkovskyy)
    
    * AMBARI-24930. Recommendation configs request was failed with custom 
config group. (mpapirkovskyy)
---
 .../StackAdvisorBlueprintProcessor.java            | 50 ++++++------
 .../services/stackadvisor/StackAdvisorRequest.java | 52 ++++++------
 ...igurationDependenciesRecommendationCommand.java |  5 +-
 .../ConfigurationRecommendationCommand.java        |  5 +-
 .../stackadvisor/commands/StackAdvisorCommand.java |  8 +-
 .../recommendations/RecommendationResponse.java    | 30 +++++++
 .../server/controller/KerberosHelperImpl.java      | 21 +++--
 ...erverStackAdvisorAwareConfigurationHandler.java | 10 +--
 .../internal/StackAdvisorResourceProvider.java     | 92 ++++++++++------------
 .../org/apache/ambari/server/state/Cluster.java    |  4 +-
 .../ambari/server/state/cluster/ClusterImpl.java   |  8 +-
 .../server/controller/KerberosHelperTest.java      |  7 +-
 .../AmbariServerSSOConfigurationHandlerTest.java   |  8 +-
 .../internal/StackAdvisorResourceProviderTest.java |  9 +--
 .../ambari/server/state/cluster/ClusterTest.java   | 10 +--
 15 files changed, 160 insertions(+), 159 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
index 54b7e1f..6084711 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorBlueprintProcessor.java
@@ -19,13 +19,11 @@
 package org.apache.ambari.server.api.services.stackadvisor;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
 
 import org.apache.ambari.server.AmbariException;
 import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest.StackAdvisorRequestType;
@@ -47,6 +45,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.google.inject.Singleton;
 
 /**
@@ -66,10 +65,10 @@ public class StackAdvisorBlueprintProcessor {
     stackAdvisorHelper = instance;
   }
 
-  private static final SortedMap<String, String> userContext;
+  private static final Map<String, String> userContext;
   static
   {
-    userContext = new TreeMap<>();
+    userContext = new HashMap<>();
     userContext.put("operation", "ClusterCreate");
   }
 
@@ -92,10 +91,10 @@ public class StackAdvisorBlueprintProcessor {
 
   private StackAdvisorRequest createStackAdvisorRequest(ClusterTopology 
clusterTopology, StackAdvisorRequestType requestType) {
     Stack stack = clusterTopology.getBlueprint().getStack();
-    SortedMap<String, SortedSet<String>> hgComponentsMap = 
gatherHostGroupComponents(clusterTopology);
-    SortedMap<String, SortedSet<String>> hgHostsMap = 
gatherHostGroupBindings(clusterTopology);
-    SortedMap<String, SortedSet<String>> componentHostsMap = 
gatherComponentsHostsMap(hgComponentsMap,
-            hgHostsMap);
+    Map<String, Set<String>> hgComponentsMap = 
gatherHostGroupComponents(clusterTopology);
+    Map<String, Set<String>> hgHostsMap = 
gatherHostGroupBindings(clusterTopology);
+    Map<String, Set<String>> componentHostsMap = 
gatherComponentsHostsMap(hgComponentsMap,
+        hgHostsMap);
     return StackAdvisorRequest.StackAdvisorRequestBuilder
       .forStack(stack.getName(), stack.getVersion())
       .forServices(new 
ArrayList<>(clusterTopology.getBlueprint().getServices()))
@@ -109,47 +108,46 @@ public class StackAdvisorBlueprintProcessor {
       .build();
   }
 
-  private SortedMap<String, SortedSet<String>> 
gatherHostGroupBindings(ClusterTopology clusterTopology) {
-    SortedMap<String, SortedSet<String>> hgBindngs = Maps.newTreeMap();
+  private Map<String, Set<String>> gatherHostGroupBindings(ClusterTopology 
clusterTopology) {
+    Map<String, Set<String>> hgBindngs = Maps.newHashMap();
     for (Map.Entry<String, HostGroupInfo> hgEnrty: 
clusterTopology.getHostGroupInfo().entrySet()) {
-      hgBindngs.put(hgEnrty.getKey(), new 
TreeSet<>(hgEnrty.getValue().getHostNames()));
+      hgBindngs.put(hgEnrty.getKey(), 
Sets.newCopyOnWriteArraySet(hgEnrty.getValue().getHostNames()));
     }
     return hgBindngs;
   }
 
-  private SortedMap<String, SortedSet<String>> 
gatherHostGroupComponents(ClusterTopology clusterTopology) {
-    SortedMap<String, SortedSet<String>> hgComponentsMap = Maps.newTreeMap();
+  private Map<String, Set<String>> gatherHostGroupComponents(ClusterTopology 
clusterTopology) {
+    Map<String, Set<String>> hgComponentsMap = Maps.newHashMap();
     for (Map.Entry<String, HostGroup> hgEnrty: 
clusterTopology.getBlueprint().getHostGroups().entrySet()) {
-      hgComponentsMap.put(hgEnrty.getKey(), new 
TreeSet<>(hgEnrty.getValue().getComponentNames()));
+      hgComponentsMap.put(hgEnrty.getKey(), 
Sets.newCopyOnWriteArraySet(hgEnrty.getValue().getComponentNames()));
     }
     return hgComponentsMap;
   }
 
-  private SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculateConfigs(ClusterTopology clusterTopology) {
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> result = 
Maps.newTreeMap();
+  private Map<String, Map<String, Map<String, String>>> 
calculateConfigs(ClusterTopology clusterTopology) {
+    Map<String, Map<String, Map<String, String>>> result = Maps.newHashMap();
     Map<String, Map<String, String>> fullProperties = 
clusterTopology.getConfiguration().getFullProperties();
     for (Map.Entry<String, Map<String, String>> siteEntry : 
fullProperties.entrySet()) {
-      SortedMap<String, SortedMap<String, String>> propsMap = 
Maps.newTreeMap();
-      propsMap.put("properties", new TreeMap<>(siteEntry.getValue()));
+      Map<String, Map<String, String>> propsMap = Maps.newHashMap();
+      propsMap.put("properties", siteEntry.getValue());
       result.put(siteEntry.getKey(), propsMap);
     }
     return result;
   }
 
-  private SortedMap<String, SortedSet<String>> 
gatherComponentsHostsMap(SortedMap<String, SortedSet<String>> hostGroups,
-                                                                  
SortedMap<String, SortedSet<String>> bindingHostGroups) {
-    SortedMap<String, SortedSet<String>> componentHostsMap = new TreeMap<>();
+  private Map<String, Set<String>> gatherComponentsHostsMap(Map<String, 
Set<String>> hostGroups, Map<String, Set<String>> bindingHostGroups) {
+    Map<String, Set<String>> componentHostsMap = new HashMap<>();
     if (null != bindingHostGroups && null != hostGroups) {
-      for (Map.Entry<String, SortedSet<String>> hgComponents : 
hostGroups.entrySet()) {
+      for (Map.Entry<String, Set<String>> hgComponents : 
hostGroups.entrySet()) {
         String hgName = hgComponents.getKey();
         Set<String> components = hgComponents.getValue();
 
         Set<String> hosts = bindingHostGroups.get(hgName);
         if (hosts != null) {
           for (String component : components) {
-            SortedSet<String> componentHosts = 
componentHostsMap.get(component);
+            Set<String> componentHosts = componentHostsMap.get(component);
             if (componentHosts == null) { // if was not initialized
-              componentHosts = new TreeSet<>();
+              componentHosts = new HashSet<>();
               componentHostsMap.put(component, componentHosts);
             }
             componentHosts.addAll(hosts);
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
index de6448b..98c75f4 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/StackAdvisorRequest.java
@@ -21,11 +21,11 @@ package org.apache.ambari.server.api.services.stackadvisor;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
+import java.util.Map;
+import java.util.Set;
 
 import 
org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse;
 import org.apache.ambari.server.state.ChangedConfigInfo;
@@ -45,14 +45,14 @@ public class StackAdvisorRequest {
   private StackAdvisorRequestType requestType;
   private List<String> hosts = new ArrayList<>();
   private Collection<String> services = new ArrayList<>();
-  private SortedMap<String, SortedSet<String>> componentHostsMap = new 
TreeMap<>();
-  private SortedMap<String, SortedSet<String>> hostComponents = new 
TreeMap<>();
-  private SortedMap<String, SortedSet<String>> hostGroupBindings = new 
TreeMap<>();
-  private SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations = new TreeMap<>();
+  private Map<String, Set<String>> componentHostsMap = new HashMap<>();
+  private Map<String, Set<String>> hostComponents = new HashMap<>();
+  private Map<String, Set<String>> hostGroupBindings = new HashMap<>();
+  private Map<String, Map<String, Map<String, String>>> configurations = new 
HashMap<>();
   private List<ChangedConfigInfo> changedConfigurations = new LinkedList<>();
-  private SortedSet<RecommendationResponse.ConfigGroup> configGroups;
-  private SortedMap<String, String> userContext = new TreeMap<>();
-  private SortedMap<String, Object> ldapConfig = new TreeMap<>();
+  private Set<RecommendationResponse.ConfigGroup> configGroups;
+  private Map<String, String> userContext = new HashMap<>();
+  private Map<String, Object> ldapConfig = new HashMap<>();
   private Boolean gplLicenseAccepted;
   private Boolean configsResponse = false;
 
@@ -76,7 +76,7 @@ public class StackAdvisorRequest {
     return services;
   }
 
-  public SortedMap<String, SortedSet<String>> getComponentHostsMap() {
+  public Map<String, Set<String>> getComponentHostsMap() {
     return componentHostsMap;
   }
 
@@ -88,19 +88,19 @@ public class StackAdvisorRequest {
     return StringUtils.join(services, ",");
   }
 
-  public SortedMap<String, SortedSet<String>> getHostComponents() {
+  public Map<String, Set<String>> getHostComponents() {
     return hostComponents;
   }
 
-  public SortedMap<String, SortedSet<String>> getHostGroupBindings() {
+  public Map<String, Set<String>> getHostGroupBindings() {
     return hostGroupBindings;
   }
 
-  public SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
getConfigurations() {
+  public Map<String, Map<String, Map<String, String>>> getConfigurations() {
     return configurations;
   }
 
-  public SortedMap<String, Object> getLdapConfig() { return ldapConfig; }
+  public Map<String, Object> getLdapConfig() { return ldapConfig; }
 
   public List<ChangedConfigInfo> getChangedConfigurations() {
     return changedConfigurations;
@@ -110,19 +110,19 @@ public class StackAdvisorRequest {
     this.changedConfigurations = changedConfigurations;
   }
 
-  public SortedMap<String, String> getUserContext() {
+  public Map<String, String> getUserContext() {
     return this.userContext;
   }
 
-  public void setUserContext(SortedMap<String, String> userContext) {
+  public void setUserContext(Map<String, String> userContext) {
     this.userContext = userContext;
   }
 
-  public SortedSet<RecommendationResponse.ConfigGroup> getConfigGroups() {
+  public Set<RecommendationResponse.ConfigGroup> getConfigGroups() {
     return configGroups;
   }
 
-  public void setConfigGroups(SortedSet<RecommendationResponse.ConfigGroup> 
configGroups) {
+  public void setConfigGroups(Set<RecommendationResponse.ConfigGroup> 
configGroups) {
     this.configGroups = configGroups;
   }
 
@@ -177,24 +177,24 @@ public class StackAdvisorRequest {
     }
 
     public StackAdvisorRequestBuilder withComponentHostsMap(
-        SortedMap<String, SortedSet<String>> componentHostsMap) {
+        Map<String, Set<String>> componentHostsMap) {
       this.instance.componentHostsMap = componentHostsMap;
       return this;
     }
 
-    public StackAdvisorRequestBuilder forHostComponents(SortedMap<String, 
SortedSet<String>> hostComponents) {
+    public StackAdvisorRequestBuilder forHostComponents(Map<String, 
Set<String>> hostComponents) {
       this.instance.hostComponents = hostComponents;
       return this;
     }
 
     public StackAdvisorRequestBuilder forHostsGroupBindings(
-        SortedMap<String, SortedSet<String>> hostGroupBindings) {
+        Map<String, Set<String>> hostGroupBindings) {
       this.instance.hostGroupBindings = hostGroupBindings;
       return this;
     }
 
     public StackAdvisorRequestBuilder withConfigurations(
-        SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations) {
+        Map<String, Map<String, Map<String, String>>> configurations) {
       this.instance.configurations = configurations;
       return this;
     }
@@ -206,13 +206,13 @@ public class StackAdvisorRequest {
     }
 
     public StackAdvisorRequestBuilder withUserContext(
-        SortedMap<String, String> userContext) {
+        Map<String, String> userContext) {
       this.instance.userContext = userContext;
       return this;
     }
 
     public StackAdvisorRequestBuilder withConfigGroups(
-        SortedSet<RecommendationResponse.ConfigGroup> configGroups) {
+        Set<RecommendationResponse.ConfigGroup> configGroups) {
       this.instance.configGroups = configGroups;
       return this;
     }
@@ -228,7 +228,7 @@ public class StackAdvisorRequest {
       return this;
     }
 
-    public StackAdvisorRequestBuilder withLdapConfig(SortedMap<String, Object> 
ldapConfig) {
+    public StackAdvisorRequestBuilder withLdapConfig(Map<String, Object> 
ldapConfig) {
       Preconditions.checkNotNull(ldapConfig);
       this.instance.ldapConfig = ldapConfig;
       return this;
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationDependenciesRecommendationCommand.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationDependenciesRecommendationCommand.java
index 4d43c80..209cab9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationDependenciesRecommendationCommand.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationDependenciesRecommendationCommand.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedSet;
 
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
@@ -78,7 +77,7 @@ public class ConfigurationDependenciesRecommendationCommand 
extends
 
   protected Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
     Set<HostGroup> resultSet = new HashSet<>();
-    for (Map.Entry<String, SortedSet<String>> componentHost : 
request.getHostComponents().entrySet()) {
+    for (Map.Entry<String, Set<String>> componentHost : 
request.getHostComponents().entrySet()) {
       String hostGroupName = componentHost.getKey();
       Set<String> components = componentHost.getValue();
       if (hostGroupName != null && components != null) {
@@ -99,7 +98,7 @@ public class ConfigurationDependenciesRecommendationCommand 
extends
 
   private Set<BindingHostGroup> processHostGroupBindings(StackAdvisorRequest 
request) {
     Set<BindingHostGroup> resultSet = new HashSet<>();
-    for (Map.Entry<String, SortedSet<String>> hostBinding : 
request.getHostGroupBindings().entrySet()) {
+    for (Map.Entry<String, Set<String>> hostBinding : 
request.getHostGroupBindings().entrySet()) {
       String hostGroupName = hostBinding.getKey();
       Set<String> hosts = hostBinding.getValue();
       if (hostGroupName != null && hosts != null) {
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationRecommendationCommand.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationRecommendationCommand.java
index 76f5fa7..5bd7cae 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationRecommendationCommand.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/ConfigurationRecommendationCommand.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedSet;
 
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
@@ -86,7 +85,7 @@ public class ConfigurationRecommendationCommand extends 
StackAdvisorCommand<Reco
 
   protected Set<HostGroup> processHostGroups(StackAdvisorRequest request) {
     Set<HostGroup> resultSet = new HashSet<>();
-    for (Map.Entry<String, SortedSet<String>> componentHost : 
request.getHostComponents().entrySet()) {
+    for (Map.Entry<String, Set<String>> componentHost : 
request.getHostComponents().entrySet()) {
       String hostGroupName = componentHost.getKey();
       Set<String> components = componentHost.getValue();
       if (hostGroupName != null && components != null) {
@@ -107,7 +106,7 @@ public class ConfigurationRecommendationCommand extends 
StackAdvisorCommand<Reco
 
   private Set<BindingHostGroup> processHostGroupBindings(StackAdvisorRequest 
request) {
     Set<BindingHostGroup> resultSet = new HashSet<>();
-    for (Map.Entry<String, SortedSet<String>> hostBinding : 
request.getHostGroupBindings().entrySet()) {
+    for (Map.Entry<String, Set<String>> hostBinding : 
request.getHostGroupBindings().entrySet()) {
       String hostGroupName = hostBinding.getKey();
       Set<String> hosts = hostBinding.getValue();
       if (hostGroupName != null && hosts != null) {
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
index 0028872..0006458 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/commands/StackAdvisorCommand.java
@@ -31,8 +31,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
@@ -215,13 +213,13 @@ public abstract class StackAdvisorCommand<T extends 
StackAdvisorResponse> extend
 
   private void populateConfigurations(ObjectNode root,
                                       StackAdvisorRequest request) {
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations =
+    Map<String, Map<String, Map<String, String>>> configurations =
         request.getConfigurations();
     ObjectNode configurationsNode = root.putObject(CONFIGURATIONS_PROPERTY);
     for (String siteName : configurations.keySet()) {
       ObjectNode siteNode = configurationsNode.putObject(siteName);
 
-      SortedMap<String, SortedMap<String, String>> siteMap = 
configurations.get(siteName);
+      Map<String, Map<String, String>> siteMap = configurations.get(siteName);
       for (String properties : siteMap.keySet()) {
         ObjectNode propertiesNode = siteNode.putObject(properties);
 
@@ -262,7 +260,7 @@ public abstract class StackAdvisorCommand<T extends 
StackAdvisorResponse> extend
     }
   }
 
-  private void populateComponentHostsMap(ObjectNode root, SortedMap<String, 
SortedSet<String>> componentHostsMap) {
+  private void populateComponentHostsMap(ObjectNode root, Map<String, 
Set<String>> componentHostsMap) {
     ArrayNode services = (ArrayNode) root.get(SERVICES_PROPERTY);
     Iterator<JsonNode> servicesIter = services.getElements();
 
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
index 0743e6c..d0d8601 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/services/stackadvisor/recommendations/RecommendationResponse.java
@@ -21,6 +21,7 @@ package 
org.apache.ambari.server.api.services.stackadvisor.recommendations;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorResponse;
@@ -163,6 +164,20 @@ public class RecommendationResponse extends 
StackAdvisorResponse {
     public void setPropertyAttributes(Map<String, ValueAttributesInfo> 
propertyAttributes) {
       this.propertyAttributes = propertyAttributes;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      BlueprintConfigurations that = (BlueprintConfigurations) o;
+      return Objects.equals(properties, that.properties) &&
+          Objects.equals(propertyAttributes, that.propertyAttributes);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(properties, propertyAttributes);
+    }
   }
 
   public static class HostGroup {
@@ -268,6 +283,21 @@ public class RecommendationResponse extends 
StackAdvisorResponse {
     public void setDependentConfigurations(Map<String, 
BlueprintConfigurations> dependentConfigurations) {
       this.dependentConfigurations = dependentConfigurations;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      ConfigGroup that = (ConfigGroup) o;
+      return Objects.equals(hosts, that.hosts) &&
+          Objects.equals(configurations, that.configurations) &&
+          Objects.equals(dependentConfigurations, 
that.dependentConfigurations);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(hosts, configurations, dependentConfigurations);
+    }
   }
 
 }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
index 008ee47..23a0d96 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelperImpl.java
@@ -35,7 +35,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.regex.Matcher;
@@ -685,19 +684,19 @@ public class KerberosHelperImpl implements KerberosHelper 
{
     // This could happen when enabling Kerberos while installing a cluster via 
Blueprints due to the
     // way hosts are discovered during the install process.
     if (!hostNames.isEmpty()) {
-      SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
requestConfigurations = new TreeMap<>();
+      Map<String, Map<String, Map<String, String>>> requestConfigurations = 
new HashMap<>();
       if (existingConfigurations != null) {
         for (Map.Entry<String, Map<String, String>> configuration : 
existingConfigurations.entrySet()) {
-          SortedMap<String, SortedMap<String, String>> properties = new 
TreeMap<>();
+          Map<String, Map<String, String>> properties = new HashMap<>();
           String configType = configuration.getKey();
-          SortedMap<String, String> configurationProperties = new 
TreeMap<>(configuration.getValue());
+          Map<String, String> configurationProperties = 
configuration.getValue();
 
           if (configurationProperties == null) {
-            configurationProperties = Collections.emptySortedMap();
+            configurationProperties = Collections.emptyMap();
           }
 
           if ("cluster-env".equals(configType)) {
-            configurationProperties = new TreeMap<>(configurationProperties);
+            configurationProperties = new HashMap<>(configurationProperties);
             configurationProperties.put("security_enabled", (kerberosEnabled) 
? "true" : "false");
           }
 
@@ -712,18 +711,18 @@ public class KerberosHelperImpl implements KerberosHelper 
{
         Map<String, String> configurationProperties = configuration.getValue();
 
         if ((configurationProperties != null) && 
!configurationProperties.isEmpty()) {
-          SortedMap<String, SortedMap<String, String>> requestConfiguration = 
requestConfigurations.get(configType);
+          Map<String, Map<String, String>> requestConfiguration = 
requestConfigurations.get(configType);
 
           if (requestConfiguration == null) {
-            requestConfiguration = new TreeMap<>();
+            requestConfiguration = new HashMap<>();
             requestConfigurations.put(configType, requestConfiguration);
           }
 
-          SortedMap<String, String> requestConfigurationProperties = 
requestConfiguration.get("properties");
+          Map<String, String> requestConfigurationProperties = 
requestConfiguration.get("properties");
           if (requestConfigurationProperties == null) {
-            requestConfigurationProperties = new TreeMap<>();
+            requestConfigurationProperties = new HashMap<>();
           } else {
-            requestConfigurationProperties = new 
TreeMap<>(requestConfigurationProperties);
+            requestConfigurationProperties = new 
HashMap<>(requestConfigurationProperties);
           }
 
           requestConfigurationProperties.putAll(configurationProperties);
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
index e9763ca..c910e54 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
@@ -25,8 +25,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
 import java.util.stream.Collectors;
 
 import org.apache.ambari.server.AmbariException;
@@ -187,16 +185,16 @@ class AmbariServerStackAdvisorAwareConfigurationHandler 
extends AmbariServerConf
    * @return a map of services and their configurations
    * @throws AmbariException
    */
-  private SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculateExistingConfigurations(Cluster cluster) throws AmbariException {
+  private Map<String, Map<String, Map<String, String>>> 
calculateExistingConfigurations(Cluster cluster) throws AmbariException {
     Map<String, Map<String, String>> configurationTags = 
configHelper.getEffectiveDesiredTags(cluster, null);
     Map<String, Map<String, String>> effectiveConfigs = 
configHelper.getEffectiveConfigProperties(cluster, configurationTags);
 
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
requestConfigurations = new TreeMap<>();
+    Map<String, Map<String, Map<String, String>>> requestConfigurations = new 
HashMap<>();
     if (effectiveConfigs != null) {
       for (Map.Entry<String, Map<String, String>> configuration : 
effectiveConfigs.entrySet()) {
-        SortedMap<String, SortedMap<String, String>> properties = new 
TreeMap<>();
+        Map<String, Map<String, String>> properties = new HashMap<>();
         String configType = configuration.getKey();
-        SortedMap<String, String> configurationProperties = new 
TreeMap<>(configuration.getValue());
+        Map<String, String> configurationProperties = new 
HashMap<>(configuration.getValue());
 
         if (configurationProperties == null) {
           configurationProperties = Collections.emptySortedMap();
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
index 8a8a2eb..0dd48e7 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProvider.java
@@ -27,10 +27,6 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 import javax.ws.rs.WebApplicationException;
@@ -148,11 +144,11 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
 
       List<String> hosts;
       List<String> services;
-      SortedMap<String, SortedSet<String>> hgComponentsMap;
-      SortedMap<String, SortedSet<String>> hgHostsMap;
-      SortedMap<String, SortedSet<String>> componentHostsMap;
-      SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations;
-      SortedSet<RecommendationResponse.ConfigGroup> configGroups;
+      Map<String, Set<String>> hgComponentsMap;
+      Map<String, Set<String>> hgHostsMap;
+      Map<String, Set<String>> componentHostsMap;
+      Map<String, Map<String, Map<String, String>>> configurations;
+      Set<RecommendationResponse.ConfigGroup> configGroups;
 
       // In auto complete case all required fields will be filled will cluster 
current info
       if (autoComplete) {
@@ -202,7 +198,7 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
         configurations = calculateConfigurations(request);
         configGroups = calculateConfigGroups(request);
       }
-      SortedMap<String, String> userContext = readUserContext(request);
+      Map<String, String> userContext = readUserContext(request);
       Boolean gplLicenseAccepted = configuration.getGplLicenseAccepted();
       List<ChangedConfigInfo> changedConfigurations =
         requestType == StackAdvisorRequestType.CONFIGURATION_DEPENDENCIES ?
@@ -240,10 +236,10 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
    * @return host-group to components map
    */
   @SuppressWarnings("unchecked")
-  private SortedMap<String, SortedSet<String>> 
calculateHostGroupComponentsMap(Request request) {
+  private Map<String, Set<String>> calculateHostGroupComponentsMap(Request 
request) {
     Set<Map<String, Object>> hostGroups = (Set<Map<String, Object>>) 
getRequestProperty(request,
         BLUEPRINT_HOST_GROUPS_PROPERTY);
-    SortedMap<String, SortedSet<String>> map = new TreeMap<>();
+    Map<String, Set<String>> map = new HashMap<>();
     if (hostGroups != null) {
       for (Map<String, Object> hostGroup : hostGroups) {
         String hostGroupName = (String) 
hostGroup.get(BLUEPRINT_HOST_GROUPS_NAME_PROPERTY);
@@ -251,7 +247,7 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
         Set<Map<String, Object>> componentsSet = (Set<Map<String, Object>>) 
hostGroup
             .get(BLUEPRINT_HOST_GROUPS_COMPONENTS_PROPERTY);
 
-        SortedSet<String> components = new TreeSet<>();
+        Set<String> components = new HashSet<>();
         for (Map<String, Object> component : componentsSet) {
           components.add((String) 
component.get(BLUEPRINT_HOST_GROUPS_COMPONENTS_NAME_PROPERTY));
         }
@@ -268,14 +264,14 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
    * @param cluster cluster for calculating components mapping by host groups
    * @return map "host group name" -> ["component name1", "component name 2", 
...]
    */
-  private SortedMap<String, SortedSet<String>> 
calculateHostGroupComponentsMap(Cluster cluster) {
-    SortedMap<String, SortedSet<String>> map = new TreeMap<>();
+  private Map<String, Set<String>> calculateHostGroupComponentsMap(Cluster 
cluster) {
+    Map<String, Set<String>> map = new HashMap<>();
     List<Host> hosts = new ArrayList<>(cluster.getHosts());
     if (!hosts.isEmpty()) {
       for (Host host : hosts) {
         String hostGroupName = host.getHostName();
 
-        SortedSet<String> components = new TreeSet<>();
+        Set<String> components = new HashSet<>();
         for (ServiceComponentHost sch : 
cluster.getServiceComponentHosts(host.getHostName())) {
           components.add(sch.getServiceComponentName());
         }
@@ -293,10 +289,10 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
    * @return host-group to hosts map
    */
   @SuppressWarnings("unchecked")
-  private SortedMap<String, SortedSet<String>> 
calculateHostGroupHostsMap(Request request) {
+  private Map<String, Set<String>> calculateHostGroupHostsMap(Request request) 
{
     Set<Map<String, Object>> bindingHostGroups = (Set<Map<String, Object>>) 
getRequestProperty(
         request, BINDING_HOST_GROUPS_PROPERTY);
-    SortedMap<String, SortedSet<String>> map = new TreeMap<>();
+    Map<String, Set<String>> map = new HashMap<>();
     if (bindingHostGroups != null) {
       for (Map<String, Object> hostGroup : bindingHostGroups) {
         String hostGroupName = (String) 
hostGroup.get(BINDING_HOST_GROUPS_NAME_PROPERTY);
@@ -304,7 +300,7 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
         Set<Map<String, Object>> hostsSet = (Set<Map<String, Object>>) 
hostGroup
             .get(BINDING_HOST_GROUPS_HOSTS_PROPERTY);
 
-        SortedSet<String> hosts = new TreeSet<>();
+        Set<String> hosts = new HashSet<>();
         for (Map<String, Object> host : hostsSet) {
           hosts.add((String) 
host.get(BINDING_HOST_GROUPS_HOSTS_NAME_PROPERTY));
         }
@@ -321,13 +317,13 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
    * @param cluster cluster for calculating hosts mapping by host groups
    * @return map "host group name" -> ["host name 1"]
    */
-  private SortedMap<String, SortedSet<String>> 
calculateHostGroupHostsMap(Cluster cluster) {
-    SortedMap<String, SortedSet<String>> map = new TreeMap<>();
+  private Map<String, Set<String>> calculateHostGroupHostsMap(Cluster cluster) 
{
+    Map<String, Set<String>> map = new HashMap<>();
 
     List<Host> hosts = new ArrayList<>(cluster.getHosts());
     if (!hosts.isEmpty()) {
       for (Host host : hosts) {
-        map.put(host.getHostName(), new 
TreeSet<String>(){{add(host.getHostName());}});
+        map.put(host.getHostName(), Collections.singleton(host.getHostName()));
       }
     }
 
@@ -346,10 +342,10 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
     return configs;
   }
 
-  protected SortedSet<RecommendationResponse.ConfigGroup> 
calculateConfigGroups(Request request) {
+  protected Set<RecommendationResponse.ConfigGroup> 
calculateConfigGroups(Request request) {
 
-    SortedSet<RecommendationResponse.ConfigGroup> configGroups =
-      new TreeSet<>();
+    Set<RecommendationResponse.ConfigGroup> configGroups =
+      new HashSet<>();
 
     Set<HashMap<String, Object>> configGroupsProperties =
       (HashSet<HashMap<String, Object>>) getRequestProperty(request, 
CONFIG_GROUPS_PROPERTY);
@@ -380,10 +376,9 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
     return configGroups;
   }
 
-  protected SortedSet<RecommendationResponse.ConfigGroup> 
calculateConfigGroups(Cluster cluster, Request request) {
+  protected Set<RecommendationResponse.ConfigGroup> 
calculateConfigGroups(Cluster cluster, Request request) {
 
-    SortedSet<RecommendationResponse.ConfigGroup> configGroups =
-      new TreeSet<>();
+    Set<RecommendationResponse.ConfigGroup> configGroups = new HashSet<>();
 
     Set<HashMap<String, Object>> configGroupsProperties =
       (HashSet<HashMap<String, Object>>) getRequestProperty(request, 
CONFIG_GROUPS_PROPERTY);
@@ -421,8 +416,8 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
    * @param request
    * @return
    */
-  protected SortedMap<String, String> readUserContext(Request request) {
-    SortedMap<String, String> userContext = new TreeMap<>();
+  protected Map<String, String> readUserContext(Request request) {
+    Map<String, String> userContext = new HashMap<>();
     if (null != getRequestProperty(request, USER_CONTEXT_OPERATION_PROPERTY)) {
       userContext.put(OPERATION_PROPERTY,
                       (String) getRequestProperty(request, 
USER_CONTEXT_OPERATION_PROPERTY));
@@ -436,8 +431,8 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
 
   protected static final String CONFIGURATIONS_PROPERTY_ID = 
"recommendations/blueprint/configurations/";
 
-  protected SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculateConfigurations(Request request) {
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations = new TreeMap<>();
+  protected Map<String, Map<String, Map<String, String>>> 
calculateConfigurations(Request request) {
+    Map<String, Map<String, Map<String, String>>> configurations = new 
HashMap<>();
     Map<String, Object> properties = request.getProperties().iterator().next();
     for (String property : properties.keySet()) {
       if (property.startsWith(CONFIGURATIONS_PROPERTY_ID)) {
@@ -448,15 +443,15 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
           String propertiesProperty = propertyPath[1];
           String propertyName = propertyPath[2];
 
-          SortedMap<String, SortedMap<String, String>> siteMap = 
configurations.get(siteName);
+          Map<String, Map<String, String>> siteMap = 
configurations.get(siteName);
           if (siteMap == null) {
-            siteMap = new TreeMap<>();
+            siteMap = new HashMap<>();
             configurations.put(siteName, siteMap);
           }
 
-          SortedMap<String, String> propertiesMap = 
siteMap.get(propertiesProperty);
+          Map<String, String> propertiesMap = siteMap.get(propertiesProperty);
           if (propertiesMap == null) {
-            propertiesMap = new TreeMap<>();
+            propertiesMap = new HashMap<>();
             siteMap.put(propertiesProperty, propertiesMap);
           }
 
@@ -475,9 +470,9 @@ public abstract class StackAdvisorResourceProvider extends 
ReadOnlyResourceProvi
     return configurations;
   }
 
-  protected SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculateConfigurations(Cluster cluster, String serviceName)
+  protected Map<String, Map<String, Map<String, String>>> 
calculateConfigurations(Cluster cluster, String serviceName)
       throws AmbariException {
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
configurations = new TreeMap<>();
+    Map<String, Map<String, Map<String, String>>> configurations = new 
HashMap<>();
     Service service = cluster.getService(serviceName);
 
     StackId stackId = service.getDesiredStackId();
@@ -494,31 +489,30 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
     }
     for (Map.Entry<String, DesiredConfig> requiredDesiredConfigEntry : 
requiredDesiredConfigs.entrySet()) {
       Config config = cluster.getConfig(requiredDesiredConfigEntry.getKey(), 
requiredDesiredConfigEntry.getValue().getTag());
-      configurations.put(requiredDesiredConfigEntry.getKey(),
-          new TreeMap<String, SortedMap<String, String>>(){{put("properties", 
new TreeMap<>(config.getProperties()));}});
+      configurations.put(requiredDesiredConfigEntry.getKey(), 
Collections.singletonMap("properties", config.getProperties()));
     }
     return configurations;
   }
 
   @SuppressWarnings("unchecked")
-  private SortedMap<String, SortedSet<String>> 
calculateComponentHostsMap(SortedMap<String, SortedSet<String>> hostGroups,
-                                                                    
SortedMap<String, SortedSet<String>> bindingHostGroups) {
+  private Map<String, Set<String>> calculateComponentHostsMap(Map<String, 
Set<String>> hostGroups,
+                                                              Map<String, 
Set<String>> bindingHostGroups) {
     /*
      * ClassCastException may occur in case of body inconsistency: property
      * missed, etc.
      */
 
-    SortedMap<String, SortedSet<String>> componentHostsMap = new TreeMap<>();
+    Map<String, Set<String>> componentHostsMap = new HashMap<>();
     if (null != bindingHostGroups && null != hostGroups) {
-      for (Map.Entry<String, SortedSet<String>> hgComponents : 
hostGroups.entrySet()) {
+      for (Map.Entry<String, Set<String>> hgComponents : 
hostGroups.entrySet()) {
         String hgName = hgComponents.getKey();
         Set<String> components = hgComponents.getValue();
 
         Set<String> hosts = bindingHostGroups.get(hgName);
         for (String component : components) {
-          SortedSet<String> componentHosts = componentHostsMap.get(component);
+          Set<String> componentHosts = componentHostsMap.get(component);
           if (componentHosts == null) { // if was not initialized
-            componentHosts = new TreeSet<>();
+            componentHosts = new HashSet<>();
             componentHostsMap.put(component, componentHosts);
           }
           componentHosts.addAll(hosts);
@@ -530,16 +524,16 @@ public abstract class StackAdvisorResourceProvider 
extends ReadOnlyResourceProvi
   }
 
   @SuppressWarnings("unchecked")
-  private SortedMap<String, SortedSet<String>> 
calculateComponentHostsMap(Cluster cluster) {
+  private Map<String, Set<String>> calculateComponentHostsMap(Cluster cluster) 
{
     /*
      * ClassCastException may occur in case of body inconsistency: property
      * missed, etc.
      */
 
-    SortedMap<String, SortedSet<String>> componentHostsMap = new TreeMap<>();
+    Map<String, Set<String>> componentHostsMap = new HashMap<>();
     List<ServiceComponentHost> schs = cluster.getServiceComponentHosts();
     for (ServiceComponentHost sch : schs) {
-      componentHostsMap.putIfAbsent(sch.getServiceComponentName(), new 
TreeSet<>());
+      componentHostsMap.putIfAbsent(sch.getServiceComponentName(), new 
HashSet<>());
       
componentHostsMap.get(sch.getServiceComponentName()).add(sch.getHostName());
     }
 
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index 817563d..1745640 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@ -24,8 +24,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.controller.ClusterResponse;
@@ -111,7 +109,7 @@ public interface Cluster {
    * @param serviceNames
    * @return a map of (filtered) components to hosts
    */
-  SortedMap<String, SortedSet<String>> getServiceComponentHostMap(Set<String> 
hostNames, Set<String> serviceNames);
+  Map<String, Set<String>> getServiceComponentHostMap(Set<String> hostNames, 
Set<String> serviceNames);
 
   /**
    * Get all ServiceComponentHosts for a given service and optional component
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index 06a6067..72e508b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@ -33,8 +33,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
@@ -809,8 +807,8 @@ public class ClusterImpl implements Cluster {
   }
 
   @Override
-  public SortedMap<String, SortedSet<String>> 
getServiceComponentHostMap(Set<String> hostNames, Set<String> serviceNames) {
-    SortedMap<String, SortedSet<String>> componentHostMap = new TreeMap<>();
+  public Map<String, Set<String>> getServiceComponentHostMap(Set<String> 
hostNames, Set<String> serviceNames) {
+    Map<String, Set<String>> componentHostMap = new TreeMap<>();
 
     Collection<Host> hosts = getHosts();
 
@@ -827,7 +825,7 @@ public class ClusterImpl implements Cluster {
               // If the service for this ServiceComponentHost is not filtered 
out, continue processing
               if ((serviceNames == null) || 
serviceNames.contains(sch.getServiceName())) {
                 String component = sch.getServiceComponentName();
-                SortedSet<String> componentHosts = 
componentHostMap.get(component);
+                Set<String> componentHosts = componentHostMap.get(component);
 
                 if (componentHosts == null) {
                   componentHosts = new TreeSet<>();
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index ba3bdb2..2366bb4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -52,9 +52,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.concurrent.TimeUnit;
 
@@ -2000,7 +1997,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     serviceNames.add("EXISTING_SERVICE");
     serviceNames.add("PRECONFIGURE_SERVICE");
 
-    SortedMap<String, SortedSet<String>> hostMap = new TreeMap<>();
+    Map<String, Set<String>> hostMap = new HashMap<>();
 
     Map<String, Service> services = new HashMap<>();
 
@@ -2383,7 +2380,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     services.put("SERVICE2", service2);
     services.put("SERVICE3", service3);
 
-    SortedMap<String, SortedSet<String>> serviceComponentHostMap = new 
TreeMap<>();
+    Map<String, Set<String>> serviceComponentHostMap = new HashMap<>();
     serviceComponentHostMap.put("COMPONENT1A", new 
TreeSet<>(Arrays.asList("hostA")));
     serviceComponentHostMap.put("COMPONENT1B", new 
TreeSet<>(Arrays.asList("hostB", "hostC")));
     serviceComponentHostMap.put("COMPONENT2A", new 
TreeSet<>(Arrays.asList("hostA")));
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
index 861c176..9c93cd3 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
@@ -30,10 +30,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeMap;
-import java.util.TreeSet;
+import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
 import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
@@ -105,8 +102,7 @@ public class AmbariServerSSOConfigurationHandlerTest 
extends EasyMockSupport {
 
     StackId stackId = new StackId("HDP-3.0");
 
-    SortedMap<String, SortedSet<String>> serviceComponentHostMap =
-        new TreeMap<String, SortedSet<String>>(){{put("ATLAS_COMPONENT", new 
TreeSet<String>(){{add("host1");}});}};
+    Map<String, Set<String>> serviceComponentHostMap = 
Collections.singletonMap("ATLAS_COMPONENT", Collections.singleton("host1"));
 
     Host host = createMock(Host.class);
     expect(host.getHostName()).andReturn("host1").once();
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
index 61d99c7..a6c7d42 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackAdvisorResourceProviderTest.java
@@ -34,7 +34,6 @@ import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
 
 import javax.annotation.Nonnull;
 
@@ -56,11 +55,11 @@ public class StackAdvisorResourceProviderTest {
         CONFIGURATIONS_PROPERTY_ID + "site/properties/string_prop", "string",
         CONFIGURATIONS_PROPERTY_ID + "site/properties/array_prop", 
Lists.newArrayList("array1", "array2"));
 
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculatedConfigurations = provider.calculateConfigurations(request);
+    Map<String, Map<String, Map<String, String>>> calculatedConfigurations = 
provider.calculateConfigurations(request);
 
     assertNotNull(calculatedConfigurations);
     assertEquals(1, calculatedConfigurations.size());
-    SortedMap<String, SortedMap<String, String>> site = 
calculatedConfigurations.get("site");
+    Map<String, Map<String, String>> site = 
calculatedConfigurations.get("site");
     assertNotNull(site);
     assertEquals(1, site.size());
     Map<String, String> properties = site.get("properties");
@@ -113,11 +112,11 @@ public class StackAdvisorResourceProviderTest {
         CONFIGURATIONS_PROPERTY_ID + "site/properties/string_prop", null,
         CONFIGURATIONS_PROPERTY_ID + "site/properties/array_prop", 
Lists.newArrayList("array1", "array2"));
 
-    SortedMap<String, SortedMap<String, SortedMap<String, String>>> 
calculatedConfigurations = provider.calculateConfigurations(request);
+    Map<String, Map<String, Map<String, String>>> calculatedConfigurations = 
provider.calculateConfigurations(request);
 
     assertNotNull(calculatedConfigurations);
     assertEquals(1, calculatedConfigurations.size());
-    SortedMap<String, SortedMap<String, String>> site = 
calculatedConfigurations.get("site");
+    Map<String, Map<String, String>> site = 
calculatedConfigurations.get("site");
     assertNotNull(site);
     assertEquals(1, site.size());
     Map<String, String> properties = site.get("properties");
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 655b703..da75ed2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@ -42,8 +42,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
 
 import javax.persistence.EntityManager;
 
@@ -749,7 +747,7 @@ public class ClusterTest {
     ServiceComponentHost scDNH2 = serviceComponentHostFactory.createNew(scDN, 
"h2");
     scDN.addServiceComponentHost(scDNH2);
 
-    SortedMap<String, SortedSet<String>> componentHostMap;
+    Map<String, Set<String>> componentHostMap;
 
     componentHostMap = c1.getServiceComponentHostMap(null, null);
     Assert.assertEquals(2, componentHostMap.size());
@@ -791,7 +789,7 @@ public class ClusterTest {
     ServiceComponentHost schJTH1 = serviceComponentHostFactory.createNew(scJT, 
"h1");
     scJT.addServiceComponentHost(schJTH1);
 
-    SortedMap<String, SortedSet<String>> componentHostMap;
+    Map<String, Set<String>> componentHostMap;
 
     componentHostMap = c1.getServiceComponentHostMap(null, 
Collections.singleton("HDFS"));
     Assert.assertEquals(2, componentHostMap.size());
@@ -849,7 +847,7 @@ public class ClusterTest {
     ServiceComponentHost schJTH1 = serviceComponentHostFactory.createNew(scJT, 
"h1");
     scJT.addServiceComponentHost(schJTH1);
 
-    SortedMap<String, SortedSet<String>> componentHostMap;
+    Map<String, Set<String>> componentHostMap;
 
     componentHostMap = 
c1.getServiceComponentHostMap(Collections.singleton("h1"), null);
     Assert.assertEquals(3, componentHostMap.size());
@@ -908,7 +906,7 @@ public class ClusterTest {
     ServiceComponentHost schJTH1 = serviceComponentHostFactory.createNew(scJT, 
"h1");
     scJT.addServiceComponentHost(schJTH1);
 
-    SortedMap<String, SortedSet<String>> componentHostMap;
+    Map<String, Set<String>> componentHostMap;
 
     componentHostMap = 
c1.getServiceComponentHostMap(Collections.singleton("h1"), 
Collections.singleton("HDFS"));
     Assert.assertEquals(2, componentHostMap.size());

Reply via email to