- URL classUrl = annotatedClass.getResource(annotatedClass.getSimpleName() + ".class");
- File classFile = new File(classUrl.toURI());
- long lastModified = classFile.lastModified();
- long timestamp = !timestamps.containsKey(name) ? 0 : timestamps.get(name);
- if (lastModified > timestamp)
+ InputStream is =
+ annotatedClass
+ .getResourceAsStream(annotatedClass.getSimpleName() + ".class");
+ byte[] buffer = new byte[1024*4]; // copy data in 4MB-chunks
+ int i;
+ while((i = is.read(buffer)) > -1)
+ digest.update(buffer, 0, i);
+ is.close();
+ byte[] bytes = digest.digest();
+ BigInteger bi = new BigInteger(1, bytes);
+ String newMd5 = String.format("%0" + (bytes.length << 1) + "x", bi);
+ String oldMd5 = !md5s.containsKey(name) ? "" : md5s.get(name);
+ if (!newMd5.equals(oldMd5))