package test.make; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.security.MessageDigest; import java.util.Map; import aQute.bnd.osgi.AbstractResource; import aQute.bnd.osgi.Builder; import aQute.bnd.osgi.Resource; import aQute.bnd.service.MakePlugin; import aQute.lib.io.IOConstants; public class MD5 implements MakePlugin { static final int BUFFER_SIZE = IOConstants.PAGE_SIZE * 1; @Override public Resource make(Builder builder, String source, Map<String,String> arguments) throws Exception { if (!arguments.get("type").equals("md5")) return null; source = source.substring(0, source.length() - 4); final File f = builder.getFile(source); if (f.isFile()) { return new AbstractResource(f.lastModified()) { @Override public byte[] getBytes() throws Exception { return md5(f); } }; } throw new FileNotFoundException("No such file: " + source); } static byte[] md5(File f) throws Exception { MessageDigest md5 = MessageDigest.getInstance("MD5"); InputStream in = new FileInputStream(f); try { byte[] b = new byte[BUFFER_SIZE]; int size; while ((size = in.read()) > 0) { md5.update(b, 0, size); } return md5.digest(); } finally { in.close(); } } }