You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2024/10/08 15:25:27 UTC

(jackrabbit-oak) 01/01: OAK-11175: rdbmk: use StandardCharsets.UTF_8 where applicable

This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch OAK-11175
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit c6a54523976be9246248690945a1522e63f6fa10
Author: Julian Reschke <re...@apache.org>
AuthorDate: Tue Oct 8 16:25:07 2024 +0100

    OAK-11175: rdbmk: use StandardCharsets.UTF_8 where applicable
---
 .../document/rdb/RDBDocumentSerializer.java        |  5 ++--
 .../oak/plugins/document/rdb/RDBDocumentStore.java | 10 ++------
 .../plugins/document/rdb/RDBDocumentStoreJDBC.java | 13 +++-------
 .../oak/plugins/document/rdb/RDBExport.java        | 10 +++-----
 .../oak/plugins/document/rdb/RDBJDBCTools.java     |  2 +-
 .../document/rdb/RDBDocumentSerializerTest.java    | 30 +++++++++++-----------
 .../document/rdb/RDBDocumentStoreJDBCTest.java     | 15 +++--------
 .../rdb/RDBDocumentStorePerformanceTest.java       | 24 +++++++----------
 8 files changed, 41 insertions(+), 68 deletions(-)

diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
index 8e02efc579..12c35b8fc2 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJSONSupport.appe
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -344,10 +345,10 @@ public class RDBDocumentSerializer {
             if (bdata.length >= 2 && bdata[0] == GZIPSIG[0] && bdata[1] == GZIPSIG[1]) {
                 // GZIP
                 try (GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bdata), 65536)) {
-                    return IOUtils.toString(gis, "UTF-8");
+                    return IOUtils.toString(gis, StandardCharsets.UTF_8);
                 }
             } else {
-                return IOUtils.toString(bdata, "UTF-8");
+                return new String(bdata, StandardCharsets.UTF_8);
             }
         } catch (IOException ex) {
             LOG.debug("Unexpected exception while processing blob data", ex);
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
index 842f265312..c95e42d65c 100755
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
@@ -30,7 +30,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
@@ -2224,13 +2224,7 @@ public class RDBDocumentStore implements DocumentStore {
             }).get();
 
     public static byte[] asBytes(@NotNull String data) {
-        byte[] bytes;
-        try {
-            bytes = data.getBytes("UTF-8");
-        } catch (UnsupportedEncodingException ex) {
-            LOG.error("UTF-8 not supported??", ex);
-            throw asDocumentStoreException(ex, "UTF-8 not supported??");
-        }
+        byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
 
         if (NOGZIP) {
             return bytes;
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
index cb706c3f87..8784840e2b 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
@@ -25,7 +25,7 @@ import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeS
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.sql.BatchUpdateException;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -84,7 +84,7 @@ public class RDBDocumentStoreJDBC {
     private final int queryHitsLimit, queryTimeLimit;
 
     private static final Long INITIALMODCOUNT = Long.valueOf(1);
-    
+
     public RDBDocumentStoreJDBC(RDBDocumentStoreDB dbInfo, RDBDocumentSerializer ser, int queryHitsLimit, int queryTimeLimit) {
         this.dbInfo = dbInfo;
         this.ser = ser;
@@ -1056,12 +1056,7 @@ public class RDBDocumentStoreJDBC {
 
     private static String getIdFromRS(RDBTableMetaData tmd, ResultSet rs, int idx) throws SQLException {
         if (tmd.isIdBinary()) {
-            try {
-                return new String(rs.getBytes(idx), "UTF-8");
-            } catch (UnsupportedEncodingException ex) {
-                LOG.error("UTF-8 not supported", ex);
-                throw asDocumentStoreException(ex, "UTF-8 not supported");
-            }
+            return new String(rs.getBytes(idx), StandardCharsets.UTF_8);
         } else {
             return rs.getString(idx);
         }
@@ -1073,7 +1068,7 @@ public class RDBDocumentStoreJDBC {
                 stmt.setBytes(idx, UTF8Encoder.encodeAsByteArray(id));
             } else {
                 if (!UTF8Encoder.canEncode(id)) {
-                    throw new IOException("can not encode as UTF-8");
+                    throw new IOException("can not encode as valid UTF-8");
                 }
                 stmt.setString(idx, id);
             }
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
index 00e2e5160e..329311a201 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java
@@ -25,7 +25,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.PrintStream;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
@@ -60,8 +60,6 @@ import static org.apache.jackrabbit.oak.plugins.document.util.Utils.getModuleVer
  */
 public class RDBExport {
 
-    private static final Charset UTF8 = Charset.forName("UTF-8");
-
     private enum Format {
         JSON, JSONARRAY, CSV
     };
@@ -98,7 +96,7 @@ public class RDBExport {
                     query = args[++i];
                 } else if ("-o".equals(param) || "--out".equals(param)) {
                     OutputStream os = new FileOutputStream(args[++i]);
-                    out = new PrintStream(os, true, "UTF-8");
+                    out = new PrintStream(os, true, StandardCharsets.UTF_8);
                 } else if ("--from-db2-dump".equals(param)) {
                     dumpfile = args[++i];
                 } else if ("--lobdir".equals(param)) {
@@ -180,7 +178,7 @@ public class RDBExport {
         }
 
         FileInputStream fis = new FileInputStream(f);
-        InputStreamReader ir = new InputStreamReader(fis, UTF8);
+        InputStreamReader ir = new InputStreamReader(fis, StandardCharsets.UTF_8);
         BufferedReader br = new BufferedReader(ir);
 
         if (format == Format.JSONARRAY) {
@@ -326,7 +324,7 @@ public class RDBExport {
                 rsm = rs.getMetaData();
                 idIsAscii = !isBinaryType(rsm.getColumnType(1));
             }
-            String id = idIsAscii ? rs.getString("ID") : new String(rs.getBytes("ID"), UTF8);
+            String id = idIsAscii ? rs.getString("ID") : new String(rs.getBytes("ID"), StandardCharsets.UTF_8);
             long modified = rs.getLong("MODIFIED");
             long modcount = rs.getLong("MODCOUNT");
             long cmodcount = rs.getLong("CMODCOUNT");
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
index 7310aa8823..6135fb84c3 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
@@ -412,7 +412,7 @@ public class RDBJDBCTools {
                             stmt.setBytes(startIndex++, UTF8Encoder.encodeAsByteArray(value));
                         } else {
                             if (!UTF8Encoder.canEncode(value)) {
-                                throw new IOException("can not encode as UTF-8");
+                                throw new IOException("can not encode as valid UTF-8");
                             }
                             stmt.setString(startIndex++, value);
                         }
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
index 49eaef5213..51cca4afd9 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializerTest.java
@@ -25,7 +25,7 @@ import static org.junit.Assert.fail;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Map;
 import java.util.zip.GZIPOutputStream;
@@ -79,8 +79,8 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testSimpleBlob() throws UnsupportedEncodingException {
-        RDBRow row = new RDBRow("_foo", 0L, false, 1l, 2l, 3l, 0L, 0L, 0L, "\"blob\"", "{}".getBytes("UTF-8"));
+    public void testSimpleBlob() {
+        RDBRow row = new RDBRow("_foo", 0L, false, 1l, 2l, 3l, 0L, 0L, 0L, "\"blob\"", "{}".getBytes(StandardCharsets.UTF_8));
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertEquals("_foo", doc.getId());
         assertEquals(false, doc.hasBinary());
@@ -91,7 +91,7 @@ public class RDBDocumentSerializerTest {
     public void testSimpleBlobGzipped() throws IOException {
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         GZIPOutputStream gos = new GZIPOutputStream(bos);
-        gos.write("{}".getBytes("UTF-8"));
+        gos.write("{}".getBytes(StandardCharsets.UTF_8));
         gos.close();
         RDBRow row = new RDBRow("_foo", 0L, false, 1l, 2l, 3l, 0L, 0L, 0L, "\"blob\"", bos.toByteArray());
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
@@ -101,9 +101,9 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testSimpleBlob2() throws UnsupportedEncodingException {
+    public void testSimpleBlob2() {
         RDBRow row = new RDBRow("_foo", 0L, false, 1l, 2l, 3l, 0L, 0L, 0L, "\"blob\"",
-                "{\"s\":\"string\", \"b\":true, \"i\":1}".getBytes("UTF-8"));
+                "{\"s\":\"string\", \"b\":true, \"i\":1}".getBytes(StandardCharsets.UTF_8));
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertEquals("_foo", doc.getId());
         assertEquals(false, doc.hasBinary());
@@ -114,9 +114,9 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testSimpleBoth() throws UnsupportedEncodingException {
+    public void testSimpleBoth() {
         try {
-            RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "{}", "{}".getBytes("UTF-8"));
+            RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "{}", "{}".getBytes(StandardCharsets.UTF_8));
             this.ser.fromRow(Collection.NODES, row);
             fail("should fail");
         } catch (DocumentStoreException expected) {
@@ -124,10 +124,10 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testBlobAndDiff() throws UnsupportedEncodingException {
+    public void testBlobAndDiff() {
         RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L,
                 "\"blob\", [[\"=\", \"foo\", \"bar\"],[\"M\", \"m1\", 1],[\"M\", \"m2\", 3]]",
-                "{\"m1\":2, \"m2\":2}".getBytes("UTF-8"));
+                "{\"m1\":2, \"m2\":2}".getBytes(StandardCharsets.UTF_8));
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertEquals("bar", doc.get("foo"));
         assertEquals(2L, doc.get("m1"));
@@ -135,9 +135,9 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testBlobAndDiffBorked() throws UnsupportedEncodingException {
+    public void testBlobAndDiffBorked() {
         try {
-            RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "[[\"\", \"\", \"\"]]", "{}".getBytes("UTF-8"));
+            RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "[[\"\", \"\", \"\"]]", "{}".getBytes(StandardCharsets.UTF_8));
             this.ser.fromRow(Collection.NODES, row);
             fail("should fail");
         } catch (DocumentStoreException expected) {
@@ -145,14 +145,14 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testNullModified() throws UnsupportedEncodingException {
+    public void testNullModified() {
         RDBRow row = new RDBRow("_foo", 1L, true, null, 2l, 3l, 0L, 0L, 0L, "{}", null);
         NodeDocument doc = this.ser.fromRow(Collection.NODES, row);
         assertNull(doc.getModified());
     }
 
     @Test
-    public void testBrokenJSONTrailingComma() throws UnsupportedEncodingException {
+    public void testBrokenJSONTrailingComma() {
         try {
             RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "{ \"x\" : 1, }", null);
             this.ser.fromRow(Collection.NODES, row);
@@ -162,7 +162,7 @@ public class RDBDocumentSerializerTest {
     }
 
     @Test
-    public void testBrokenJSONUnquotedIdentifier() throws UnsupportedEncodingException {
+    public void testBrokenJSONUnquotedIdentifier() {
         try {
             RDBRow row = new RDBRow("_foo", 1L, false, 1l, 2l, 3l, 0L, 0L, 0L, "{ x : 1, }", null);
             this.ser.fromRow(Collection.NODES, row);
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
index 8fc4b08264..985bd763ff 100755
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBCTest.java
@@ -25,9 +25,9 @@ import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
 import java.io.Closeable;
-import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.nio.charset.StandardCharsets;
 import java.sql.BatchUpdateException;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -47,7 +47,6 @@ import javax.sql.DataSource;
 import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
 import org.apache.jackrabbit.oak.plugins.document.AbstractDocumentStoreTest;
 import org.apache.jackrabbit.oak.plugins.document.Collection;
-import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreFixture;
 import org.apache.jackrabbit.oak.plugins.document.NodeDocument;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp;
@@ -483,11 +482,7 @@ public class RDBDocumentStoreJDBCTest extends AbstractDocumentStoreTest {
     private void setIdInStatement(PreparedStatement stmt, int idx, String id) throws SQLException {
         boolean binaryId = ((RDBDocumentStore) super.ds).getTable(Collection.NODES).isIdBinary();
         if (binaryId) {
-            try {
-                stmt.setBytes(idx, id.getBytes("UTF-8"));
-            } catch (UnsupportedEncodingException ex) {
-                throw new DocumentStoreException(ex);
-            }
+            stmt.setBytes(idx, id.getBytes(StandardCharsets.UTF_8));
         } else {
             stmt.setString(idx, id);
         }
@@ -496,11 +491,7 @@ public class RDBDocumentStoreJDBCTest extends AbstractDocumentStoreTest {
     private String getIdFromRS(ResultSet rs, int idx) throws SQLException {
         boolean binaryId = ((RDBDocumentStore) super.ds).getTable(Collection.NODES).isIdBinary();
         if (binaryId) {
-            try {
-                return new String(rs.getBytes(idx), "UTF-8");
-            } catch (UnsupportedEncodingException ex) {
-                throw new DocumentStoreException(ex);
-            }
+            return new String(rs.getBytes(idx), StandardCharsets.UTF_8);
         } else {
             return rs.getString(idx);
         }
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
index 555c6c5749..70b575a84a 100755
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStorePerformanceTest.java
@@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
 
-import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -29,7 +29,6 @@ import java.sql.Types;
 import java.util.UUID;
 
 import org.apache.jackrabbit.oak.plugins.document.AbstractDocumentStoreTest;
-import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreFixture;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -55,31 +54,31 @@ public class RDBDocumentStorePerformanceTest extends AbstractDocumentStoreTest {
     }
 
     @Test
-    public void testPerfUpdateLimit() throws SQLException, UnsupportedEncodingException {
+    public void testPerfUpdateLimit() throws SQLException {
         internalTestPerfUpdateLimit("testPerfUpdateLimit", "raw row update (set long)", 0);
     }
 
     @Test
-    public void testPerfUpdateLimitString() throws SQLException, UnsupportedEncodingException {
+    public void testPerfUpdateLimitString() throws SQLException {
         internalTestPerfUpdateLimit("testPerfUpdateLimitString", "raw row update (set long/string)", 1);
     }
 
     @Test
-    public void testPerfUpdateLimitStringBlob() throws SQLException, UnsupportedEncodingException {
+    public void testPerfUpdateLimitStringBlob() throws SQLException {
         internalTestPerfUpdateLimit("testPerfUpdateLimitStringBlob", "raw row update (set long/string/blob)", 2);
     }
 
     @Test
-    public void testPerfUpdateAppendString() throws SQLException, UnsupportedEncodingException {
+    public void testPerfUpdateAppendString() throws SQLException {
         internalTestPerfUpdateLimit("testPerfUpdateAppendString", "raw row update (append string)", 3);
     }
 
     @Test
-    public void testPerfUpdateGrowingDoc() throws SQLException, UnsupportedEncodingException {
+    public void testPerfUpdateGrowingDoc() throws SQLException {
         internalTestPerfUpdateLimit("testPerfUpdateGrowingDoc", "raw row update (string + blob)", 4);
     }
 
-    private void internalTestPerfUpdateLimit(String name, String desc, int mode) throws SQLException, UnsupportedEncodingException {
+    private void internalTestPerfUpdateLimit(String name, String desc, int mode) throws SQLException {
         String key = name;
         Connection connection = null;
         String table = DocumentStoreFixture.TABLEPREFIX + "NODES";
@@ -227,7 +226,7 @@ public class RDBDocumentStorePerformanceTest extends AbstractDocumentStoreTest {
                             stmt.setBinaryStream(si++, null, 0);
                         } else {
                             stmt.setString(si++, "null");
-                            stmt.setBytes(si++, sdata.getBytes("UTF-8"));
+                            stmt.setBytes(si++, sdata.getBytes(StandardCharsets.UTF_8));
                         }
                         setIdInStatement(stmt, si++, key);
                         assertEquals(1, stmt.executeUpdate());
@@ -278,12 +277,7 @@ public class RDBDocumentStorePerformanceTest extends AbstractDocumentStoreTest {
     private void setIdInStatement(PreparedStatement stmt, int idx, String id) throws SQLException {
         boolean binaryId = super.dsname.contains("MySQL") || super.dsname.contains("MSSql");
         if (binaryId) {
-            try {
-                stmt.setBytes(idx, id.getBytes("UTF-8"));
-            } catch (UnsupportedEncodingException ex) {
-                LOG.error("UTF-8 not supported??", ex);
-                throw new DocumentStoreException(ex);
-            }
+            stmt.setBytes(idx, id.getBytes(StandardCharsets.UTF_8));
         } else {
             stmt.setString(idx, id);
         }