mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-08 09:08:34 +00:00
parent
f3f45bc174
commit
2b0aeaf0eb
@ -84,28 +84,36 @@ public class ChangeEventHandler implements EventHandler {
|
||||
// Add a new thread to the entity for every change event
|
||||
// for the event to appear in activity feeds
|
||||
if (Entity.shouldDisplayEntityChangeOnFeed(changeEvent.getEntityType())) {
|
||||
for (var thread : listOrEmpty(getThreads(responseContext, loggedInUserName))) {
|
||||
// Don't create a thread if there is no message
|
||||
if (!thread.getMessage().isEmpty()) {
|
||||
EntityInterface entity;
|
||||
// In case of ENTITY_FIELDS_CHANGED entity from responseContext will be a ChangeEvent
|
||||
if (responseContext.getEntity() instanceof ChangeEvent) {
|
||||
ChangeEvent change = (ChangeEvent) responseContext.getEntity();
|
||||
entity = (EntityInterface) change.getEntity();
|
||||
} else {
|
||||
entity = (EntityInterface) responseContext.getEntity();
|
||||
// ignore usageSummary updates in the feed
|
||||
boolean shouldIgnore = false;
|
||||
if (Entity.TABLE.equals(changeEvent.getEntityType()) && changeEvent.getChangeDescription() != null) {
|
||||
List<FieldChange> fields = changeEvent.getChangeDescription().getFieldsUpdated();
|
||||
shouldIgnore = fields.stream().anyMatch(field -> field.getName().equals("usageSummary"));
|
||||
}
|
||||
if (!shouldIgnore) {
|
||||
for (var thread : listOrEmpty(getThreads(responseContext, loggedInUserName))) {
|
||||
// Don't create a thread if there is no message
|
||||
if (!thread.getMessage().isEmpty()) {
|
||||
EntityInterface entity;
|
||||
// In case of ENTITY_FIELDS_CHANGED entity from responseContext will be a ChangeEvent
|
||||
if (responseContext.getEntity() instanceof ChangeEvent) {
|
||||
ChangeEvent change = (ChangeEvent) responseContext.getEntity();
|
||||
entity = (EntityInterface) change.getEntity();
|
||||
} else {
|
||||
entity = (EntityInterface) responseContext.getEntity();
|
||||
}
|
||||
EntityReference entityReference = entity.getEntityReference();
|
||||
EntityReference owner;
|
||||
try {
|
||||
owner = Entity.getOwner(entityReference);
|
||||
} catch (Exception exception) {
|
||||
owner = null;
|
||||
}
|
||||
EntityLink about = EntityLink.parse(thread.getAbout());
|
||||
feedDao.create(thread, entity.getId(), owner, about);
|
||||
String jsonThread = mapper.writeValueAsString(thread);
|
||||
WebSocketManager.getInstance().broadCastMessageToAll(WebSocketManager.feedBroadcastChannel, jsonThread);
|
||||
}
|
||||
EntityReference entityReference = entity.getEntityReference();
|
||||
EntityReference owner;
|
||||
try {
|
||||
owner = Entity.getOwner(entityReference);
|
||||
} catch (Exception exception) {
|
||||
owner = null;
|
||||
}
|
||||
EntityLink about = EntityLink.parse(thread.getAbout());
|
||||
feedDao.create(thread, entity.getId(), owner, about);
|
||||
String jsonThread = mapper.writeValueAsString(thread);
|
||||
WebSocketManager.getInstance().broadCastMessageToAll(WebSocketManager.feedBroadcastChannel, jsonThread);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user