From 8d85000970df57434d1b1a9b5bb6dbe89dba15dc Mon Sep 17 00:00:00 2001 From: "FOCONIS\\szemenyei" Date: Mon, 10 Jan 2022 15:55:58 +0100 Subject: [PATCH] Fix Checksum calculate() with special characters (cherry picked from commit e9efd5a70222f372a38d5bcac4254de3759010b9) --- .../src/main/java/io/ebeaninternal/dbmigration/MChecksum.java | 4 ++-- .../test/java/io/ebeaninternal/dbmigration/MChecksumTest.java | 4 ++-- .../resources/dbmigration/index-special-chars/1.0__hello.sql | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 ebean-ddl-generator/src/test/resources/dbmigration/index-special-chars/1.0__hello.sql diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/MChecksum.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/MChecksum.java index 9c533992e..bd63afe0b 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/MChecksum.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/MChecksum.java @@ -1,6 +1,7 @@ package io.ebeaninternal.dbmigration; import java.io.*; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.zip.CRC32; @@ -13,9 +14,8 @@ class MChecksum { * Returns the checksum of the file. Agnostic of encoding and new line character. */ static int calculate(File file) { - try { + try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")))) { final CRC32 crc32 = new CRC32(); - BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); String line; while ((line = bufferedReader.readLine()) != null) { final byte[] lineBytes = line.getBytes(StandardCharsets.UTF_8); diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MChecksumTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MChecksumTest.java index 0f41e7ba0..65756f58f 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MChecksumTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MChecksumTest.java @@ -10,9 +10,9 @@ public class MChecksumTest { @Test public void calculate() { - File file = new File("src/test/resources/dbmigration/index/1.0__hello.sql"); + File file = new File("src/test/resources/dbmigration/index-special-chars/1.0__hello.sql"); assertThat(file).exists(); - assertThat(MChecksum.calculate(file)).isEqualTo(907060870); + assertThat(MChecksum.calculate(file)).isEqualTo(1859426839); } } diff --git a/ebean-ddl-generator/src/test/resources/dbmigration/index-special-chars/1.0__hello.sql b/ebean-ddl-generator/src/test/resources/dbmigration/index-special-chars/1.0__hello.sql new file mode 100644 index 000000000..6814e2a28 --- /dev/null +++ b/ebean-ddl-generator/src/test/resources/dbmigration/index-special-chars/1.0__hello.sql @@ -0,0 +1 @@ +helloäüü