BaseMigration.java

package db;

import org.apache.cxf.helpers.IOUtils;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import java.nio.charset.StandardCharsets;
import java.util.zip.CRC32;
import java.util.zip.Checksum;

public abstract class BaseMigration extends BaseJavaMigration {

    public long checksum(Class class_) throws Exception {
        Checksum crc32 = new CRC32();
        byte[] bytes = readClass(class_);
        crc32.update(bytes, 0, bytes.length);
        return crc32.getValue();
    }

    public static byte[] readClass(Class classInstance) throws Exception {
        String name = classInstance.getName();
        name = name.replaceAll("[.]", "/") + ".class";
        Resource resource = new ClassPathResource(name);
        String text = IOUtils.toString(resource.getInputStream(), StandardCharsets.UTF_8.name());
        return text.getBytes(StandardCharsets.UTF_8);
    }
}