From abb3f0ce8eb28d714db3ac187307fe490ffa815f Mon Sep 17 00:00:00 2001 From: Xun Date: Thu, 19 Dec 2024 21:42:21 +0800 Subject: [PATCH] improve code --- .../gravitino/connector/BaseCatalog.java | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/core/src/main/java/org/apache/gravitino/connector/BaseCatalog.java b/core/src/main/java/org/apache/gravitino/connector/BaseCatalog.java index ecc87ce8359..1cdd152d288 100644 --- a/core/src/main/java/org/apache/gravitino/connector/BaseCatalog.java +++ b/core/src/main/java/org/apache/gravitino/connector/BaseCatalog.java @@ -194,56 +194,56 @@ public AuthorizationPlugin getAuthorizationPlugin() { } } } - return authorization.newPlugin(entity.namespace().level(0), provider(), this.conf); + return (AuthorizationPlugin) authorization; } public void initAuthorizationPluginInstance(IsolatedClassLoader classLoader) { - if (authorization != null) { + if (authorization == null) { synchronized (this) { - if (authorization != null) { - return; + if (authorization == null) { + String authorizationProvider = + (String) catalogPropertiesMetadata().getOrDefault(conf, AUTHORIZATION_PROVIDER); + if (authorizationProvider == null) { + LOG.info("Authorization provider is not set!"); + return; + } + try { + authorization = + classLoader.withClassLoader( + cl -> { + try { + ServiceLoader loader = + ServiceLoader.load(AuthorizationProvider.class, cl); + + List> providers = + Streams.stream(loader.iterator()) + .filter(p -> p.shortName().equalsIgnoreCase(authorizationProvider)) + .map(AuthorizationProvider::getClass) + .collect(Collectors.toList()); + if (providers.isEmpty()) { + throw new IllegalArgumentException( + "No authorization provider found for: " + authorizationProvider); + } else if (providers.size() > 1) { + throw new IllegalArgumentException( + "Multiple authorization providers found for: " + + authorizationProvider); + } + return (BaseAuthorization) + Iterables.getOnlyElement(providers) + .getDeclaredConstructor() + .newInstance(); + } catch (Exception e) { + LOG.error("Failed to create authorization instance", e); + throw new RuntimeException(e); + } + }); + } catch (Exception e) { + LOG.error("Failed to load authorization with class loader", e); + throw new RuntimeException(e); + } } } } - - String authorizationProvider = - (String) catalogPropertiesMetadata().getOrDefault(conf, AUTHORIZATION_PROVIDER); - if (authorizationProvider == null) { - LOG.info("Authorization provider is not set!"); - return; - } - - try { - authorization = - classLoader.withClassLoader( - cl -> { - try { - ServiceLoader loader = - ServiceLoader.load(AuthorizationProvider.class, cl); - - List> providers = - Streams.stream(loader.iterator()) - .filter(p -> p.shortName().equalsIgnoreCase(authorizationProvider)) - .map(AuthorizationProvider::getClass) - .collect(Collectors.toList()); - if (providers.isEmpty()) { - throw new IllegalArgumentException( - "No authorization provider found for: " + authorizationProvider); - } else if (providers.size() > 1) { - throw new IllegalArgumentException( - "Multiple authorization providers found for: " + authorizationProvider); - } - return (BaseAuthorization) - Iterables.getOnlyElement(providers).getDeclaredConstructor().newInstance(); - } catch (Exception e) { - LOG.error("Failed to create authorization instance", e); - throw new RuntimeException(e); - } - }); - } catch (Exception e) { - LOG.error("Failed to load authorization with class loader", e); - throw new RuntimeException(e); - } } @Override