1 package org.collectionspace.services.aspect;
3 import org.aspectj.lang.ProceedingJoinPoint;
4 import org.aspectj.lang.annotation.Around;
5 import org.aspectj.lang.annotation.Aspect;
6 import org.aspectj.lang.annotation.Pointcut;
8 import org.collectionspace.services.client.Profiler;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
14 public class BlobProfileAspect {
15 private static final Logger logger = LoggerFactory.getLogger(BlobProfileAspect.class);
16 private static int indent = 0;
18 private int pushIndent() {
22 private int popIndent() {
27 @Around("blobResourceCreateMethods()")
28 public Object profile(ProceedingJoinPoint pjp) throws Throwable {
32 Profiler profiler = new Profiler(pjp.getSignature().toShortString(), pushIndent());
36 Object[] args = pjp.getArgs(); // gets us a read-only copy of the argument(s)
37 result = pjp.proceed(); // finish the call
49 * Setup a pointcut for all the Blob methods related to creating a new blob
51 @Pointcut("execution(* org.nuxeo.ecm.platform.filemanager.service.extension.AbstractFileImporter.create(..))")
52 public void nuxeoImagePluginCutPoint() {}
54 @Pointcut("execution(* org.collectionspace.services.common.imaging.nuxeo.NuxeoBlobUtils.createDocumentFromBlob(..))")
55 public void createDocumentFromBlobCutPoint() {}
57 @Pointcut("execution(* org.collectionspace.services.blob.BlobResource.create(..))")
58 public void blobResourceCreateCutPoint() {}
60 @Pointcut("execution(* org.collectionspace.services.blob.BlobResource.createBlob(..))")
61 public void blobResourceCreatBlobCutPoint() {}
63 @Pointcut("execution(void org.collectionspace.services.common.blob.BlobInput.createBlobFile(..))")
64 public void blobUtilCreatBlobFile() {}
66 @Pointcut("createDocumentFromBlobCutPoint()"
67 + " || blobResourceCreateCutPoint()"
68 + " || blobResourceCreatBlobCutPoint()"
69 + " || blobUtilCreatBlobFile()"
70 + " || nuxeoImagePluginCutPoint()")
71 public void blobResourceCreateMethods() {}