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);
}
}