flyrain commented on code in PR #1314:
URL: https://github.com/apache/polaris/pull/1314#discussion_r2031826511


##########
service/common/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalog.java:
##########
@@ -249,27 +246,246 @@ public Policy updatePolicy(
     return constructPolicy(newPolicyEntity);
   }
 
-  public boolean dropPolicy(PolicyIdentifier policyIdentifier, boolean 
detachAll) {
+  public void dropPolicy(PolicyIdentifier policyIdentifier, boolean detachAll) 
{
     // TODO: Implement detachAll when we support attach/detach policy
-    PolarisResolvedPathWrapper resolvedEntities =
-        resolvedEntityView.getPassthroughResolvedPath(
-            policyIdentifier, PolarisEntityType.POLICY, 
PolarisEntitySubType.NULL_SUBTYPE);
-    if (resolvedEntities == null) {
-      throw new NoSuchPolicyException(String.format("Policy does not exist: 
%s", policyIdentifier));
-    }
+    var resolvedPolicyPath = getResolvedPathWrapper(policyIdentifier);
+    var catalogPath = resolvedPolicyPath.getRawParentPath();
+    var policyEntity = resolvedPolicyPath.getRawLeafEntity();
 
-    List<PolarisEntity> catalogPath = resolvedEntities.getRawParentPath();
-    PolarisEntity leafEntity = resolvedEntities.getRawLeafEntity();
-
-    DropEntityResult dropEntityResult =
+    var result =
         metaStoreManager.dropEntityIfExists(
             callContext.getPolarisCallContext(),
             PolarisEntity.toCoreList(catalogPath),
-            leafEntity,
+            policyEntity,
             Map.of(),
             false);
 
-    return dropEntityResult.isSuccess();
+    if (!result.isSuccess()) {

Review Comment:
   > From the user POV, the return of this method doesn't matter but rather the 
return code (and content) of the REST API matters.
   
   Not sure I understand completely. The http return code is controlled by the 
exception mapper, like `IcebergExceptionMapper` and `PolarisExceptionMapper`.  
   
   > throwing an exception here looks incorrect to me, or at least inconsistent 
with IcebergCatalog and GenericTableCatalog
   
   It is inconsistent with a method like `public boolean 
dropTable(TableIdentifier tableIdentifier, boolean purge)` in `IcebergCatalog`, 
but I believe it's the right thing to do. The `dropTable` method needs to 
return a boolean only because it is inherited from the method in a class from 
Iceberg lib. I didn't see any reason we need a boolean return. Or am I missing 
something?



-- 
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