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);