package com.prancingdonkey.component;
import org.apache.commons.codec.digest.DigestUtils;
import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.lifecycle.Callable;
import org.mule.transport.file.FileConnector;
public class Md5FileHasher implements Callable
{
private String sourceFolder;
private String fileConnectorName;
public void setSourceFolder(final String sourceFolder)
{
this.sourceFolder = sourceFolder.replace('\\', '/');
}
public void setFileConnector(final FileConnector fileConnector)
{
this.fileConnectorName = fileConnector.getName();
}
public Object onCall(final MuleEventContext eventContext) throws Exception
{
final String fileName = eventContext.getMessageAsString();
final String endpointUri = "file://" + sourceFolder + "/" + fileName + "?connector="
+ fileConnectorName;
MuleMessage requestedFileMessage = eventContext.getMuleContext().getClient().request(endpointUri, 0L);
return requestedFileMessage != null
? DigestUtils.md5Hex(requestedFileMessage.getPayloadAsBytes())
: null;
}
}