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

jmclean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 62f138a62d [#6530] improvement(authorization): Reduce repeated strings 
in Ranger classes (#6685)
62f138a62d is described below

commit 62f138a62d2888d0c2f8dd6f7cd63eb677f2c728
Author: Lord of Abyss <[email protected]>
AuthorDate: Thu Mar 13 15:07:29 2025 +0800

    [#6530] improvement(authorization): Reduce repeated strings in Ranger 
classes (#6685)
    
    ### What changes were proposed in this pull request?
    
    Reduce repeated strings in Ranger classes, abstract the error message
    and make them static.
    
    ### Why are the changes needed?
    
    Fix: #6530
    
    ### Does this PR introduce _any_ user-facing change?
    
    no.
    
    ### How was this patch tested?
    
    local test.
---
 .../common/ChainedAuthorizationProperties.java     |  4 +--
 .../authorization/common/ErrorMessages.java        | 29 +++++++++++++++++
 .../common/RangerAuthorizationProperties.java      | 24 +++++++++------
 .../authorization/ranger/RangerAuthorization.java  |  5 ++-
 .../ranger/RangerAuthorizationHDFSPlugin.java      | 24 +++++++++------
 .../ranger/RangerAuthorizationHadoopSQLPlugin.java | 36 +++++++++++++---------
 .../ranger/RangerAuthorizationPlugin.java          |  4 +--
 7 files changed, 86 insertions(+), 40 deletions(-)

diff --git 
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ChainedAuthorizationProperties.java
 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ChainedAuthorizationProperties.java
index 7e5aea0ca2..410f068f3c 100644
--- 
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ChainedAuthorizationProperties.java
+++ 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ChainedAuthorizationProperties.java
@@ -77,7 +77,7 @@ public class ChainedAuthorizationProperties extends 
AuthorizationProperties {
     Preconditions.checkArgument(
         properties.containsKey(CHAIN_PLUGINS_PROPERTIES_KEY)
             && properties.get(CHAIN_PLUGINS_PROPERTIES_KEY) != null,
-        String.format("%s is required", CHAIN_PLUGINS_PROPERTIES_KEY));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
CHAIN_PLUGINS_PROPERTIES_KEY));
 
     String[] pluginNames = 
properties.get(CHAIN_PLUGINS_PROPERTIES_KEY).split(PLUGINS_SPLITTER);
     Preconditions.checkArgument(
@@ -113,7 +113,7 @@ public class ChainedAuthorizationProperties extends 
AuthorizationProperties {
   public void validate() {
     Preconditions.checkArgument(
         properties.containsKey(CHAIN_PLUGINS_PROPERTIES_KEY),
-        String.format("%s is required", CHAIN_PLUGINS_PROPERTIES_KEY));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
CHAIN_PLUGINS_PROPERTIES_KEY));
     List<String> pluginNames =
         
Arrays.stream(properties.get(CHAIN_PLUGINS_PROPERTIES_KEY).split(PLUGINS_SPLITTER))
             .map(String::trim)
diff --git 
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ErrorMessages.java
 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ErrorMessages.java
new file mode 100644
index 0000000000..51014fe313
--- /dev/null
+++ 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/ErrorMessages.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.gravitino.authorization.common;
+
+public class ErrorMessages {
+  public static final String MISSING_REQUIRED_ARGUMENT = "%s is required";
+  public static final String PRIVILEGE_NOT_SUPPORTED =
+      "The privilege %s is not supported for the securable object: %s";
+  public static final String OWNER_PRIVILEGE_NOT_SUPPORTED =
+      "The owner privilege is not supported for the securable " + "object: %s";
+  public static final String INVALID_POLICY_NAME = "The policy name (%s) is 
invalid!";
+}
diff --git 
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/RangerAuthorizationProperties.java
 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/RangerAuthorizationProperties.java
index 71cf686efa..3b7b9c0cc5 100644
--- 
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/RangerAuthorizationProperties.java
+++ 
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/RangerAuthorizationProperties.java
@@ -82,30 +82,34 @@ public class RangerAuthorizationProperties extends 
AuthorizationProperties {
   public void validate() {
     Preconditions.checkArgument(
         properties.containsKey(RANGER_ADMIN_URL),
-        String.format("%s is required", RANGER_ADMIN_URL));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_ADMIN_URL));
     Preconditions.checkArgument(
         properties.containsKey(RANGER_SERVICE_TYPE),
-        String.format("%s is required", RANGER_SERVICE_TYPE));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_SERVICE_TYPE));
     Preconditions.checkArgument(
         properties.containsKey(RANGER_AUTH_TYPE),
-        String.format("%s is required", RANGER_AUTH_TYPE));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_AUTH_TYPE));
     Preconditions.checkArgument(
-        properties.containsKey(RANGER_USERNAME), String.format("%s is 
required", RANGER_USERNAME));
+        properties.containsKey(RANGER_USERNAME),
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_USERNAME));
     Preconditions.checkArgument(
-        properties.containsKey(RANGER_PASSWORD), String.format("%s is 
required", RANGER_PASSWORD));
+        properties.containsKey(RANGER_PASSWORD),
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_PASSWORD));
     Preconditions.checkArgument(
         properties.get(RANGER_ADMIN_URL) != null,
-        String.format("%s is required", RANGER_ADMIN_URL));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_ADMIN_URL));
     Preconditions.checkArgument(
         properties.get(RANGER_AUTH_TYPE) != null,
-        String.format("%s is required", RANGER_AUTH_TYPE));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_AUTH_TYPE));
     Preconditions.checkArgument(
-        properties.get(RANGER_USERNAME) != null, String.format("%s is 
required", RANGER_USERNAME));
+        properties.get(RANGER_USERNAME) != null,
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_USERNAME));
     Preconditions.checkArgument(
-        properties.get(RANGER_PASSWORD) != null, String.format("%s is 
required", RANGER_PASSWORD));
+        properties.get(RANGER_PASSWORD) != null,
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_PASSWORD));
 
     Preconditions.checkArgument(
         properties.get(RANGER_SERVICE_NAME) != null,
-        String.format("%s is required", RANGER_SERVICE_NAME));
+        String.format(ErrorMessages.MISSING_REQUIRED_ARGUMENT, 
RANGER_SERVICE_NAME));
   }
 }
