KNOX-2762 Bug fixes for spaces around delimiters with all reviewed comments addressed (#597)

diff --git a/gateway-provider-security-authz-composite/pom.xml b/gateway-provider-security-authz-composite/pom.xml
index de16b03..0ab7083 100644
--- a/gateway-provider-security-authz-composite/pom.xml
+++ b/gateway-provider-security-authz-composite/pom.xml
@@ -36,5 +36,9 @@
             <groupId>org.apache.knox</groupId>
             <artifactId>gateway-spi</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/gateway-provider-security-authz-composite/src/main/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzDeploymentContributor.java b/gateway-provider-security-authz-composite/src/main/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzDeploymentContributor.java
index 830f521..6e7dd7b 100644
--- a/gateway-provider-security-authz-composite/src/main/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzDeploymentContributor.java
+++ b/gateway-provider-security-authz-composite/src/main/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzDeploymentContributor.java
@@ -17,6 +17,7 @@
  */
 package org.apache.knox.gateway.deploy.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.knox.gateway.deploy.DeploymentContext;
 import org.apache.knox.gateway.deploy.DeploymentFactory;
 import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase;
@@ -30,6 +31,8 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Collections;
+import java.util.Arrays;
 
 public class CompositeAuthzDeploymentContributor extends ProviderDeploymentContributorBase {
   @Override
@@ -56,23 +59,22 @@
 
     Map<String, String> providerParams = provider.getParams();
     String providerNames = providerParams.get("composite.provider.names");
-    if (!providerNames.isEmpty()) {
-    String[] names = parseProviderNames(providerNames);
+    List<String> names = parseProviderNames(providerNames);
     for (String name : names) {
       getProviderSpecificParams(resource, params, providerParams, name);
       DeploymentFactory.getProviderContributor("authorization", name)
               .contributeFilter(context, provider, service, resource, params);
       params.clear();
+      }
     }
-    }
-  }
 
-  String[] parseProviderNames(String providerNames) {
-    String[] b = providerNames.split("\\s*,\\s*");
-    for (int i = 0; i < b.length; i++) {
-      b[i] = b[i].trim();
+   List<String> parseProviderNames(String providerNames) {
+    if (StringUtils.isBlank(providerNames)){
+      return Collections.emptyList();
     }
-    return b;
+    List<String> providerNamesList = Arrays.asList(providerNames.split("\\s*,\\s*"));
+    providerNamesList.replaceAll(String::trim);
+    return providerNamesList;
   }
 
   void getProviderSpecificParams(ResourceDescriptor resource, List<FilterParamDescriptor> params,
diff --git a/gateway-provider-security-authz-composite/src/test/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzProviderTest.java b/gateway-provider-security-authz-composite/src/test/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzProviderTest.java
index 88c4bf2..feac25c 100644
--- a/gateway-provider-security-authz-composite/src/test/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzProviderTest.java
+++ b/gateway-provider-security-authz-composite/src/test/java/org/apache/knox/gateway/deploy/impl/CompositeAuthzProviderTest.java
@@ -21,16 +21,17 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Collections;
+
 
 import org.apache.knox.gateway.descriptor.FilterParamDescriptor;
 import org.apache.knox.gateway.descriptor.ResourceDescriptor;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
+import static org.junit.Assert.assertEquals;
 
 public class CompositeAuthzProviderTest {
   @Test
@@ -58,22 +59,43 @@
   public void testParsingProviderNames() throws Exception {
     String names = "AclsAuthz,   SomeOther,TheOtherOne";
     CompositeAuthzDeploymentContributor c = new CompositeAuthzDeploymentContributor();
-    String[] providerNames = c.parseProviderNames(names);
-    assertEquals(providerNames.length, 3);
-    assertEquals(providerNames[0], "AclsAuthz");
-    assertEquals(providerNames[1], "SomeOther");
-    assertEquals(providerNames[2], "TheOtherOne");
+    List providerNames = c.parseProviderNames(names);
+    assertEquals(3, providerNames.size());
+    assertEquals("AclsAuthz", providerNames.get(0));
+    assertEquals("SomeOther", providerNames.get(1));
+    assertEquals("TheOtherOne", providerNames.get(2));
   }
 
   @Test
   public void testingParsingProviderNames() throws Exception {
-    String testnames = "   AclsAuthz  ,   SomeOther   ,   TheOtherOne   ,";
+    String testnames = " SpaceBefore,SpaceAfter , SpaceBeforeandAfter ,NoSpaces,   MoreSpaces   ";
     CompositeAuthzDeploymentContributor c = new CompositeAuthzDeploymentContributor();
-    String[] providerNames = c.parseProviderNames(testnames);
-    assertEquals(providerNames.length, 3);
-    assertEquals(providerNames[0], "AclsAuthz");
-    assertEquals(providerNames[1], "SomeOther");
-    assertEquals(providerNames[2], "TheOtherOne");
+    List providerNames = c.parseProviderNames(testnames);
+    assertEquals(5, providerNames.size());
+    assertEquals("SpaceBefore", providerNames.get(0));
+    assertEquals("SpaceAfter", providerNames.get(1));
+    assertEquals("SpaceBeforeandAfter", providerNames.get(2));
+    assertEquals("NoSpaces", providerNames.get(3));
+    assertEquals("MoreSpaces", providerNames.get(4));
+  }
+  @Test
+
+  public void testingNullandEmptyProviderNames() throws Exception {
+    String testnames = "";
+    CompositeAuthzDeploymentContributor c = new CompositeAuthzDeploymentContributor();
+    List providerNames = c.parseProviderNames(testnames);
+    assertEquals(0,providerNames.size());
+    assertEquals(Collections.emptyList(), providerNames);
+
+    testnames = "  ";
+    providerNames = c.parseProviderNames(testnames);
+    assertEquals(0, providerNames.size());
+    assertEquals(Collections.emptyList(), providerNames);
+
+    testnames = null;
+    providerNames = c.parseProviderNames(testnames);
+    assertEquals(0,providerNames.size());
+    assertEquals(Collections.emptyList(), providerNames);
   }
 }