You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/02/04 00:51:14 UTC

[11/50] [abbrv] kylin git commit: KYLIN-2876, refine singleton in ExternalAclProvider.

KYLIN-2876, refine singleton in ExternalAclProvider.


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

Branch: refs/heads/sync
Commit: a31bce69dfef5ee8070e8b642cdcfbcfde404a60
Parents: 55365b6
Author: tttMelody <24...@qq.com>
Authored: Mon Jan 8 19:35:53 2018 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Jan 26 22:54:58 2018 +0800

----------------------------------------------------------------------
 .../rest/security/ExternalAclProvider.java      | 28 +++++++++-----------
 1 file changed, 12 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/a31bce69/server-base/src/main/java/org/apache/kylin/rest/security/ExternalAclProvider.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/security/ExternalAclProvider.java b/server-base/src/main/java/org/apache/kylin/rest/security/ExternalAclProvider.java
index 9e977d0..ef21f00 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/security/ExternalAclProvider.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/security/ExternalAclProvider.java
@@ -19,6 +19,7 @@ package org.apache.kylin.rest.security;
 
 import java.util.List;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.Pair;
@@ -28,26 +29,21 @@ import org.springframework.security.acls.model.Permission;
  */
 abstract public class ExternalAclProvider {
 
-    private static boolean inited = false;
-    private static ExternalAclProvider singleton = null;
+    private volatile static ExternalAclProvider singleton = null;
 
     public static ExternalAclProvider getInstance() {
-        if (inited)
-            return singleton;
-
-        synchronized (ExternalAclProvider.class) {
-            if (inited)
-                return singleton;
-
-            String cls = KylinConfig.getInstanceFromEnv().getExternalAclProvider();
-            if (cls != null && cls.length() > 0) {
-                singleton = (ExternalAclProvider) ClassUtil.newInstance(cls);
-                singleton.init();
+        if (singleton == null) {
+            synchronized (ExternalAclProvider.class) {
+                if (singleton == null) {
+                    String cls = KylinConfig.getInstanceFromEnv().getExternalAclProvider();
+                    if (!StringUtils.isBlank(cls)) {
+                        singleton = (ExternalAclProvider) ClassUtil.newInstance(cls);
+                        singleton.init();
+                    }
+                }
             }
-
-            inited = true;
-            return singleton;
         }
+        return singleton;
     }
 
     // ============================================================================