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 2025/01/16 14:21:07 UTC

(jackrabbit-oak) 01/01: OAK-11399: Remove usage of Guava io.BaseEncoding

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

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

commit 29341828a468e4f289bda0f8b420e7470849b16c
Author: Julian Reschke <re...@apache.org>
AuthorDate: Thu Jan 16 15:20:47 2025 +0100

    OAK-11399: Remove usage of Guava io.BaseEncoding
---
 .../oak/plugins/blob/datastore/OakFileDataStore.java         |  8 ++------
 .../apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java    | 12 +++++++++---
 .../org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java     |  5 ++---
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
index b7787debfd..75754351e2 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/OakFileDataStore.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.jackrabbit.oak.plugins.blob.datastore;
 
 import java.io.File;
@@ -25,18 +24,15 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.ref.WeakReference;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.AbstractMap;
 import java.util.ArrayList;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.jackrabbit.guava.common.base.Strings;
-import org.apache.jackrabbit.guava.common.io.BaseEncoding;
 import org.apache.jackrabbit.guava.common.io.Closeables;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -95,7 +91,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
      * Set Base64 encoded signing key
      */
     public void setReferenceKeyEncoded(String encodedKey) {
-        this.referenceKey = BaseEncoding.base64().decode(encodedKey);
+        this.referenceKey = Base64.getDecoder().decode(encodedKey);
     }
 
     /**
diff --git a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
index 63d6a8bf25..d229836884 100644
--- a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
+++ b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
@@ -32,6 +32,7 @@ import java.security.SecureRandom;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -44,7 +45,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 
-import org.apache.jackrabbit.guava.common.io.BaseEncoding;
+import org.apache.commons.codec.binary.Base32;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.commons.cache.Cache;
 import org.apache.jackrabbit.oak.commons.IOUtils;
@@ -119,6 +120,11 @@ public abstract class AbstractBlobStore implements GarbageCollectableBlobStore,
      */
     private int blockSize = 2 * 1024 * 1024;
 
+    /**
+     * Encode in Base 32, hex encoding, no line breaks, padding with "="
+     */
+    private static Base32 BASE32ENCODER = Base32.builder().setLineSeparator(new byte[0]).setPadding((byte)'=').get();
+
     /**
      * The byte array is re-used if possible, to avoid having to create a new,
      * large byte array each time a (potentially very small) binary is stored.
@@ -237,7 +243,7 @@ public abstract class AbstractBlobStore implements GarbageCollectableBlobStore,
             Mac mac = Mac.getInstance(ALGORITHM);
             mac.init(new SecretKeySpec(getReferenceKey(), ALGORITHM));
             byte[] hash = mac.doFinal(blobId.getBytes("UTF-8"));
-            return blobId + ':' + BaseEncoding.base32Hex().encode(hash);
+            return blobId + ':' + BASE32ENCODER.encode(hash);
         } catch (NoSuchAlgorithmException e) {
             throw new IllegalStateException(e);
         } catch (InvalidKeyException e) {
@@ -307,7 +313,7 @@ public abstract class AbstractBlobStore implements GarbageCollectableBlobStore,
      * @param encodedKey base64 encoded key
      */
     public void setReferenceKeyEncoded(String encodedKey) {
-        setReferenceKey(BaseEncoding.base64().decode(encodedKey));
+        setReferenceKey(Base64.getDecoder().decode(encodedKey));
     }
 
     /**
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java
index bb63258f57..be628a1c44 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferenceBinaryIT.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertNotNull;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Base64;
 import java.util.Collection;
 import java.util.List;
 import java.util.Random;
@@ -56,8 +57,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
-import org.apache.jackrabbit.guava.common.io.BaseEncoding;
-
 @RunWith(Parameterized.class)
 public class ReferenceBinaryIT {
 
@@ -179,7 +178,7 @@ public class ReferenceBinaryIT {
         OakFileDataStore fds = new OakFileDataStore();
         byte[] key = new byte[256];
         new Random().nextBytes(key);
-        fds.setReferenceKeyEncoded(BaseEncoding.base64().encode(key));
+        fds.setReferenceKeyEncoded(Base64.getEncoder().encodeToString(key));
         fds.setMinRecordLength(4092);
         fds.init(file.getAbsolutePath());
         return new DataStoreBlobStore(fds);