use of org.uberfire.ext.metadata.event.IndexEvent.NewlyIndexedEvent in project kie-wb-common by kiegroup.
the class LibraryAssetUpdateNotifier method notifyOnUpdatedAssets.
public void notifyOnUpdatedAssets(@Observes @Named(Constants.INDEXER_ID) BatchIndexEvent event) {
if (!isUpdateNotifierEnabled()) {
return;
}
// Assume that all indexed items are from the same project.
event.getIndexEvents().stream().flatMap(evt -> {
switch(evt.getKind()) {
case Deleted:
return Stream.of(((DeletedEvent) evt).getDeleted().getKey());
case NewlyIndexed:
return Stream.of(((NewlyIndexedEvent) evt).getKObject().getKey());
case Renamed:
return Stream.of(((RenamedEvent) evt).getTarget().getKey());
default:
return Stream.empty();
}
}).map(path -> org.uberfire.java.nio.file.Paths.get(path)).filter(path -> libraryIndexer.supportsPath(path)).flatMap(path -> {
try {
WorkspaceProject project = projectService.resolveProject(Paths.convert(path));
return (project == null) ? Stream.empty() : Stream.of(project);
} catch (Throwable t) {
return Stream.empty();
}
}).map(project -> new ProjectAssetListUpdated(project)).findFirst().ifPresent(clientEvent -> {
logger.info("Sending indexing notification for project [{}].", clientEvent.getProject().getRepository().getIdentifier());
assetListUpdateEvent.fire(clientEvent);
});
}
Aggregations