PackagerProfiler.java
package esa.bscs.pds4.packager.aspect;
import org.apache.commons.lang3.time.StopWatch;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import esa.bscs.pds4.packager.aip.PackageInfo;
@Aspect
public class PackagerProfiler {
private static final Logger LOGGER = LoggerFactory.getLogger(PackagerProfiler.class);
@Around(value="execution(public * esa.bscs.pds4.packager.aip.AipBuilder.buildArchiveInformationProduct(..))")
public Object trackBuildArchiveInformationProductExecution(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
final StopWatch clock = StopWatch.createStarted();
// Call tracked method
final Object returnValue = proceedingJoinPoint.proceed();
// Stop clock
clock.stop();
// Log execution
final PackageInfo packageInfo = (PackageInfo) returnValue;
LOGGER.info("Archive Information Product (checksum manifest + transfer manifest + PDS4 label) build took {}", clock);
LOGGER.info("Transfer manifest references {} products and checksum manifest references {} files", packageInfo.getTransferInfo().getRecords(), packageInfo.getChecksumInfo().getRecords());
LOGGER.info("{}: \r\n{}", packageInfo.getTransferInfo().getFilename(), packageInfo.getTransferInfo().getContent());
LOGGER.info("{}: \r\n{}", packageInfo.getChecksumInfo().getFilename(), packageInfo.getChecksumInfo().getContent());
// Return
return returnValue;
}
}