You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/11/13 15:47:52 UTC

[02/16] knox git commit: KNOX-1034 - Make Default identity-assertion provider actually be the default

KNOX-1034 - Make Default identity-assertion provider actually be the default


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/67ad3e38
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/67ad3e38
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/67ad3e38

Branch: refs/heads/KNOX-998-Package_Restructuring
Commit: 67ad3e38f3d415d4ed7f7ae76ed5e27d9cb33a3f
Parents: 4d60e41
Author: Larry McCay <lm...@hortonworks.com>
Authored: Sat Nov 4 12:08:43 2017 -0400
Committer: Larry McCay <lm...@hortonworks.com>
Committed: Sat Nov 4 12:09:10 2017 -0400

----------------------------------------------------------------------
 .../gateway/deploy/DeploymentFactory.java       | 23 ++++++++++++++++++++
 .../deploy/DeploymentFactoryFuncTest.java       |  5 +++++
 2 files changed, 28 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/67ad3e38/gateway-server/src/main/java/org/apache/hadoop/gateway/deploy/DeploymentFactory.java
----------------------------------------------------------------------
diff --git a/gateway-server/src/main/java/org/apache/hadoop/gateway/deploy/DeploymentFactory.java b/gateway-server/src/main/java/org/apache/hadoop/gateway/deploy/DeploymentFactory.java
index 5c9922c..36cbb2a 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/deploy/DeploymentFactory.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/deploy/DeploymentFactory.java
@@ -239,11 +239,34 @@ public abstract class DeploymentFactory {
   // list add it.
   private static Map<String,List<ProviderDeploymentContributor>> selectContextProviders( Topology topology ) {
     Map<String,List<ProviderDeploymentContributor>> providers = new LinkedHashMap<String, List<ProviderDeploymentContributor>>();
+    addMissingDefaultProviders(topology);
     collectTopologyProviders( topology, providers );
     collectDefaultProviders( providers );
     return providers;
   }
 
+  private static void addMissingDefaultProviders(Topology topology) {
+    Collection<Provider> providers = topology.getProviders();
+    HashMap<String, String> providerMap = new HashMap<>();
+    for (Provider provider : providers) {
+      providerMap.put(provider.getRole(), provider.getName());
+    }
+    // first make sure that the required provider is available from the serviceloaders
+    // for some tests the number of providers are limited to the classpath of the module
+    // and exceptions will be thrown as topologies are deployed even though they will
+    // work fine at actual server runtime.
+    if (PROVIDER_CONTRIBUTOR_MAP.get("identity-assertion") != null) {
+      // check for required providers and add the defaults if missing
+      if (!providerMap.containsKey("identity-assertion")) {
+        Provider idassertion = new Provider();
+        idassertion.setRole("identity-assertion");
+        idassertion.setName("Default");
+        idassertion.setEnabled(true);
+        providers.add(idassertion);
+      }
+    }
+  }
+
   private static void collectTopologyProviders(
       Topology topology, Map<String, List<ProviderDeploymentContributor>> defaults ) {
     for( Provider provider : topology.getProviders() ) {

http://git-wip-us.apache.org/repos/asf/knox/blob/67ad3e38/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
index 6f0924c..8d0d74f 100644
--- a/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
+++ b/gateway-test/src/test/java/org/apache/hadoop/gateway/deploy/DeploymentFactoryFuncTest.java
@@ -139,6 +139,11 @@ public class DeploymentFactoryFuncTest {
     assertThat( gateway, hasXPath( "/gateway/resource[1]/filter[2]/param[1]/value", equalTo( "org.opensource.ExistingFilter" ) ) );
     assertThat( gateway, hasXPath( "/gateway/resource[1]/filter[2]/param[2]/name", equalTo( "test-param-name" ) ) );
     assertThat( gateway, hasXPath( "/gateway/resource[1]/filter[2]/param[2]/value", equalTo( "test-param-value" ) ) );
+
+    // testing for the adding of missing identity assertion provider - since it isn't explicitly added above
+    assertThat( gateway, hasXPath( "/gateway/resource[1]/filter[4]/role", equalTo( "identity-assertion" ) ) );
+    assertThat( gateway, hasXPath( "/gateway/resource[1]/filter[4]/name", equalTo( "Default" ) ) );
+
     LOG_EXIT();
   }