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 2019/04/11 03:59:15 UTC

[knox] branch master updated: KNOX-1851 - Fix NPE in Zookeeper Remote Alias Service (#86)

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

more pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 9b611ae  KNOX-1851 - Fix NPE in Zookeeper Remote Alias Service (#86)
9b611ae is described below

commit 9b611aea89a7ff0ef9205e071e076c92b4afccdf
Author: Sandeep Moré <mo...@gmail.com>
AuthorDate: Wed Apr 10 23:59:11 2019 -0400

    KNOX-1851 - Fix NPE in Zookeeper Remote Alias Service (#86)
---
 gateway-server/pom.xml                             |  4 ++++
 .../impl/ZookeeperRemoteAliasServiceProvider.java  | 28 +++++++++++++++++++---
 .../java/org/apache/knox/gateway/util/KnoxCLI.java |  2 +-
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/gateway-server/pom.xml b/gateway-server/pom.xml
index 28d07b8..1d43d9b 100644
--- a/gateway-server/pom.xml
+++ b/gateway-server/pom.xml
@@ -354,6 +354,10 @@
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-impl</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.knox</groupId>
+            <artifactId>gateway-util-configinjector</artifactId>
+        </dependency>
 
         <!-- ********** ********** ********** ********** ********** ********** -->
         <!-- ********** Test Dependencies                           ********** -->
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceProvider.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceProvider.java
index 5fc37b5..52c4462 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceProvider.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/ZookeeperRemoteAliasServiceProvider.java
@@ -17,10 +17,18 @@
  */
 package org.apache.knox.gateway.services.security.impl;
 
+import org.apache.knox.gateway.GatewayServer;
+import org.apache.knox.gateway.config.ConfigurationException;
 import org.apache.knox.gateway.security.RemoteAliasServiceProvider;
-import org.apache.knox.gateway.service.config.remote.zk.ZooKeeperClientServiceProvider;
+import org.apache.knox.gateway.service.config.remote.zk.ZooKeeperClientService;
+import org.apache.knox.gateway.services.GatewayServices;
+import org.apache.knox.gateway.services.ServiceType;
+import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClientService;
 import org.apache.knox.gateway.services.security.AliasService;
 import org.apache.knox.gateway.services.security.MasterService;
+import org.apache.knox.gateway.util.KnoxCLI;
+
+import java.util.Locale;
 
 public class ZookeeperRemoteAliasServiceProvider implements RemoteAliasServiceProvider {
   @Override
@@ -30,7 +38,21 @@ public class ZookeeperRemoteAliasServiceProvider implements RemoteAliasServicePr
 
   @Override
   public AliasService newInstance(AliasService localAliasService, MasterService ms) {
-    return new ZookeeperRemoteAliasService(localAliasService, ms,
-        new ZooKeeperClientServiceProvider().newInstance());
+
+    final GatewayServices services = GatewayServer.getGatewayServices() != null ? GatewayServer.getGatewayServices() : KnoxCLI.getGatewayServices();
+
+    if(services != null) {
+      final RemoteConfigurationRegistryClientService registryClientService = services
+          .getService(ServiceType.REMOTE_REGISTRY_CLIENT_SERVICE);
+
+      /* Check to see if we already have ZooKeeperClientService instance, if so use it */
+      if (registryClientService instanceof ZooKeeperClientService) {
+        return new ZookeeperRemoteAliasService(localAliasService, ms,
+            registryClientService);
+
+      }
+    }
+
+    throw new ConfigurationException(String.format(Locale.ROOT,"%s service not configured", ZooKeeperClientService.TYPE));
   }
 }
diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
index 6413315..daae9f3 100644
--- a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
+++ b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java
@@ -171,7 +171,7 @@ public class KnoxCLI extends Configured implements Tool {
     return exitCode;
   }
 
-  GatewayServices getGatewayServices() {
+  public static synchronized GatewayServices getGatewayServices() {
     return services;
   }