1 package org.collectionspace.services.nuxeo.extension.thumbnail;
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
6 import org.collectionspace.services.nuxeo.listener.AbstractCSEventSyncListenerImpl;
7 import org.collectionspace.services.nuxeo.util.ThumbnailConstants;
9 import org.nuxeo.ecm.core.api.Blob;
10 import org.nuxeo.ecm.core.api.ClientException;
11 import org.nuxeo.ecm.core.api.DocumentModel;
12 import org.nuxeo.ecm.core.api.blobholder.BlobHolder;
13 import org.nuxeo.ecm.core.api.event.DocumentEventTypes;
14 import org.nuxeo.ecm.core.event.Event;
15 import org.nuxeo.ecm.core.event.EventContext;
16 import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
18 public class UpdateThumbListener extends AbstractCSEventSyncListenerImpl {
19 final Log logger = LogFactory.getLog(UpdateThumbListener.class);
22 public boolean shouldHandleEvent(Event event) {
23 EventContext ec = event.getContext();
25 return ec instanceof DocumentEventContext;
28 public void handleCSEvent(Event event) throws ClientException {
29 EventContext ec = event.getContext();
30 if (ec instanceof DocumentEventContext) {
31 DocumentEventContext context = (DocumentEventContext) ec;
32 DocumentModel doc = context.getSourceDocument();
33 if (doc.isDirty() || DocumentEventTypes.DOCUMENT_CREATED.equals(event.getName())) {
34 BlobHolder blobHolder = doc.getAdapter(BlobHolder.class);
35 if (blobHolder != null) {
36 Blob blob = blobHolder.getBlob();
39 AddThumbnailUnrestricted runner = new AddThumbnailUnrestricted(
40 context.getCoreSession(), doc, blobHolder);
41 runner.runUnrestricted();
43 } catch (Exception e) {
44 throw new RuntimeException(e);
48 // No Blob anymore, remove the facet
49 if (doc.hasFacet(ThumbnailConstants.THUMBNAIL_FACET)) {
50 doc.removeFacet(ThumbnailConstants.THUMBNAIL_FACET);
51 context.getCoreSession().saveDocument(doc);
58 public Log getLogger() {