jerqi commented on code in PR #5786:
URL: https://github.com/apache/gravitino/pull/5786#discussion_r1897049737


##########
authorizations/authorization-ranger/src/main/java/org/apache/gravitino/authorization/ranger/RangerAuthorizationHDFSPlugin.java:
##########
@@ -212,27 +287,77 @@ public AuthorizationMetadataObject 
translateMetadataObject(MetadataObject metada
     Preconditions.checkArgument(
         nsMetadataObject.size() > 0, "The metadata object must have at least 
one name.");
 
-    if (metadataObject.type() == MetadataObject.Type.FILESET) {
-      RangerPathBaseMetadataObject rangerHDFSMetadataObject =
-          new RangerPathBaseMetadataObject(
-              getFileSetPath(metadataObject), 
RangerPathBaseMetadataObject.Type.PATH);
-      rangerHDFSMetadataObject.validateAuthorizationMetadataObject();
-      return rangerHDFSMetadataObject;
-    } else {
-      return new RangerPathBaseMetadataObject("", 
RangerPathBaseMetadataObject.Type.PATH);
+    RangerHDFSMetadataObject rangerHDFSMetadataObject;
+    switch (metadataObject.type()) {
+      case METALAKE:
+      case CATALOG:
+        rangerHDFSMetadataObject =
+            new RangerHDFSMetadataObject("", 
RangerHDFSMetadataObject.Type.PATH);
+        break;
+      case SCHEMA:
+        rangerHDFSMetadataObject =
+            new RangerHDFSMetadataObject(
+                metadataObject.fullName(), RangerHDFSMetadataObject.Type.PATH);
+        break;
+      case FILESET:
+        rangerHDFSMetadataObject =
+            new RangerHDFSMetadataObject(
+                getLocationPath(metadataObject), 
RangerHDFSMetadataObject.Type.PATH);
+        break;
+      default:
+        throw new AuthorizationPluginException(
+            "The metadata object type %s is not supported in the 
RangerAuthorizationHDFSPlugin",
+            metadataObject.type());
     }
+    rangerHDFSMetadataObject.validateAuthorizationMetadataObject();
+    return rangerHDFSMetadataObject;
   }
 
-  public String getFileSetPath(MetadataObject metadataObject) {
-    FilesetDispatcher filesetDispatcher = 
GravitinoEnv.getInstance().filesetDispatcher();
-    NameIdentifier identifier =
-        NameIdentifier.parse(String.format("%s.%s", metalake, 
metadataObject.fullName()));
-    Fileset fileset = filesetDispatcher.loadFileset(identifier);
-    Preconditions.checkArgument(
-        fileset != null, String.format("Fileset %s is not found", identifier));
-    String filesetLocation = fileset.storageLocation();
-    Preconditions.checkArgument(
-        filesetLocation != null, String.format("Fileset %s location is not 
found", identifier));
-    return pattern.matcher(filesetLocation).replaceAll("");
+  private NameIdentifier getObjectNameIdentifier(MetadataObject 
metadataObject) {
+    return NameIdentifier.parse(String.format("%s.%s", metalake, 
metadataObject.fullName()));
+  }
+
+  @VisibleForTesting
+  public String getLocationPath(MetadataObject metadataObject) throws 
NoSuchEntityException {
+    String locationPath = null;
+    switch (metadataObject.type()) {
+      case METALAKE:
+      case SCHEMA:
+      case TABLE:

Review Comment:
   We need add `TODO` in the code. Otherwise I will think this is an error.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to