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;
}
// ============================================================================