public void sendEvent(MCREvent evt, Path path, BasicFileAttributes attrs) {
if (!(path instanceof MCRPath) || !(attrs instanceof MCRFileAttributes)) {
LogManager.getLogger().warn("Cannot handle {} {}", path.getClass(), attrs.getClass());
return;
}
JsonObject file = new JsonObject();
addUserInfo(file);
String derId = ((MCRPath) path).getOwner();
String fPath = ((MCRPath) path).getOwnerRelativePath();
String objId = MCRMetadataManager.getObjectId(MCRObjectID.getInstance(derId), 1, TimeUnit.MINUTES)
.toString();
String relPath = String.format(Locale.ROOT, "objects/%s/derivates/%s/contents/%s", objId, derId, fPath);
String uri = uriResolver.apply(getPathURI(relPath)).toString();
file.addProperty("uri", uri);
file.addProperty("derivate", derId);
file.addProperty("object", objId);
file.addProperty("size", attrs.size());
file.addProperty("modified", attrs.lastModifiedTime().toInstant().toString());
file.addProperty("md5", ((MCRFileAttributes) attrs).md5sum());
file.addProperty("mimeType", context.getMimeType(path.getFileName().toString()));
OutboundSseEvent event = sse.newEventBuilder()
.mediaType(MediaType.APPLICATION_JSON_TYPE)
.id(getId(evt))
.name(getName(evt))
.data(file.toString())
.build();
sseBroadcaster.broadcast(event);
}