diff --git 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorization.java
 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorization.java
index b179b94c02..7a4c18926c 100644
--- 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorization.java
+++ 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorization.java
@@ -20,6 +20,7 @@ package org.apache.gravitino.authorization.ranger;
 
 import com.google.common.base.Preconditions;
 import java.util.Map;
+import org.apache.gravitino.authorization.common.ErrorMessages;
 import org.apache.gravitino.authorization.common.RangerAuthorizationProperties;
 import org.apache.gravitino.connector.authorization.AuthorizationPlugin;
 import org.apache.gravitino.connector.authorization.BaseAuthorization;
@@ -36,7 +37,9 @@ public class RangerAuthorization extends 
BaseAuthorization<RangerAuthorization>
       String metalake, String catalogProvider, Map<String, String> properties) 
{
     Preconditions.checkArgument(
         
properties.containsKey(RangerAuthorizationProperties.RANGER_SERVICE_TYPE),
-        String.format("%s is required", 
RangerAuthorizationProperties.RANGER_SERVICE_TYPE));
+        String.format(
+            ErrorMessages.MISSING_REQUIRED_ARGUMENT,
+            RangerAuthorizationProperties.RANGER_SERVICE_TYPE));
     String serviceType =
         
properties.get(RangerAuthorizationProperties.RANGER_SERVICE_TYPE).toUpperCase();
     switch (serviceType) {
diff --git 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java
 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java
index e5c8434970..9f2fb01eec 100644
--- 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java
+++ 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java
@@ -49,6 +49,7 @@ import org.apache.gravitino.authorization.AuthorizationUtils;
 import org.apache.gravitino.authorization.MetadataObjectChange;
 import org.apache.gravitino.authorization.Privilege;
 import org.apache.gravitino.authorization.SecurableObject;
+import org.apache.gravitino.authorization.common.ErrorMessages;
 import org.apache.gravitino.authorization.common.PathBasedMetadataObject;
 import org.apache.gravitino.authorization.common.PathBasedSecurableObject;
 import org.apache.gravitino.authorization.common.RangerAuthorizationProperties;
@@ -475,8 +476,9 @@ public class RangerAuthorizationHDFSPlugin extends 
RangerAuthorizationPlugin {
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 case CREATE_SCHEMA:
@@ -505,8 +507,9 @@ public class RangerAuthorizationHDFSPlugin extends 
RangerAuthorizationPlugin {
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 case SELECT_TABLE:
@@ -543,14 +546,16 @@ public class RangerAuthorizationHDFSPlugin extends 
RangerAuthorizationPlugin {
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 default:
                   throw new AuthorizationPluginException(
-                      "The privilege %s is not supported for the securable 
object: %s",
-                      gravitinoPrivilege.name(), securableObject.type());
+                      ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                      gravitinoPrivilege.name(),
+                      securableObject.type());
               }
             });
 
@@ -584,8 +589,7 @@ public class RangerAuthorizationHDFSPlugin extends 
RangerAuthorizationPlugin {
         break;
       default:
         throw new AuthorizationPluginException(
-            "The owner privilege is not supported for the securable object: 
%s",
-            gravitinoMetadataObject.type());
+            ErrorMessages.OWNER_PRIVILEGE_NOT_SUPPORTED, 
gravitinoMetadataObject.type());
     }
 
     return rangerSecurableObjects;
