Copilot commented on code in PR #13791:
URL: https://github.com/apache/gravitino/pull/13791#discussion_r4247997809


##########
core/src/main/java/org/apache/gravitino/hook/SemanticModelHookDispatcher.java:
##########
@@ -86,19 +89,22 @@ public SemanticModel createSemanticModel(
           IllegalSemanticModelException {
     SemanticModel semanticModel =
         dispatcher.createSemanticModel(ident, comment, definition, properties);
+    setCreatorAsOwner(ident);
+    return semanticModel;

Review Comment:
   `setCreatorAsOwner()` fetches `PrincipalUtils.getCurrentUserName()` at the 
time ownership is set, not necessarily the initiating user at the start of the 
operation. To keep ownership consistent with the operation initiator (and 
consistent with how `SemanticModelEventDispatcher` captures the user once), 
capture the username once in `createSemanticModel(...)` / 
`importSemanticModel(...)` and pass it into `setCreatorAsOwner(...)` (e.g., 
`setCreatorAsOwner(ident, user)`), rather than calling `PrincipalUtils` inside 
the helper.



##########
core/src/main/java/org/apache/gravitino/hook/SemanticModelHookDispatcher.java:
##########
@@ -123,4 +129,15 @@ public boolean dropSemanticModel(NameIdentifier ident) {
     }
     return dropped;
   }
+
+  private void setCreatorAsOwner(NameIdentifier ident) {
+    OwnerDispatcher ownerManager = ownerDispatcher.get();
+    if (ownerManager != null) {
+      ownerManager.setOwner(
+          ident.namespace().level(0),
+          NameIdentifierUtil.toMetadataObject(ident, 
Entity.EntityType.SEMANTIC_MODEL),
+          PrincipalUtils.getCurrentUserName(),
+          Owner.Type.USER);
+    }
+  }

Review Comment:
   `setCreatorAsOwner()` fetches `PrincipalUtils.getCurrentUserName()` at the 
time ownership is set, not necessarily the initiating user at the start of the 
operation. To keep ownership consistent with the operation initiator (and 
consistent with how `SemanticModelEventDispatcher` captures the user once), 
capture the username once in `createSemanticModel(...)` / 
`importSemanticModel(...)` and pass it into `setCreatorAsOwner(...)` (e.g., 
`setCreatorAsOwner(ident, user)`), rather than calling `PrincipalUtils` inside 
the helper.



##########
core/src/main/java/org/apache/gravitino/hook/SemanticModelHookDispatcher.java:
##########
@@ -86,19 +89,22 @@ public SemanticModel createSemanticModel(
           IllegalSemanticModelException {
     SemanticModel semanticModel =
         dispatcher.createSemanticModel(ident, comment, definition, properties);
+    setCreatorAsOwner(ident);
+    return semanticModel;
+  }
 
-    // Set the creator as the owner of the Semantic Model.
-    OwnerDispatcher ownerManager = ownerDispatcher.get();
-    if (ownerManager != null) {
-      ownerManager.setOwner(
-          ident.namespace().level(0),
-          NameIdentifierUtil.toMetadataObject(ident, 
Entity.EntityType.SEMANTIC_MODEL),
-          PrincipalUtils.getCurrentUserName(),
-          Owner.Type.USER);
-    }
+  @Override
+  public SemanticModel importSemanticModel(NameIdentifier ident, 
ImportedSemanticModel model) {
+    SemanticModel semanticModel = dispatcher.importSemanticModel(ident, model);
+    setCreatorAsOwner(ident);
     return semanticModel;

Review Comment:
   `setCreatorAsOwner()` fetches `PrincipalUtils.getCurrentUserName()` at the 
time ownership is set, not necessarily the initiating user at the start of the 
operation. To keep ownership consistent with the operation initiator (and 
consistent with how `SemanticModelEventDispatcher` captures the user once), 
capture the username once in `createSemanticModel(...)` / 
`importSemanticModel(...)` and pass it into `setCreatorAsOwner(...)` (e.g., 
`setCreatorAsOwner(ident, user)`), rather than calling `PrincipalUtils` inside 
the helper.



##########
core/src/main/java/org/apache/gravitino/listener/api/event/semantic/ExportSemanticModelEvent.java:
##########
@@ -0,0 +1,60 @@
+/*
+ * 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.listener.api.event.semantic;
+
+import javax.annotation.Nullable;
+import org.apache.gravitino.NameIdentifier;
+import org.apache.gravitino.annotation.DeveloperApi;
+import org.apache.gravitino.listener.api.event.OperationType;
+import org.apache.gravitino.semantic.OssieFormat;
+
+/** Successful event for exporting a Semantic Model as an Ossie document. */
+@DeveloperApi
+public final class ExportSemanticModelEvent extends SemanticModelEvent {
+  @Nullable private final OssieFormat format;
+
+  /**
+   * Constructs a {@code ExportSemanticModelEvent}.
+   *
+   * @param user The username of the individual who initiated the operation.
+   * @param identifier The Semantic Model identifier.
+   * @param format The document format, or null for an invalid request.
+   */

Review Comment:
   Same concern as the import success event: for a successful export event, the 
Javadoc stating `format` may be null “for an invalid request” is inconsistent 
with the event semantics. Please clarify the contract (success implies a valid 
request) or adjust the nullability/documentation accordingly.



##########
core/src/main/java/org/apache/gravitino/listener/api/event/semantic/ImportSemanticModelEvent.java:
##########
@@ -0,0 +1,76 @@
+/*
+ * 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.listener.api.event.semantic;
+
+import javax.annotation.Nullable;
+import org.apache.gravitino.NameIdentifier;
+import org.apache.gravitino.annotation.DeveloperApi;
+import org.apache.gravitino.listener.api.event.OperationType;
+import org.apache.gravitino.listener.api.info.SemanticModelInfo;
+import org.apache.gravitino.semantic.OssieFormat;
+
+/** Successful event for importing an Ossie document as a Semantic Model. */
+@DeveloperApi
+public final class ImportSemanticModelEvent extends SemanticModelEvent {
+  @Nullable private final OssieFormat format;
+  private final SemanticModelInfo importedSemanticModelInfo;
+
+  /**
+   * Constructs a {@code ImportSemanticModelEvent}.
+   *
+   * @param user The username of the individual who initiated the operation.
+   * @param identifier The Semantic Model identifier.
+   * @param format The document format, or null for an invalid request.
+   * @param importedSemanticModelInfo The imported Semantic Model information.
+   */

Review Comment:
   This is a *success* event, but the constructor Javadoc says `format` can be 
null “for an invalid request”. For a successful import, “invalid request” 
shouldn’t apply; please update the Javadoc to reflect when `format` can 
actually be null (if ever), or tighten the API contract (e.g., document it as 
non-null on success).



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