Skip to content

Commit

Permalink
Add all tag event
Browse files Browse the repository at this point in the history
  • Loading branch information
TungYuChiang committed Dec 26, 2024
1 parent 2aed14f commit 7e33214
Show file tree
Hide file tree
Showing 12 changed files with 755 additions and 133 deletions.
263 changes: 139 additions & 124 deletions core/src/main/java/org/apache/gravitino/listener/TagEventDispatcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,20 @@
package org.apache.gravitino.listener;

import java.util.Map;

import org.apache.gravitino.MetadataObject;
import org.apache.gravitino.exceptions.NoSuchTagException;
import org.apache.gravitino.listener.api.event.AssociateTagsForMetadataObjectEvent;
import org.apache.gravitino.listener.api.event.CreateTagEvent;
import org.apache.gravitino.listener.api.event.DeleteTagEvent;
import org.apache.gravitino.listener.api.event.GetTagEvent;
import org.apache.gravitino.listener.api.event.GetTagForMetadataObjectEvent;
import org.apache.gravitino.listener.api.event.ListMetadataObjectsForTagEvent;
import org.apache.gravitino.listener.api.event.ListTagEvent;
import org.apache.gravitino.listener.api.event.ListTagInfoEvent;
import org.apache.gravitino.listener.api.event.AlterTagEvent;
import org.apache.gravitino.listener.api.event.ListTagsForMetadataObjectEvent;
import org.apache.gravitino.listener.api.event.ListTagsInfoForMetadataObjectEvent;
import org.apache.gravitino.listener.api.info.TagInfo;
import org.apache.gravitino.tag.Tag;
import org.apache.gravitino.tag.TagChange;
Expand All @@ -36,151 +46,156 @@
* of tag operations.
*/
public class TagEventDispatcher implements TagDispatcher {
@SuppressWarnings("unused")
private final EventBus eventBus;

@SuppressWarnings("unused")
private final TagDispatcher dispatcher;
private final EventBus eventBus;
private final TagDispatcher dispatcher;

public TagEventDispatcher(EventBus eventBus, TagDispatcher dispatcher) {
this.eventBus = eventBus;
this.dispatcher = dispatcher;
}
public TagEventDispatcher(EventBus eventBus, TagDispatcher dispatcher) {
this.eventBus = eventBus;
this.dispatcher = dispatcher;
}

@Override
public String[] listTags(String metalake) {
// TODO: listTagsPreEvent
try {
String[] tags = dispatcher.listTags(metalake);
eventBus.dispatchEvent(new ListTagEvent(PrincipalUtils.getCurrentUserName(), metalake));
return tags;
} catch (Exception e) {
// TODO: listTagFailureEvent
throw e;
@Override
public String[] listTags(String metalake) {
// TODO: listTagsPreEvent
try {
String[] tagNames = dispatcher.listTags(metalake);
eventBus.dispatchEvent(new ListTagEvent(PrincipalUtils.getCurrentUserName(), metalake));
return tagNames;
} catch (Exception e) {
// TODO: listTagFailureEvent
throw e;
}
}
}

@Override
public Tag[] listTagsInfo(String metalake) {
// TODO: listTagsInfoPreEvent
try {
// TODO: listTagsInfoEvent
return dispatcher.listTagsInfo(metalake);
} catch (Exception e) {
// TODO: listTagsInfoFailureEvent
throw e;
@Override
public Tag[] listTagsInfo(String metalake) {
// TODO: listTagsInfoPreEvent
try {
Tag[] tags = dispatcher.listTagsInfo(metalake);
eventBus.dispatchEvent(new ListTagInfoEvent(PrincipalUtils.getCurrentUserName(), metalake, tags));
return tags;
} catch (Exception e) {
// TODO: listTagsInfoFailureEvent
throw e;
}
}
}

@Override
public Tag getTag(String metalake, String name) throws NoSuchTagException {
// TODO: getTagPreEvent
try {
// TODO: getTagEvent
return dispatcher.getTag(metalake, name);
} catch (NoSuchTagException e) {
// TODO: getTagFailureEvent
throw e;
@Override
public Tag getTag(String metalake, String name) throws NoSuchTagException {
// TODO: getTagPreEvent
try {
// TODO: getTagEvent
Tag tag = dispatcher.getTag(metalake, name);
eventBus.dispatchEvent(new GetTagEvent(PrincipalUtils.getCurrentUserName(), metalake, name, tag));
return tag;
} catch (NoSuchTagException e) {
// TODO: getTagFailureEvent
throw e;
}
}
}

@Override
public Tag createTag(
String metalake, String name, String comment, Map<String, String> properties) {
// TODO: createTagPreEvent
try {
Tag tag = dispatcher.createTag(metalake, name, comment, properties);
eventBus.dispatchEvent(new CreateTagEvent(PrincipalUtils.getCurrentUserName(), metalake, new TagInfo(tag.name(), tag.comment(), tag.properties())));
return tag;
} catch (Exception e) {
// TODO: createTagFailureEvent
throw e;
@Override
public Tag createTag(String metalake, String name, String comment, Map<String, String> properties) {
// TODO: createTagPreEvent
try {
Tag tag = dispatcher.createTag(metalake, name, comment, properties);
eventBus.dispatchEvent(new CreateTagEvent(PrincipalUtils.getCurrentUserName(), metalake, new TagInfo(tag.name(), tag.comment(), tag.properties())));
return tag;
} catch (Exception e) {
// TODO: createTagFailureEvent
throw e;
}
}
}

@Override
public Tag alterTag(String metalake, String name, TagChange... changes) {
// TODO: alterTagPreEvent
try {
// TODO: alterTagEvent
return dispatcher.alterTag(metalake, name, changes);
} catch (Exception e) {
// TODO: alterTagFailureEvent
throw e;
@Override
public Tag alterTag(String metalake, String name, TagChange... changes) {
// TODO: alterTagPreEvent
try {
Tag tag = dispatcher.alterTag(metalake, name, changes);
eventBus.dispatchEvent(new AlterTagEvent(PrincipalUtils.getCurrentUserName(), metalake, changes, new TagInfo(tag.name(), tag.comment(), tag.properties())));
return tag;
} catch (Exception e) {
// TODO: alterTagFailureEvent
throw e;
}
}
}

@Override
public boolean deleteTag(String metalake, String name) {
// TODO: deleteTagPreEvent
try {
// TODO: deleteTagEvent
return dispatcher.deleteTag(metalake, name);
} catch (Exception e) {
// TODO: deleteTagFailureEvent
throw e;
@Override
public boolean deleteTag(String metalake, String name) {
// TODO: deleteTagPreEvent
try {
boolean isExists = dispatcher.deleteTag(metalake, name);
eventBus.dispatchEvent(new DeleteTagEvent(PrincipalUtils.getCurrentUserName(), metalake, isExists));
return isExists;
} catch (Exception e) {
// TODO: deleteTagFailureEvent
throw e;
}
}
}

@Override
public MetadataObject[] listMetadataObjectsForTag(String metalake, String name) {
// TODO: listMetadataObjectsForTagPreEvent
try {
// TODO: listMetadataObjectsForTagEvent
return dispatcher.listMetadataObjectsForTag(metalake, name);
} catch (Exception e) {
// TODO: listMetadataObjectsForTagFailureEvent
throw e;
@Override
public MetadataObject[] listMetadataObjectsForTag(String metalake, String name) {
// TODO: listMetadataObjectsForTagPreEvent
try {
// TODO: listMetadataObjectsForTagEvent
MetadataObject[] metadataObjects = dispatcher.listMetadataObjectsForTag(metalake, name);
eventBus.dispatchEvent(new ListMetadataObjectsForTagEvent(PrincipalUtils.getCurrentUserName(), metalake, name, metadataObjects));
return metadataObjects;
} catch (Exception e) {
// TODO: listMetadataObjectsForTagFailureEvent
throw e;
}
}
}

@Override
public String[] listTagsForMetadataObject(String metalake, MetadataObject metadataObject) {
// TODO: listTagsForMetadataObjectPreEvent
try {
// TODO: listTagsForMetadataObjectEvent
return dispatcher.listTagsForMetadataObject(metalake, metadataObject);
} catch (Exception e) {
// TODO: listTagsForMetadataObjectFailureEvent
throw e;
@Override
public String[] listTagsForMetadataObject(String metalake, MetadataObject metadataObject) {
// TODO: listTagsForMetadataObjectPreEvent
try {
String[] tags = dispatcher.listTagsForMetadataObject(metalake, metadataObject);
eventBus.dispatchEvent(new ListTagsForMetadataObjectEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, tags));
return tags;
} catch (Exception e) {
// TODO: listTagsForMetadataObjectFailureEvent
throw e;
}
}
}

@Override
public Tag[] listTagsInfoForMetadataObject(String metalake, MetadataObject metadataObject) {
// TODO: listTagsInfoForMetadataObjectPreEvent
try {
// TODO: listTagsInfoForMetadataObjectEvent
return dispatcher.listTagsInfoForMetadataObject(metalake, metadataObject);
} catch (Exception e) {
// TODO: listTagsInfoForMetadataObjectFailureEvent
throw e;
@Override
public Tag[] listTagsInfoForMetadataObject(String metalake, MetadataObject metadataObject) {
// TODO: listTagsInfoForMetadataObjectPreEvent
try {
Tag[] tags = dispatcher.listTagsInfoForMetadataObject(metalake, metadataObject);
eventBus.dispatchEvent(new ListTagsInfoForMetadataObjectEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, tags));
return tags;
} catch (Exception e) {
// TODO: listTagsInfoForMetadataObjectFailureEvent
throw e;
}
}
}

@Override
public String[] associateTagsForMetadataObject(
String metalake, MetadataObject metadataObject, String[] tagsToAdd, String[] tagsToRemove) {
// TODO: associateTagsForMetadataObjectPreEvent
try {
// TODO: associateTagsForMetadataObjectEvent
return dispatcher.associateTagsForMetadataObject(
metalake, metadataObject, tagsToAdd, tagsToRemove);
} catch (Exception e) {
// TODO: associateTagsForMetadataObjectFailureEvent
throw e;
@Override
public String[] associateTagsForMetadataObject(String metalake, MetadataObject metadataObject, String[] tagsToAdd, String[] tagsToRemove) {
// TODO: associateTagsForMetadataObjectPreEvent
try {
String[] associatedTags = dispatcher.associateTagsForMetadataObject(metalake, metadataObject, tagsToAdd, tagsToRemove);
eventBus.dispatchEvent(new AssociateTagsForMetadataObjectEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, tagsToAdd, tagsToRemove, associatedTags));
return associatedTags;
} catch (Exception e) {
// TODO: associateTagsForMetadataObjectFailureEvent
throw e;
}
}
}

@Override
public Tag getTagForMetadataObject(String metalake, MetadataObject metadataObject, String name) {
// TODO: getTagForMetadataObjectPreEvent
try {
// TODO: getTagForMetadataObjectEvent
return dispatcher.getTagForMetadataObject(metalake, metadataObject, name);
} catch (Exception e) {
// TODO: getTagForMetadataObjectFailureEvent
throw e;
@Override
public Tag getTagForMetadataObject(String metalake, MetadataObject metadataObject, String name) {
// TODO: getTagForMetadataObjectPreEvent
try {
Tag tag = dispatcher.getTagForMetadataObject(metalake, metadataObject, name);
eventBus.dispatchEvent(new GetTagForMetadataObjectEvent(PrincipalUtils.getCurrentUserName(), metalake, metadataObject, name, tag));
return tag;
} catch (Exception e) {
// TODO: getTagForMetadataObjectFailureEvent
throw e;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,17 @@ public final class AlterTagEvent extends TagEvent {
* successful alteration of a tag.
*
* @param user The username of the individual responsible for initiating the tag alteration.
* @param identifier The unique identifier of the altered tag, serving as a clear reference
* point for the tag in question.
* @param metalake The metalake from which the tag is being altered.
* @param tagChanges An array of {@link TagChange} objects representing the specific
* changes applied to the tag during the alteration process.
* @param updatedTagInfo The post-alteration state of the tag.
*/
public AlterTagEvent(
String user,
NameIdentifier identifier,
String metalake,
TagChange[] tagChanges,
TagInfo updatedTagInfo) {
super(user, identifier);
super(user, NameIdentifier.of(metalake));
this.tagChanges = tagChanges.clone();
this.updatedTagInfo = updatedTagInfo;
}
Expand Down
Loading

0 comments on commit 7e33214

Please sign in to comment.