diff --git 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHadoopSQLPlugin.java
 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHadoopSQLPlugin.java
index bef0562f19..d519dd2e52 100644
--- 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHadoopSQLPlugin.java
+++ 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHadoopSQLPlugin.java
@@ -45,6 +45,7 @@ import 
org.apache.gravitino.authorization.MetadataObjectChange;
 import org.apache.gravitino.authorization.Privilege;
 import org.apache.gravitino.authorization.SecurableObject;
 import org.apache.gravitino.authorization.SecurableObjects;
+import org.apache.gravitino.authorization.common.ErrorMessages;
 import org.apache.gravitino.authorization.common.RangerAuthorizationProperties;
 import 
org.apache.gravitino.authorization.ranger.RangerPrivileges.RangerHadoopSQLPrivilege;
 import 
org.apache.gravitino.authorization.ranger.reference.RangerDefines.PolicyResource;
@@ -229,7 +230,7 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                           
AuthorizationSecurableObject.DOT_SPLITTER.splitToList(policyName));
                   Preconditions.checkArgument(
                       policyNames.size() >= oldAuthzMetaObject.names().size(),
-                      String.format("The policy name (%s) is invalid!", 
policyName));
+                      String.format(ErrorMessages.INVALID_POLICY_NAME, 
policyName));
                   if 
(policyNames.get(index).equals(RangerHelper.RESOURCE_ALL)) {
                     // Doesn't need to rename the policy `*`
                     return;
@@ -527,8 +528,7 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
         break;
       default:
         throw new AuthorizationPluginException(
-            "The owner privilege is not supported for the securable object: 
%s",
-            gravitinoMetadataObject.type());
+            ErrorMessages.OWNER_PRIVILEGE_NOT_SUPPORTED, 
gravitinoMetadataObject.type());
     }
 
     return rangerSecurableObjects;
@@ -574,8 +574,9 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 case CREATE_SCHEMA:
@@ -592,8 +593,9 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 case USE_SCHEMA:
@@ -619,8 +621,9 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                       break;
                     default:
                       throw new AuthorizationPluginException(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 case CREATE_TABLE:
@@ -672,8 +675,9 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                     case TABLE:
                       if (gravitinoPrivilege.name() == 
Privilege.Name.CREATE_TABLE) {
                         throw new AuthorizationPluginException(
-                            "The privilege %s is not supported for the 
securable object: %s",
-                            gravitinoPrivilege.name(), securableObject.type());
+                            ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                            gravitinoPrivilege.name(),
+                            securableObject.type());
                       } else {
                         translateMetadataObject(securableObject).stream()
                             .forEach(
@@ -700,14 +704,16 @@ public class RangerAuthorizationHadoopSQLPlugin extends 
RangerAuthorizationPlugi
                       break;
                     default:
                       LOG.warn(
-                          "The privilege %s is not supported for the securable 
object: %s",
-                          gravitinoPrivilege.name(), securableObject.type());
+                          ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                          gravitinoPrivilege.name(),
+                          securableObject.type());
                   }
                   break;
                 default:
                   LOG.warn(
-                      "The privilege %s is not supported for the securable 
object: %s",
-                      gravitinoPrivilege.name(), securableObject.type());
+                      ErrorMessages.PRIVILEGE_NOT_SUPPORTED,
+                      gravitinoPrivilege.name(),
+                      securableObject.type());
               }
             });
 
diff --git 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationPlugin.java
 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationPlugin.java
index b7189ba6a6..e1a8c21c4b 100644
--- 
a/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationPlugin.java
+++ 
b/authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationPlugin.java
@@ -44,6 +44,7 @@ import org.apache.gravitino.authorization.Role;
 import org.apache.gravitino.authorization.RoleChange;
 import org.apache.gravitino.authorization.SecurableObject;
 import org.apache.gravitino.authorization.User;
+import org.apache.gravitino.authorization.common.ErrorMessages;
 import org.apache.gravitino.authorization.common.RangerAuthorizationProperties;
 import org.apache.gravitino.authorization.ranger.reference.VXGroup;
 import org.apache.gravitino.authorization.ranger.reference.VXGroupList;
@@ -574,8 +575,7 @@ public abstract class RangerAuthorizationPlugin
         break;
       default:
         throw new AuthorizationPluginException(
-            "The owner privilege is not supported for the securable object: 
%s",
-            metadataObject.type());
+            ErrorMessages.OWNER_PRIVILEGE_NOT_SUPPORTED, 
metadataObject.type());
     }
 
     return Boolean.TRUE;

Reply via email to