KNOX-2127 - ZooKeeperAliasService mishandles mixed-case alias keys properly (#202)

diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasService.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasService.java
index f2327e8..cf096ac 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasService.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasService.java
@@ -102,7 +102,8 @@
    */
   private static String buildAliasEntryName(final String clusterName,
       final String alias) {
-    return buildClusterEntryName(clusterName) + PATH_SEPARATOR + alias;
+    // Convert all alias names to lower case (JDK-4891485)
+    return buildClusterEntryName(clusterName) + PATH_SEPARATOR + alias.toLowerCase(Locale.ROOT);
   }
 
   /**
@@ -228,10 +229,7 @@
 
   @Override
   public char[] getPasswordFromAliasForCluster(String clusterName,
-      String givenAlias, boolean generate) throws AliasServiceException {
-
-    /* convert all alias names to lower case since JDK expects the same behaviour */
-    final String alias = givenAlias.toLowerCase(Locale.ROOT);
+      String alias, boolean generate) throws AliasServiceException {
 
     char[] password = null;
 
diff --git a/gateway-server/src/test/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceTest.java b/gateway-server/src/test/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceTest.java
index aeb6b1e..d49b0a1 100644
--- a/gateway-server/src/test/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceTest.java
+++ b/gateway-server/src/test/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceTest.java
@@ -36,6 +36,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import static org.easymock.EasyMock.capture;
@@ -108,7 +109,7 @@
   @Test
   public void testAliasForCluster() throws Exception {
     final String expectedClusterName = "sandbox";
-    final String expectedAlias = "knox.test.alias";
+    final String expectedAlias = "knox.test.Alias";
     final String expectedPassword = "dummyPassword";
 
     final String expectedClusterNameDev = "development";
@@ -166,16 +167,19 @@
     Assert.assertEquals(aliases.size(), 1);
     Assert.assertEquals(aliasesDev.size(), 1);
 
-    Assert.assertTrue("Expected alias 'knox.test.alias' not found ",
-        aliases.contains(expectedAlias));
-    Assert.assertTrue("Expected alias 'knox.test.alias.dev' not found ",
+    Assert.assertTrue("Expected alias '" + expectedAlias + "' not found ",
+        aliases.contains(expectedAlias.toLowerCase(Locale.ROOT)));
+    Assert.assertTrue("Expected alias '" + expectedAliasDev + "' not found ",
         aliasesDev.contains(expectedAliasDev));
 
     final char[] result = zkAlias
         .getPasswordFromAliasForCluster(expectedClusterName, expectedAlias);
+    Assert.assertNotNull("Failed lookup for " + expectedAlias, result);
+
     final char[] result1 = zkAlias
         .getPasswordFromAliasForCluster(expectedClusterNameDev,
             expectedAliasDev);
+    Assert.assertNotNull("Failed lookup for " + expectedAliasDev, result1);
 
     Assert.assertEquals(expectedPassword, new String(result));
     Assert.assertEquals(expectedPasswordDev, new String(result1));
@@ -188,12 +192,12 @@
     aliasesDev = zkAlias.getAliasesForCluster(expectedClusterNameDev);
 
     Assert.assertEquals(aliasesDev.size(), 0);
-    Assert.assertFalse("Expected alias 'knox.test.alias.dev' to be removed but found.",
+    Assert.assertFalse("Expected alias '" + expectedAliasDev + "' to be removed but found.",
         aliasesDev.contains(expectedAliasDev));
 
     Assert.assertEquals(aliases.size(), 1);
-    Assert.assertTrue("Expected alias 'knox.test.alias' not found ",
-        aliases.contains(expectedAlias));
+    Assert.assertTrue("Expected alias '" + expectedAlias + "' not found ",
+        aliases.contains(expectedAlias.toLowerCase(Locale.ROOT)));
 
     /* Test auto-generate password for alias */
     final String testAutoGeneratedpasswordAlias = "knox.test.alias.auto";