]> source.dussan.org Git - jgit.git/commitdiff
Replace custom encoder `Constants#encode` by JDK implementation 47/1203547/3
authorMatthias Sohn <matthias.sohn@sap.com>
Fri, 6 Sep 2024 10:26:44 +0000 (12:26 +0200)
committerLuca Milanesio <luca.milanesio@gmail.com>
Sat, 9 Nov 2024 23:19:45 +0000 (23:19 +0000)
Using the implementation provided in the JDK since Java 1.6 by
`String#getBytes(Charset)` reduces JGit maintenance effort and improves
performance.

The method Constants#encode was implemented when JGit still used Java
1.5. See [1].

Kudos to Marcin for proposing to use this improvement in RefWriter [2].
I think it should be used generally.

[1] https://repo.or.cz/jgit.git?a=commit;h=bfa3da225f198b19061158499b1135aff07d85b3
[2] https://eclipse.gerrithub.io/c/eclipse-jgit/jgit/+/1195180

Also-By: Marcin Czech <maczech@gmail.com>
Change-Id: I361ed6286b98351a315b8a8ffc3cb845831d35b2
(cherry picked from commit e5d2898997462e0f2409c09497ab62c6cda2dbaf)

org.eclipse.jgit/src/org/eclipse/jgit/lib/Constants.java

index 1a97d111e34e14a8b285932a89b7b61a7c0b65c3..5d7eacb4b8ddaf61c416b7f6b583da27b38ca9a9 100644 (file)
@@ -14,7 +14,6 @@ package org.eclipse.jgit.lib;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
-import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -688,17 +687,7 @@ public final class Constants {
         * @see #CHARACTER_ENCODING
         */
        public static byte[] encode(String str) {
-               final ByteBuffer bb = UTF_8.encode(str);
-               final int len = bb.limit();
-               if (bb.hasArray() && bb.arrayOffset() == 0) {
-                       final byte[] arr = bb.array();
-                       if (arr.length == len)
-                               return arr;
-               }
-
-               final byte[] arr = new byte[len];
-               bb.get(arr);
-               return arr;
+               return str.getBytes(UTF_8);
        }
 
        static {