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 da...@apache.org on 2025/01/20 05:52:03 UTC

(jackrabbit-oak) branch trunk updated: OAK-11402 : removed usage of Guava Strings.isNullOrEmpty (#1995)

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

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


The following commit(s) were added to refs/heads/trunk by this push:
     new 4b9ed48ce6 OAK-11402 : removed usage of Guava Strings.isNullOrEmpty (#1995)
4b9ed48ce6 is described below

commit 4b9ed48ce68c37eaea2fd12944a6ba5d433e0925
Author: Rishabh Kumar <ri...@gmail.com>
AuthorDate: Mon Jan 20 11:21:57 2025 +0530

    OAK-11402 : removed usage of Guava Strings.isNullOrEmpty (#1995)
    
    * OAK-11402 : removed usage of Guava Strings.isNullOrEmpty
    
    * OAK-11402 : added commons-lang3 in fix oak-store-composite ITs
    
    ---------
    
    Co-authored-by: Rishabh Kumar <di...@adobe.com>
---
 .../authorization/cug/impl/CugPolicyImpl.java       |  3 ++-
 .../principalbased/impl/FilterProviderImpl.java     |  3 ++-
 .../impl/PrincipalBasedAccessControlManager.java    |  3 ++-
 .../authorization/principalbased/impl/Utils.java    |  3 ++-
 .../oak/benchmark/util/OakLuceneIndexUtils.java     |  3 ++-
 .../suites/ScalabilityBlobSearchSuite.java          |  7 ++++---
 .../scalability/suites/ScalabilityNodeSuite.java    |  3 ++-
 .../GetPrivilegeCollectionIncludeNamesTest.java     |  3 ++-
 .../authorization/MvGlobsAndSubtreesTest.java       |  3 ++-
 .../azure/blobstorage/AzureBlobStoreBackend.java    | 19 ++++++++++---------
 .../oak/blob/cloud/azure/blobstorage/Utils.java     |  6 +++---
 .../AzureDataRecordAccessProviderCDNTest.java       |  3 ++-
 .../AzureDataRecordAccessProviderIT.java            |  3 ++-
 .../cloud/azure/blobstorage/AzureDataStoreTest.java |  5 +++--
 .../azure/blobstorage/AzureDataStoreUtils.java      |  9 +++++----
 .../jackrabbit/oak/blob/cloud/s3/S3Backend.java     | 21 ++++++++++-----------
 .../apache/jackrabbit/oak/blob/cloud/s3/Utils.java  |  8 ++++----
 .../oak/blob/cloud/s3/S3DataStoreUtils.java         |  7 ++++---
 .../blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java    |  3 ++-
 .../oak/blob/cloud/s3/TestS3DataStore.java          |  5 +++--
 oak-blob-plugins/pom.xml                            |  4 ++++
 .../blob/ConsolidatedDataStoreCacheStats.java       |  6 +++---
 .../blob/datastore/AbstractDataStoreService.java    |  4 ++--
 .../plugins/blob/datastore/DataStoreBlobStore.java  |  3 +--
 .../oak/plugins/blob/datastore/FSBackend.java       | 12 +++++-------
 .../plugins/blob/datastore/OakFileDataStore.java    | 12 ++++++------
 .../directaccess/DataRecordDownloadOptions.java     | 17 ++++++++---------
 .../plugins/blob/datastore/SharedDataStoreTest.java |  5 +++--
 .../AbstractDataRecordAccessProviderTest.java       |  3 ++-
 .../directaccess/DataRecordDownloadOptionsTest.java | 15 +++++++--------
 .../oak/plugins/atomic/AtomicCounterEditor.java     |  3 ++-
 .../org/apache/jackrabbit/oak/query/QueryImpl.java  |  3 ++-
 .../accesscontrol/AccessControlValidator.java       |  3 ++-
 .../security/privilege/PrivilegeManagerImpl.java    |  4 ++--
 .../oak/security/user/CacheConfiguration.java       |  4 ++--
 .../user/CachedPrincipalMembershipReader.java       |  4 +++-
 .../jackrabbit/oak/security/user/GroupImpl.java     |  3 ++-
 .../oak/security/user/UserManagerImpl.java          |  5 +++--
 .../nodetype/write/NodeTypeRegistryTest.java        |  3 ++-
 .../oak/segment/SegmentAzureDataStoreBlobGCIT.java  |  3 ++-
 .../oak/segment/SegmentS3DataStoreBlobGCIT.java     |  3 ++-
 .../jackrabbit/oak/jcr/AtomicCounterClusterIT.java  |  3 ++-
 .../index/lucene/LuceneIndexProviderService.java    |  3 ++-
 .../jackrabbit/oak/fixture/BlobStoreFixture.java    |  3 ++-
 .../jackrabbit/oak/fixture/DataStoreUtils.java      |  4 ++--
 .../jackrabbit/oak/run/DataStoreCheckTest.java      |  3 ++-
 .../oak/run/DataStoreCommandMetadataTest.java       |  3 ++-
 .../jackrabbit/oak/run/DataStoreCommandTest.java    | 21 +++++++++++----------
 oak-security-spi/pom.xml                            |  5 +++++
 .../oak/spi/security/user/util/PasswordUtil.java    |  6 +++---
 .../segment/ReadOnlyStoreBlobReferencesTest.java    |  4 ++--
 .../oak/composite/it/CompositeTestSupport.java      |  3 ++-
 .../oak/plugins/document/DocumentNodeStore.java     |  3 ++-
 .../plugins/document/DocumentNodeStoreService.java  | 13 +++++++------
 .../oak/plugins/document/MongoBlobGCTest.java       |  3 ++-
 .../oak/plugins/document/RdbConnectionUtils.java    |  4 ++--
 56 files changed, 181 insertions(+), 139 deletions(-)

diff --git a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPolicyImpl.java b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPolicyImpl.java
index 1a28de465a..ecb8baffab 100644
--- a/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPolicyImpl.java
+++ b/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugPolicyImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization.cug.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -143,7 +144,7 @@ class CugPolicyImpl implements CugPolicy {
         }
 
         String name = principal.getName();
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new AccessControlException("Invalid principal " + name);
         }
 
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
index 93728a0af0..e8cef11561 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
 import org.apache.jackrabbit.oak.api.Root;
@@ -127,7 +128,7 @@ public class FilterProviderImpl implements FilterProvider {
     }
 
     private static boolean isValidPath(@Nullable String path) {
-        return !Strings.isNullOrEmpty(path) && PathUtils.isAbsolute(path);
+        return !StringUtils.isEmpty(path) && PathUtils.isAbsolute(path);
     }
     //-------------------------------------------------------------< Filter >---
 
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java
index 5aab441c61..3288893980 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterables;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlPolicy;
@@ -327,7 +328,7 @@ class PrincipalBasedAccessControlManager extends AbstractAccessControlManager im
      */
     private boolean canHandle(@Nullable Principal principal) throws AccessControlException {
         String name = (principal == null) ? null : principal.getName();
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new AccessControlException("Invalid principal " + name);
         }
         if (importBehavior ==  ImportBehavior.ABORT || importBehavior == ImportBehavior.IGNORE) {
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/Utils.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/Utils.java
index e35b61ca69..d16cabd7b6 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/Utils.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/Utils.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Tree;
@@ -75,7 +76,7 @@ final class Utils implements Constants {
      */
     public static boolean canHandle(@NotNull Principal principal, @NotNull Filter filter, int importBehavior) throws AccessControlException {
         String name = principal.getName();
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new AccessControlException("Invalid principal " + name);
         }
 
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/util/OakLuceneIndexUtils.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/util/OakLuceneIndexUtils.java
index dd34eda04c..e1e4b2116a 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/util/OakLuceneIndexUtils.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/util/OakLuceneIndexUtils.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.benchmark.util;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
@@ -93,7 +94,7 @@ public class OakLuceneIndexUtils {
         }
 
         // Set file persistence if specified
-        if (!Strings.isNullOrEmpty(persistencePath)) {
+        if (!StringUtils.isEmpty(persistencePath)) {
             indexDef.setProperty(FulltextIndexConstants.PERSISTENCE_NAME,
                     FulltextIndexConstants.PERSISTENCE_FILE);
             indexDef.setProperty(FulltextIndexConstants.PERSISTENCE_PATH,
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
index 8b018f85e0..6d49839deb 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
@@ -36,6 +36,7 @@ import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.version.VersionException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Stopwatch;
 import org.apache.jackrabbit.guava.common.base.Strings;
 
@@ -143,11 +144,11 @@ public class ScalabilityBlobSearchSuite extends ScalabilityNodeSuite {
         if (INDEX) {
             OakIndexUtils.propertyIndexDefinition(session, NodeTypeConstants.JCR_MIMETYPE,
                 new String[] {NodeTypeConstants.JCR_MIMETYPE}, false,
-                (Strings.isNullOrEmpty(indexType) ? new String[0] : new String[] {indexType}));
+                (StringUtils.isEmpty(indexType) ? new String[0] : new String[] {indexType}));
             OakIndexUtils
                 .orderedIndexDefinition(session, NodeTypeConstants.JCR_LASTMODIFIED, ASYNC_INDEX,
                     new String[] {NodeTypeConstants.JCR_LASTMODIFIED}, false,
-                    (Strings.isNullOrEmpty(indexType) ? new String[0] : new String[] {indexType}),
+                    (StringUtils.isEmpty(indexType) ? new String[0] : new String[] {indexType}),
                     null);
         }
     }
@@ -344,7 +345,7 @@ public class ScalabilityBlobSearchSuite extends ScalabilityNodeSuite {
 
                 file.setProperty(CUSTOM_PATH_PROP, file.getPath());
                 String reference = getRandomReadPath();
-                if (!Strings.isNullOrEmpty(reference)) {
+                if (!StringUtils.isEmpty(reference)) {
                     file.setProperty(CUSTOM_REF_PROP, reference);
                 }
             } finally {
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
index cf0e84f11b..ff8f8a068a 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
@@ -33,6 +33,7 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Splitter;
 
 import org.apache.jackrabbit.guava.common.base.Stopwatch;
@@ -448,7 +449,7 @@ public class ScalabilityNodeSuite extends ScalabilityAbstractSuite {
                             .with((Observer) provider)
                             .with(new LuceneIndexEditorProvider());
 
-                    if (!Strings.isNullOrEmpty(ASYNC_INDEX) && ASYNC_INDEX
+                    if (!StringUtils.isEmpty(ASYNC_INDEX) && ASYNC_INDEX
                         .equals(IndexConstants.ASYNC_PROPERTY_NAME)) {
                         oak.withAsyncIndexing();
                     }
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/GetPrivilegeCollectionIncludeNamesTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/GetPrivilegeCollectionIncludeNamesTest.java
index 776e9c9406..d746ee7505 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/GetPrivilegeCollectionIncludeNamesTest.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/GetPrivilegeCollectionIncludeNamesTest.java
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.benchmark.authorization;
 
 import joptsimple.internal.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeCollection;
 import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
@@ -54,7 +55,7 @@ public class GetPrivilegeCollectionIncludeNamesTest extends AbstractHasItemGetIt
     
     @NotNull
     private static EvaluationType getEvalType(@Nullable String type) {
-        if (Strings.isNullOrEmpty(type)) {
+        if (StringUtils.isEmpty(type)) {
             return EvaluationType.ACCESSCONTORL_MANAGER_GET_PRIVILEGE_COLLECTION;
         }
         try {
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/MvGlobsAndSubtreesTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/MvGlobsAndSubtreesTest.java
index 41be9a9d42..1b73b821ef 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/MvGlobsAndSubtreesTest.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/MvGlobsAndSubtreesTest.java
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.benchmark.authorization;
 
 import joptsimple.internal.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
 import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
@@ -57,7 +58,7 @@ public class MvGlobsAndSubtreesTest extends HasPermissionHasItemGetItemTest {
 
     @NotNull
     private static RestrictionType getRestrictionType(@Nullable String type) {
-        if (Strings.isNullOrEmpty(type)) {
+        if (StringUtils.isEmpty(type)) {
             return RestrictionType.REP_SUBTREES;
         }
         try {
diff --git a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java
index edbb981269..ee8264fcc4 100644
--- a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java
+++ b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureBlobStoreBackend.java
@@ -49,6 +49,7 @@ import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.cache.Cache;
 import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
@@ -549,7 +550,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
         if (null == input) {
             throw new NullPointerException("input");
         }
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new IllegalArgumentException("name");
         }
         long start = System.currentTimeMillis();
@@ -572,7 +573,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
         if (null == input) {
             throw new NullPointerException("input");
         }
-        if (Strings.isNullOrEmpty(name)) {
+        if (StringUtils.isEmpty(name)) {
             throw new IllegalArgumentException("name");
         }
         long start = System.currentTimeMillis();
@@ -878,13 +879,13 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
                 headers.setCacheControl(String.format("private, max-age=%d, immutable", httpDownloadURIExpirySeconds));
 
                 String contentType = downloadOptions.getContentTypeHeader();
-                if (! Strings.isNullOrEmpty(contentType)) {
+                if (! StringUtils.isEmpty(contentType)) {
                     headers.setContentType(contentType);
                 }
 
                 String contentDisposition =
                         downloadOptions.getContentDispositionHeader();
-                if (! Strings.isNullOrEmpty(contentDisposition)) {
+                if (! StringUtils.isEmpty(contentDisposition)) {
                     headers.setContentDisposition(contentDisposition);
                 }
 
@@ -1046,7 +1047,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
     DataRecord completeHttpUpload(@NotNull String uploadTokenStr)
             throws DataRecordUploadException, DataStoreException {
 
-        if (Strings.isNullOrEmpty(uploadTokenStr)) {
+        if (StringUtils.isEmpty(uploadTokenStr)) {
             throw new IllegalArgumentException("uploadToken required");
         }
 
@@ -1106,7 +1107,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
 
     private String getDefaultBlobStorageDomain() {
         String accountName = properties.getProperty(AzureConstants.AZURE_STORAGE_ACCOUNT_NAME, "");
-        if (Strings.isNullOrEmpty(accountName)) {
+        if (StringUtils.isEmpty(accountName)) {
             LOG.warn("Can't generate presigned URI - Azure account name not found in properties");
             return null;
         }
@@ -1117,7 +1118,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
         String domain = ignoreDomainOverride
                 ? getDefaultBlobStorageDomain()
                 : downloadDomainOverride;
-        if (Strings.isNullOrEmpty(domain)) {
+        if (StringUtils.isEmpty(domain)) {
             domain = getDefaultBlobStorageDomain();
         }
         return domain;
@@ -1127,7 +1128,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
         String domain = ignoreDomainOverride
                 ? getDefaultBlobStorageDomain()
                 : uploadDomainOverride;
-        if (Strings.isNullOrEmpty(domain)) {
+        if (StringUtils.isEmpty(domain)) {
             domain = getDefaultBlobStorageDomain();
         }
         return domain;
@@ -1155,7 +1156,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
                                    Map<String, String> additionalQueryParams,
                                    SharedAccessBlobHeaders optionalHeaders,
                                    String domain) {
-        if (Strings.isNullOrEmpty(domain)) {
+        if (StringUtils.isEmpty(domain)) {
             LOG.warn("Can't generate presigned URI - no Azure domain provided (is Azure account name configured?)");
             return null;
         }
diff --git a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/Utils.java b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/Utils.java
index b8fda6981d..56613075d4 100644
--- a/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/Utils.java
+++ b/oak-blob-cloud-azure/src/main/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/Utils.java
@@ -102,8 +102,8 @@ public final class Utils {
         String proxyHost = properties.getProperty(AzureConstants.PROXY_HOST);
         String proxyPort = properties.getProperty(AzureConstants.PROXY_PORT);
 
-        if (!Strings.isNullOrEmpty(proxyHost) &&
-            Strings.isNullOrEmpty(proxyPort)) {
+        if (!StringUtils.isEmpty(proxyHost) &&
+            StringUtils.isEmpty(proxyPort)) {
             int port = Integer.parseInt(proxyPort);
             SocketAddress proxyAddr = new InetSocketAddress(proxyHost, port);
             Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddr);
@@ -162,7 +162,7 @@ public final class Utils {
         connString.append(";AccountName=").append(accountName);
         connString.append(";AccountKey=").append(accountKey);
         
-        if (!Strings.isNullOrEmpty(blobEndpoint)) {
+        if (!StringUtils.isEmpty(blobEndpoint)) {
             connString.append(";BlobEndpoint=").append(blobEndpoint);
         }
         return connString.toString();
diff --git a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderCDNTest.java b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderCDNTest.java
index 1d5709242d..81d6339a5e 100644
--- a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderCDNTest.java
+++ b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderCDNTest.java
@@ -32,6 +32,7 @@ import java.io.File;
 import java.net.URI;
 import java.util.Properties;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.core.data.DataIdentifier;
 import org.apache.jackrabbit.oak.api.blob.BlobDownloadOptions;
@@ -79,7 +80,7 @@ public class AzureDataRecordAccessProviderCDNTest extends AzureDataRecordAccessP
     }
 
     private static boolean isCDNConfigured() {
-        return ! Strings.isNullOrEmpty(DOWNLOAD_URI_DOMAIN) && ! Strings.isNullOrEmpty(UPLOAD_URI_DOMAIN);
+        return ! StringUtils.isEmpty(DOWNLOAD_URI_DOMAIN) && ! StringUtils.isEmpty(UPLOAD_URI_DOMAIN);
     }
 
     private static AzureDataStore createDataStore(@NotNull Properties properties) throws Exception {
diff --git a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderIT.java b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderIT.java
index d07f483ffe..4a048b42d5 100644
--- a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderIT.java
+++ b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataRecordAccessProviderIT.java
@@ -24,6 +24,7 @@ import java.net.URI;
 
 import javax.net.ssl.HttpsURLConnection;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.core.data.DataIdentifier;
 import org.apache.jackrabbit.core.data.DataRecord;
@@ -52,7 +53,7 @@ public class AzureDataRecordAccessProviderIT extends AbstractDataRecordAccessPro
 
     @BeforeClass
     public static void setupDataStore() throws Exception {
-        assumeTrue(isAzureConfigured() && !Strings.isNullOrEmpty(System.getProperty("test.opts.memory")));
+        assumeTrue(isAzureConfigured() && !StringUtils.isEmpty(System.getProperty("test.opts.memory")));
 
         dataStore = (AzureDataStore) getAzureDataStore(getAzureConfig(), homeDir.newFolder().getAbsolutePath());
         dataStore.setDirectDownloadURIExpirySeconds(expirySeconds);
diff --git a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreTest.java b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreTest.java
index 632e3c3345..d9950c79af 100644
--- a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreTest.java
+++ b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreTest.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import com.microsoft.azure.storage.StorageException;
@@ -631,7 +632,7 @@ public class AzureDataStoreTest {
     public void testBackendDeleteMetadataRecord() throws DataStoreException {
         backend.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : Arrays.asList("invalid", "", null)) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     backend.deleteMetadataRecord(name);
                 }
@@ -649,7 +650,7 @@ public class AzureDataStoreTest {
     public void testBackendMetadataRecordExists() throws DataStoreException {
         backend.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : Arrays.asList("invalid", "", null)) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     backend.metadataRecordExists(name);
                 }
diff --git a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreUtils.java b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreUtils.java
index aa14b38b8e..3903acc361 100644
--- a/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreUtils.java
+++ b/oak-blob-cloud-azure/src/test/java/org/apache/jackrabbit/oak/blob/cloud/azure/blobstorage/AzureDataStoreUtils.java
@@ -33,6 +33,7 @@ import java.util.Properties;
 
 import javax.net.ssl.HttpsURLConnection;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import com.microsoft.azure.storage.blob.CloudBlobContainer;
 import org.apache.commons.io.IOUtils;
@@ -87,13 +88,13 @@ public class AzureDataStoreUtils extends DataStoreUtils {
      */
     public static Properties getAzureConfig() {
         String config = System.getProperty(SYS_PROP_NAME);
-        if (Strings.isNullOrEmpty(config)) {
+        if (StringUtils.isEmpty(config)) {
             File cfgFile = new File(System.getProperty("user.home"), DEFAULT_PROPERTY_FILE);
             if (cfgFile.exists()) {
                 config = cfgFile.getAbsolutePath();
             }
         }
-        if (Strings.isNullOrEmpty(config)) {
+        if (StringUtils.isEmpty(config)) {
             config = DEFAULT_CONFIG_PATH;
         }
 
@@ -110,7 +111,7 @@ public class AzureDataStoreUtils extends DataStoreUtils {
             }
             props.putAll(getConfig());
             Map<String, String> filtered = MapUtils.filterEntries(MapUtils.fromProperties(props),
-                    input -> !Strings.isNullOrEmpty(input.getValue()));
+                    input -> !StringUtils.isEmpty(input.getValue()));
             props = new Properties();
             props.putAll(filtered);
         }
@@ -169,7 +170,7 @@ public class AzureDataStoreUtils extends DataStoreUtils {
     }
 
     public static void deleteContainer(String containerName) throws Exception {
-        if (Strings.isNullOrEmpty(containerName)) {
+        if (StringUtils.isEmpty(containerName)) {
             log.warn("Cannot delete container with null or empty name. containerName={}", containerName);
             return;
         }
diff --git a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
index 4eadf4cfdb..d29f305363 100644
--- a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
+++ b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3Backend.java
@@ -45,6 +45,7 @@ import java.util.function.Function;
 import com.amazonaws.services.s3.model.GetObjectMetadataRequest;
 import com.amazonaws.services.s3.model.GetObjectRequest;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.core.data.DataIdentifier;
 import org.apache.jackrabbit.core.data.DataRecord;
 import org.apache.jackrabbit.core.data.DataStoreException;
@@ -93,9 +94,7 @@ import com.amazonaws.services.s3.model.S3ObjectSummary;
 import com.amazonaws.services.s3.transfer.Copy;
 import com.amazonaws.services.s3.transfer.TransferManager;
 import com.amazonaws.services.s3.transfer.Upload;
-import com.amazonaws.util.StringUtils;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.cache.Cache;
 import org.apache.jackrabbit.guava.common.cache.CacheBuilder;
 import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
@@ -175,13 +174,13 @@ public class S3Backend extends AbstractSharedBackend {
             if (bucket == null || "".equals(bucket.trim())) {
                 bucket = properties.getProperty(S3Constants.S3_BUCKET);
                 // Alternately check if the 'container' property is set
-                if (Strings.isNullOrEmpty(bucket)) {
+                if (StringUtils.isEmpty(bucket)) {
                     bucket = properties.getProperty(S3Constants.S3_CONTAINER);
                 }
             }
             String region = properties.getProperty(S3Constants.S3_REGION);
             
-            if (StringUtils.isNullOrEmpty(region)) {
+            if (StringUtils.isEmpty(region)) {
                 com.amazonaws.regions.Region ec2Region = Regions.getCurrentRegion();
                 if (ec2Region != null) {
                     region = ec2Region.getName();
@@ -513,7 +512,7 @@ public class S3Backend extends AbstractSharedBackend {
     @Override
     public void addMetadataRecord(final InputStream input, final String name) throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
 
@@ -536,7 +535,7 @@ public class S3Backend extends AbstractSharedBackend {
     @Override
     public void addMetadataRecord(File input, String name) throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -557,7 +556,7 @@ public class S3Backend extends AbstractSharedBackend {
 
     @Override
     public DataRecord getMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -604,7 +603,7 @@ public class S3Backend extends AbstractSharedBackend {
 
     @Override
     public boolean deleteMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -818,13 +817,13 @@ public class S3Backend extends AbstractSharedBackend {
             );
 
             String contentType = downloadOptions.getContentTypeHeader();
-            if (! Strings.isNullOrEmpty(contentType)) {
+            if (! StringUtils.isEmpty(contentType)) {
                 requestParams.put("response-content-type", contentType);
             }
             String contentDisposition =
                     downloadOptions.getContentDispositionHeader();
 
-            if (! Strings.isNullOrEmpty(contentDisposition)) {
+            if (! StringUtils.isEmpty(contentDisposition)) {
                 requestParams.put("response-content-disposition",
                         contentDisposition);
             }
@@ -957,7 +956,7 @@ public class S3Backend extends AbstractSharedBackend {
     DataRecord completeHttpUpload(@NotNull String uploadTokenStr)
             throws DataRecordUploadException, DataStoreException {
 
-        if (Strings.isNullOrEmpty(uploadTokenStr)) {
+        if (StringUtils.isEmpty(uploadTokenStr)) {
             throw new IllegalArgumentException("uploadToken required");
         }
 
diff --git a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
index 5144911582..d32b5159f3 100644
--- a/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
+++ b/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/s3/Utils.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.commons.lang3.StringUtils;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,7 +39,6 @@ import com.amazonaws.services.s3.AmazonS3;
 import com.amazonaws.services.s3.AmazonS3Client;
 import com.amazonaws.services.s3.model.ObjectListing;
 import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.amazonaws.util.StringUtils;
 
 /**
  * Amazon S3 utilities.
@@ -89,8 +89,8 @@ public final class Utils {
         String accessKey = prop.getProperty(S3Constants.ACCESS_KEY);
         String secretKey = prop.getProperty(S3Constants.SECRET_KEY);
         AmazonS3Client s3service = null;
-        if (StringUtils.isNullOrEmpty(accessKey)
-                || StringUtils.isNullOrEmpty(secretKey)) {
+        if (StringUtils.isEmpty(accessKey)
+                || StringUtils.isEmpty(secretKey)) {
             LOG.info("Configuring Amazon Client from environment");
             s3service = new AmazonS3Client(getClientConfiguration(prop));
         } else {
@@ -106,7 +106,7 @@ public final class Utils {
         if ((propEndPoint != null) & !"".equals(propEndPoint)) {
             endpoint = propEndPoint;
         } else {
-            if (StringUtils.isNullOrEmpty(region)) {
+            if (StringUtils.isEmpty(region)) {
                 com.amazonaws.regions.Region s3Region = Regions.getCurrentRegion();
                 if (s3Region != null) {
                     region = s3Region.getName();
diff --git a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
index fcc274d860..2ebc30acbc 100644
--- a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
+++ b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/S3DataStoreUtils.java
@@ -40,6 +40,7 @@ import com.amazonaws.services.s3.model.ObjectListing;
 import com.amazonaws.services.s3.model.S3ObjectSummary;
 import com.amazonaws.services.s3.transfer.TransferManager;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.data.DataStore;
@@ -101,13 +102,13 @@ public class S3DataStoreUtils extends DataStoreUtils {
      */
     public static Properties getS3Config() {
         String config = System.getProperty(SYS_PROP_NAME);
-        if (Strings.isNullOrEmpty(config)) {
+        if (StringUtils.isEmpty(config)) {
             File cfgFile = new File(System.getProperty("user.home"), DEFAULT_PROPERTY_FILE);
             if (cfgFile.exists()) {
                 config = cfgFile.getAbsolutePath();
             }
         }
-        if (Strings.isNullOrEmpty(config)) {
+        if (StringUtils.isEmpty(config)) {
             config = DEFAULT_CONFIG_PATH;
         }
         Properties props = new Properties();
@@ -123,7 +124,7 @@ public class S3DataStoreUtils extends DataStoreUtils {
             }
             props.putAll(getConfig());
             Map<String, String> filtered = MapUtils.filterEntries(MapUtils.fromProperties(props),
-                    input ->!Strings.isNullOrEmpty(input.getValue()));
+                    input ->!StringUtils.isEmpty(input.getValue()));
             props = new Properties();
             props.putAll(filtered);
         }
diff --git a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java
index edf30247d7..b2ab5358d3 100644
--- a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java
+++ b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DSWithSSEKMSwithKey.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.blob.cloud.s3;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.junit.AssumptionViolatedException;
 import org.junit.Before;
@@ -39,7 +40,7 @@ public class TestS3DSWithSSEKMSwithKey extends TestS3Ds {
         public void setUp() throws Exception {
             super.setUp();
             String keyid = props.getProperty(S3Constants.S3_SSE_KMS_KEYID);
-            if (!Strings.isNullOrEmpty(keyid)) {
+            if (!StringUtils.isEmpty(keyid)) {
                 props.setProperty(S3Constants.S3_ENCRYPTION, S3Constants.S3_ENCRYPTION_SSE_KMS);
                 props.setProperty(S3Constants.S3_SSE_KMS_KEYID, keyid);
             } else {
diff --git a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
index 5761049b54..2a7844c334 100644
--- a/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
+++ b/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/s3/TestS3DataStore.java
@@ -45,6 +45,7 @@ import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.jcr.RepositoryException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.time.DateUtils;
@@ -323,7 +324,7 @@ public class TestS3DataStore {
 
         s3ds.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : Arrays.asList("invalid", "", null)) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     s3ds.metadataRecordExists(name);
                 }
@@ -345,7 +346,7 @@ public class TestS3DataStore {
 
         s3ds.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : Arrays.asList("", null)) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     s3ds.deleteMetadataRecord(name);
                 }
diff --git a/oak-blob-plugins/pom.xml b/oak-blob-plugins/pom.xml
index e2a5a3505c..f1ec472f44 100644
--- a/oak-blob-plugins/pom.xml
+++ b/oak-blob-plugins/pom.xml
@@ -143,6 +143,10 @@
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
 
     <!-- Logging -->
     <dependency>
diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/ConsolidatedDataStoreCacheStats.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/ConsolidatedDataStoreCacheStats.java
index b038a2986c..fe93c709b7 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/ConsolidatedDataStoreCacheStats.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/ConsolidatedDataStoreCacheStats.java
@@ -33,7 +33,7 @@ import javax.management.openmbean.TabularData;
 import javax.management.openmbean.TabularDataSupport;
 import javax.management.openmbean.TabularType;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Deactivate;
@@ -132,7 +132,7 @@ public class ConsolidatedDataStoreCacheStats implements ConsolidatedDataStoreCac
      */
     @Override
     public boolean isFileSynced(final String nodePathName) {
-        if (Strings.isNullOrEmpty(nodePathName)) {
+        if (StringUtils.isEmpty(nodePathName)) {
             return false;
         }
 
@@ -197,7 +197,7 @@ public class ConsolidatedDataStoreCacheStats implements ConsolidatedDataStoreCac
 
     private boolean haveRecordForBlob(final Blob blob) {
         final String fullBlobId = blob.getContentIdentity();
-        if (!Strings.isNullOrEmpty(fullBlobId)
+        if (!StringUtils.isEmpty(fullBlobId)
             && !InMemoryDataRecord.isInstance(fullBlobId)) {
             String blobId = DataStoreBlobStore.BlobId.of(fullBlobId).getBlobId();
             return cachingDataStore.exists(new DataIdentifier(blobId));
diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
index 72cc3f816d..0fc566a6f4 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/AbstractDataStoreService.java
@@ -29,7 +29,7 @@ import java.util.Objects;
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.data.DataStoreException;
 import org.apache.jackrabbit.oak.api.blob.BlobAccessProvider;
@@ -75,7 +75,7 @@ public abstract class AbstractDataStoreService {
         int cacheSizeInMB = PropertiesUtil.toInteger(config.get(PROP_CACHE_SIZE), DataStoreBlobStore.DEFAULT_CACHE_SIZE);
 
         String homeDir = lookup(context, PROP_HOME);
-        if (config.containsKey(PATH) && !Strings.isNullOrEmpty((String) config.get(PATH))) {
+        if (config.containsKey(PATH) && !StringUtils.isEmpty((String) config.get(PATH))) {
             log.info("Initializing the DataStore with path [{}]", config.get(PATH));
         }
         else if (homeDir != null) {
diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
index 21c9027257..cbac63fc5c 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
@@ -78,7 +78,6 @@ import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import org.apache.jackrabbit.guava.common.io.ByteStreams;
 import org.apache.jackrabbit.guava.common.io.Closeables;
@@ -307,7 +306,7 @@ public class DataStoreBlobStore
     public void close() throws DataStoreException {
         // If marked as shared transient then delete the repository marker in close
         if (SHARED_TRANSIENT) {
-            if (!Strings.isNullOrEmpty(getRepositoryId())) {
+            if (!org.apache.commons.lang3.StringUtils.isEmpty(getRepositoryId())) {
                 deleteMetadataRecord(SharedDataStoreUtils.SharedStoreRecordType.REPOSITORY.getNameFromId(getRepositoryId()));
             }
         }
diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
index eb6c29186b..7822b115b4 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FSBackend.java
@@ -24,14 +24,12 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.RandomAccessFile;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.io.Closeables;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -187,7 +185,7 @@ public class FSBackend extends AbstractSharedBackend {
     public void addMetadataRecord(InputStream input, String name)
         throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         try {
             File file = new File(fsPathDir, name);
@@ -208,7 +206,7 @@ public class FSBackend extends AbstractSharedBackend {
     @Override
     public void addMetadataRecord(File input, String name) throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         try {
             File file = new File(fsPathDir, name);
@@ -222,7 +220,7 @@ public class FSBackend extends AbstractSharedBackend {
 
     @Override
     public DataRecord getMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         for (File file : FileFilterUtils
             .filter(FileFilterUtils.nameFileFilter(name), fsPathDir.listFiles())) {
@@ -250,7 +248,7 @@ public class FSBackend extends AbstractSharedBackend {
 
     @Override
     public boolean deleteMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         for (File file : FileFilterUtils
             .filterList(FileFilterUtils.nameFileFilter(name), fsPathDir.listFiles())) {
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 75754351e2..7ad09d04c1 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
@@ -32,7 +32,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.io.Closeables;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -135,7 +135,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
     public void addMetadataRecord(InputStream input, String name)
             throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         try {
             File file = new File(getPath(), name);
@@ -156,7 +156,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
     @Override
     public void addMetadataRecord(File input, String name) throws DataStoreException {
         checkArgument(input != null, "input should not be null");
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         try {
             File file = new File(getPath(), name);
@@ -170,7 +170,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
 
     @Override
     public DataRecord getMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         File root = new File(getPath());
         for (File file : FileFilterUtils.filter(FileFilterUtils.nameFileFilter(name), root.listFiles())) {
@@ -183,7 +183,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
 
     @Override
     public boolean metadataRecordExists(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         File root = new File(getPath());
 
@@ -221,7 +221,7 @@ public class OakFileDataStore extends FileDataStore implements SharedDataStore {
 
     @Override
     public boolean deleteMetadataRecord(String name) {
-        checkArgument(!Strings.isNullOrEmpty(name), "name should not be empty");
+        checkArgument(!StringUtils.isEmpty(name), "name should not be empty");
 
         File root = new File(getPath());
 
diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
index 654a2a1df2..a6fca3396a 100644
--- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
+++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptions.java
@@ -22,12 +22,11 @@ import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.api.blob.BlobDownloadOptions;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
-
 /**
  * Contains download options for downloading a data record directly from a
  * storage location using the direct download feature.
@@ -94,7 +93,7 @@ public class DataRecordDownloadOptions {
         this.mediaType = mediaType;
         this.characterEncoding = characterEncoding;
         this.fileName = fileName;
-        this.dispositionType = Strings.isNullOrEmpty(dispositionType) ?
+        this.dispositionType = StringUtils.isEmpty(dispositionType) ?
                 DISPOSITION_TYPE_INLINE :
                 dispositionType;
         this.domainOverrideIgnored = domainOverrideIgnored;
@@ -112,9 +111,9 @@ public class DataRecordDownloadOptions {
      */
     @Nullable
     public String getContentTypeHeader() {
-        if (Strings.isNullOrEmpty(contentTypeHeader)) {
-            if (!Strings.isNullOrEmpty(mediaType)) {
-                contentTypeHeader = Strings.isNullOrEmpty(characterEncoding) ?
+        if (StringUtils.isEmpty(contentTypeHeader)) {
+            if (!StringUtils.isEmpty(mediaType)) {
+                contentTypeHeader = StringUtils.isEmpty(characterEncoding) ?
                         mediaType :
                         mediaType + "; charset=" + characterEncoding;
             }
@@ -136,10 +135,10 @@ public class DataRecordDownloadOptions {
      */
     @Nullable
     public String getContentDispositionHeader() {
-        if (Strings.isNullOrEmpty(contentDispositionHeader)) {
-            if (!Strings.isNullOrEmpty(fileName)) {
+        if (StringUtils.isEmpty(contentDispositionHeader)) {
+            if (!StringUtils.isEmpty(fileName)) {
                 String dispositionType = this.dispositionType;
-                if (Strings.isNullOrEmpty(dispositionType)) {
+                if (StringUtils.isEmpty(dispositionType)) {
                     dispositionType = DISPOSITION_TYPE_INLINE;
                 }
                 contentDispositionHeader = formatContentDispositionHeader(dispositionType, fileName, rfc8187Encode(fileName));
diff --git a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreTest.java b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreTest.java
index 009eb908ce..75dd430b1d 100644
--- a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreTest.java
+++ b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreTest.java
@@ -33,6 +33,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import org.apache.commons.io.FileUtils;
@@ -313,7 +314,7 @@ public class SharedDataStoreTest {
 
         fds.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : new ArrayList<>(Arrays.asList("", null))) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     fds.deleteMetadataRecord(name);
                 }
@@ -387,7 +388,7 @@ public class SharedDataStoreTest {
 
         fds.addMetadataRecord(randomStream(0, 10), "name");
         for (String name : new ArrayList<>(Arrays.asList("invalid", "", null))) {
-            if (Strings.isNullOrEmpty(name)) {
+            if (StringUtils.isEmpty(name)) {
                 try {
                     fds.metadataRecordExists(name);
                 }
diff --git a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
index 883425a032..013c648fb2 100644
--- a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
+++ b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/AbstractDataRecordAccessProviderTest.java
@@ -35,6 +35,7 @@ import java.util.Properties;
 import javax.net.ssl.HttpsURLConnection;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.core.data.DataIdentifier;
 import org.apache.jackrabbit.core.data.DataRecord;
 import org.apache.jackrabbit.core.data.DataStore;
@@ -301,7 +302,7 @@ public abstract class AbstractDataRecordAccessProviderTest {
         assertTrue(uploadContext.getMaxPartSize() >= uploadContext.getMinPartSize());
         assertTrue(uploadContext.getMaxPartSize() <= getProviderMaxPartSize());
         assertTrue((uploadContext.getMaxPartSize() * uploadContext.getUploadURIs().size()) >= ONE_MB);
-        assertFalse(Strings.isNullOrEmpty(uploadContext.getUploadToken()));
+        assertFalse(StringUtils.isEmpty(uploadContext.getUploadToken()));
     }
 
     @Test
diff --git a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
index a9643faf66..efce65d436 100644
--- a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
+++ b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/datastore/directaccess/DataRecordDownloadOptionsTest.java
@@ -21,11 +21,10 @@ package org.apache.jackrabbit.oak.plugins.blob.datastore.directaccess;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.api.blob.BlobDownloadOptions;
 import org.junit.Test;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -77,7 +76,7 @@ public class DataRecordDownloadOptionsTest {
 
     private void verifyContentTypeHeader(DataRecordDownloadOptions options,
                                          String contentTypeHeader) {
-        if (Strings.isNullOrEmpty(contentTypeHeader)) {
+        if (StringUtils.isEmpty(contentTypeHeader)) {
             assertNull(options.getContentTypeHeader());
         }
         else {
@@ -87,7 +86,7 @@ public class DataRecordDownloadOptionsTest {
 
     private void verifyContentDispositionHeader(DataRecordDownloadOptions options,
                                                 String contentDispositionHeader) {
-        if (Strings.isNullOrEmpty(contentDispositionHeader)) {
+        if (StringUtils.isEmpty(contentDispositionHeader)) {
             assertNull(options.getContentDispositionHeader());
         }
         else {
@@ -111,23 +110,23 @@ public class DataRecordDownloadOptionsTest {
     }
 
     private String getContentTypeHeader(String mediaType, String characterEncoding) {
-        return Strings.isNullOrEmpty(mediaType) ?
+        return StringUtils.isEmpty(mediaType) ?
                 null :
-                (Strings.isNullOrEmpty(characterEncoding) ?
+                (StringUtils.isEmpty(characterEncoding) ?
                         mediaType :
                         mediaType + "; charset=" + characterEncoding
                 );
     }
 
     private String getContentDispositionHeader(String fileName, String encodedFileName, String dispositionType) {
-        if (Strings.isNullOrEmpty(fileName)) {
+        if (StringUtils.isEmpty(fileName)) {
             if (dispositionType.equals(DISPOSITION_TYPE_ATTACHMENT)) {
                 return DISPOSITION_TYPE_ATTACHMENT;
             }
             return null;
         }
 
-        if (Strings.isNullOrEmpty(dispositionType)) {
+        if (StringUtils.isEmpty(dispositionType)) {
             dispositionType = DISPOSITION_TYPE_INLINE;
         }
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
index fce5e78cf9..c6b7ef4912 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
@@ -28,6 +28,7 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -204,7 +205,7 @@ public class AtomicCounterEditor extends DefaultEditor {
                                 @Nullable Whiteboard board) {
         this.builder = requireNonNull(builder);
         this.path = path;
-        this.instanceId = Strings.isNullOrEmpty(instanceId) ? null : instanceId;
+        this.instanceId = StringUtils.isEmpty(instanceId) ? null : instanceId;
         this.executor = executor;
         this.store = store;
         this.board = board;
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
index 4c6891a579..1801a807fd 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.Result.SizePrecision;
 import org.apache.jackrabbit.oak.api.Tree;
@@ -1416,7 +1417,7 @@ public class QueryImpl implements Query {
 
     @Override
     public String getStatement() {
-        return Strings.isNullOrEmpty(statement) ? toString() : statement;
+        return StringUtils.isEmpty(statement) ? toString() : statement;
     }
 
     public QueryEngineSettings getSettings() {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
index 02b60ee255..cc490a25d7 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
@@ -25,6 +25,7 @@ import javax.jcr.RepositoryException;
 import javax.jcr.security.AccessControlException;
 import javax.jcr.security.Privilege;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterables;
 import org.apache.jackrabbit.JcrConstants;
@@ -243,7 +244,7 @@ class AccessControlValidator extends DefaultValidator implements AccessControlCo
     @NotNull
     private static String checkValidPrincipal(@NotNull Tree aceNode) throws CommitFailedException {
         String principalName = TreeUtil.getString(aceNode, REP_PRINCIPAL_NAME);
-        if (Strings.isNullOrEmpty(principalName)) {
+        if (StringUtils.isEmpty(principalName)) {
             throw accessViolation(8, "Missing principal name at " + aceNode.getPath());
         }
         // validity of principal is only a JCR specific contract and will not be
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeManagerImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeManagerImpl.java
index b6a120893a..1f97f1f2a5 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeManagerImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeManagerImpl.java
@@ -25,7 +25,7 @@ import javax.jcr.RepositoryException;
 import javax.jcr.security.AccessControlException;
 import javax.jcr.security.Privilege;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
@@ -82,7 +82,7 @@ class PrivilegeManagerImpl implements PrivilegeManager {
         if (root.hasPendingChanges()) {
             throw new InvalidItemStateException("Attempt to register a new privilege while there are pending changes.");
         }
-        if (Strings.isNullOrEmpty(privilegeName)) {
+        if (StringUtils.isEmpty(privilegeName)) {
             throw new RepositoryException("Invalid privilege name " + privilegeName);
         }
         PrivilegeDefinition definition = new ImmutablePrivilegeDefinition(PrivilegeUtil.getOakName(privilegeName, namePathMapper), isAbstract, PrivilegeUtil.getOakNames(declaredAggregateNames, namePathMapper));
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConfiguration.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConfiguration.java
index 5560296e93..7a648f7762 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConfiguration.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConfiguration.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.jetbrains.annotations.NotNull;
 
@@ -68,7 +68,7 @@ final class CacheConfiguration {
      */
     public static CacheConfiguration fromUserConfiguration(@NotNull UserConfiguration config, @NotNull String propertyName) {
 
-        if (Strings.isNullOrEmpty(propertyName) || propertyName.trim().isEmpty()) {
+        if (StringUtils.isEmpty(propertyName) || propertyName.trim().isEmpty()) {
             throw new IllegalArgumentException("Invalid property name: " + propertyName);
         }
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReader.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReader.java
index 11ab42b216..646d9f90ba 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReader.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReader.java
@@ -26,6 +26,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import javax.jcr.AccessDeniedException;
+
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterables;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -180,7 +182,7 @@ class CachedPrincipalMembershipReader implements CachedMembershipReader {
 
     private boolean hasCacheValues(@NotNull Tree principalCache) {
         return principalCache.hasProperty(propertyName) &&
-                !Strings.isNullOrEmpty(TreeUtil.getString(principalCache, propertyName));
+                !StringUtils.isEmpty(TreeUtil.getString(principalCache, propertyName));
     }
 
     /**
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
index 04c5630759..79090ca282 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Stopwatch;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.api.security.user.Authorizable;
@@ -301,7 +302,7 @@ class GroupImpl extends AuthorizableImpl implements Group {
         Map<String, String> updateMap = MapUtils.newHashMap(memberIds.length);
         MembershipProvider mp = getMembershipProvider();
         for (String memberId : memberIds) {
-            if (Strings.isNullOrEmpty(memberId)) {
+            if (StringUtils.isEmpty(memberId)) {
                 throw new ConstraintViolationException("MemberId must not be null or empty.");
             }
             if (isValidMemberId(memberId, importBehavior)) {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
index 39e80ef52f..7563ad6a15 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.security.user;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterables;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
@@ -122,7 +123,7 @@ public class UserManagerImpl implements UserManager {
     @Nullable
     @Override
     public Authorizable getAuthorizable(@NotNull String id) throws RepositoryException {
-        Tree tree = (Strings.isNullOrEmpty(id)) ? null : userProvider.getAuthorizable(id);
+        Tree tree = (StringUtils.isEmpty(id)) ? null : userProvider.getAuthorizable(id);
         return getAuthorizable(tree);
     }
 
@@ -487,7 +488,7 @@ public class UserManagerImpl implements UserManager {
     }
 
     void checkValidPrincipal(@Nullable Principal principal, boolean isGroup) throws RepositoryException {
-        if (principal == null || Strings.isNullOrEmpty(principal.getName())) {
+        if (principal == null || StringUtils.isEmpty(principal.getName())) {
             throw new IllegalArgumentException("Principal may not be null and must have a valid name.");
         }
         if (!isGroup && EveryonePrincipal.NAME.equals(principal.getName())) {
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
index 2f878c65da..e43fb2c77a 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
@@ -52,6 +52,7 @@ import javax.jcr.nodetype.NodeTypeManager;
 import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.security.auth.login.LoginException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 
 import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
@@ -91,7 +92,7 @@ public class NodeTypeRegistryTest {
     private ContentSession session = null;
     
     static void registerNodeType(@NotNull Root root, @NotNull String resourceName) throws IOException {
-        checkArgument(!Strings.isNullOrEmpty(resourceName));
+        checkArgument(!StringUtils.isEmpty(resourceName));
         requireNonNull(root);
 
         InputStream stream = null;
diff --git a/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentAzureDataStoreBlobGCIT.java b/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentAzureDataStoreBlobGCIT.java
index 9c6c49d01c..de93f9a4ed 100644
--- a/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentAzureDataStoreBlobGCIT.java
+++ b/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentAzureDataStoreBlobGCIT.java
@@ -23,6 +23,7 @@ import static org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture.SEGMENT_T
 import static org.apache.jackrabbit.oak.commons.FixturesHelper.getFixtures;
 import static org.junit.Assume.assumeTrue;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 
 import org.apache.jackrabbit.oak.blob.cloud.azure.blobstorage.AzureConstants;
@@ -57,7 +58,7 @@ public class SegmentAzureDataStoreBlobGCIT extends SegmentDataStoreBlobGCIT {
 
     @After
     public void close() throws Exception {
-        if (!Strings.isNullOrEmpty(containerName)) {
+        if (!StringUtils.isEmpty(containerName)) {
             AzureDataStoreUtils.deleteContainer(containerName);
         }
     }
diff --git a/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java b/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
index 859b4283a3..0ac1577f0d 100644
--- a/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
+++ b/oak-it/src/test/java/org/apache/jackrabbit/oak/segment/SegmentS3DataStoreBlobGCIT.java
@@ -28,6 +28,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.oak.blob.cloud.s3.S3Constants;
 import org.apache.jackrabbit.oak.blob.cloud.s3.S3DataStoreUtils;
@@ -79,7 +80,7 @@ public class SegmentS3DataStoreBlobGCIT extends SegmentDataStoreBlobGCIT {
 
     @After
     public void close() throws Exception {
-        if (!Strings.isNullOrEmpty(bucket)) {
+        if (!StringUtils.isEmpty(bucket)) {
             S3DataStoreUtils.deleteBucket(bucket, startDate);
         }
     }
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
index 49fe4e77b9..6576edd906 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
@@ -44,6 +44,7 @@ import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.Session;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.commons.FixturesHelper;
 import org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture;
 import org.apache.jackrabbit.oak.commons.PerfLogger;
@@ -117,7 +118,7 @@ public class AtomicCounterClusterIT  extends DocumentClusterIT {
         alignCluster(mks);
 
         // asserting the initial state
-        assertFalse("Path to the counter node should be set", Strings.isNullOrEmpty(counterPath));
+        assertFalse("Path to the counter node should be set", StringUtils.isEmpty(counterPath));
         for (Repository r : repos) {
 
             try {
diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
index 821a873073..2255854b3d 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
@@ -32,6 +32,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 
 import org.apache.commons.io.FilenameUtils;
@@ -458,7 +459,7 @@ public class LuceneIndexProviderService {
 
     void initializeIndexDir(BundleContext bundleContext, Configuration config) {
         String indexDirPath = config.localIndexDir();
-        if (Strings.isNullOrEmpty(indexDirPath)) {
+        if (StringUtils.isEmpty(indexDirPath)) {
             String repoHome = bundleContext.getProperty(REPOSITORY_HOME);
             if (repoHome != null){
                 indexDirPath = FilenameUtils.concat(repoHome, "index");
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
index 3f6251c7fc..28299518ea 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
@@ -27,6 +27,7 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.commons.io.FileUtils;
 import org.apache.felix.cm.file.ConfigurationHandler;
@@ -254,7 +255,7 @@ public abstract class BlobStoreFixture implements Closeable{
         // try loading the props from the config file if configured
         String cfgFile = System.getProperty("ds.config");
         Map<String, Object> result = new HashMap<>();
-        if (!Strings.isNullOrEmpty(cfgFile)) {
+        if (!StringUtils.isEmpty(cfgFile)) {
             try {
                 result = loadAndTransformProps(cfgFile);
             } catch (IOException e) {
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
index b58463ed3c..6e136637d5 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
@@ -104,7 +104,7 @@ public class DataStoreUtils {
     public static void cleanup(File storeDir, Map<String, ?> config, String bucket) throws Exception {
         FileUtils.deleteQuietly(storeDir);
         if (config.containsKey(S3Constants.S3_BUCKET)) {
-            if (!Strings.isNullOrEmpty(bucket)) {
+            if (!StringUtils.isEmpty(bucket)) {
                 deleteBucket(bucket, config, new Date());
             }
         } else if (config.containsKey(AzureConstants.AZURE_BLOB_CONTAINER_NAME)
@@ -154,7 +154,7 @@ public class DataStoreUtils {
             log.warn("config not provided, cannot initialize blob container");
             return;
         }
-        if (Strings.isNullOrEmpty(containerName)) {
+        if (StringUtils.isEmpty(containerName)) {
             log.warn("container name is null or blank, cannot initialize blob container");
             return;
         }
diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
index 28c9186ffa..a0ae94061c 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCheckTest.java
@@ -40,6 +40,7 @@ import java.util.Properties;
 import java.util.Random;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.collect.Iterables;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import joptsimple.internal.Strings;
@@ -171,7 +172,7 @@ public class DataStoreCheckTest {
     @After
     public void tearDown() {
         System.setErr(new PrintStream(new FileOutputStream(FileDescriptor.err)));
-        if (!Strings.isNullOrEmpty(container)) {
+        if (!StringUtils.isEmpty(container)) {
             try {
                 if (dsOption.equals("s3ds")) {
                     S3DataStoreUtils.deleteBucket(container, new Date());
diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandMetadataTest.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandMetadataTest.java
index bcb3af0e7e..743aec275c 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandMetadataTest.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandMetadataTest.java
@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.core.data.DataRecord;
 import org.apache.jackrabbit.core.data.DataStoreException;
@@ -93,7 +94,7 @@ public class DataStoreCommandMetadataTest {
     public void setup() throws Exception {
         if (storeFixture instanceof StoreFixture.AzureSegmentStoreFixture) {
             assumeFalse("Environment variable \"AZURE_SECRET_KEY\" must be set to run Azure Segment fixture",
-                    Strings.isNullOrEmpty(System.getenv("AZURE_SECRET_KEY")));
+                    StringUtils.isEmpty(System.getenv("AZURE_SECRET_KEY")));
         }
 
         setupDataStore = blobFixture.init(temporaryFolder);
diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java
index 50bb7448cd..d06ac4e9b7 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java
@@ -40,6 +40,7 @@ import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
 import ch.qos.logback.classic.Level;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Splitter;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
@@ -146,7 +147,7 @@ public class DataStoreCommandTest {
     public void setup() throws Exception {
         if (storeFixture instanceof StoreFixture.AzureSegmentStoreFixture) {
             assumeFalse("Environment variable \"AZURE_SECRET_KEY\" must be set to run Azure Segment fixture",
-                    Strings.isNullOrEmpty(System.getenv("AZURE_SECRET_KEY")));
+                    StringUtils.isEmpty(System.getenv("AZURE_SECRET_KEY")));
         }
 
         setupDataStore = blobFixture.init(temporaryFolder);
@@ -292,7 +293,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--check-consistency", "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(), "--out-dir",
                 dump.getAbsolutePath(), storeFixture.getConnectionString(), "--reset-log-config", "false", "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.add(additionalParams);
         }
 
@@ -323,7 +324,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(), "--out-dir",
                 dump.getAbsolutePath(), storeFixture.getConnectionString(), "--reset-log-config", "false", "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.add(additionalParams);
         }
 
@@ -344,7 +345,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList(storeFixture.getConnectionString(),
                 "--out-dir", dump.getAbsolutePath(), "--reset-log-config", "false", "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath(), "--check-consistency"));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.add(additionalParams);
         }
 
@@ -679,7 +680,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--collect-garbage", "--max-age", String.valueOf(0), "--" + getOption(blobFixture.getType()),
                 blobFixture.getConfigPath(), storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(),
                 "--reset-log-config", "false", "--work-dir", temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.add(additionalParams);
         }
 
@@ -703,7 +704,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--check-consistency", "--fake-ds-path", dsPath.getAbsolutePath(),
                 storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(), "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.add(additionalParams);
         }
         DataStoreCommand cmd = new DataStoreCommand();
@@ -722,7 +723,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--check-consistency", String.valueOf(markOnly), "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(),
                 storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(), "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.addAll(Splitter.on(" ").splitToList(additionalParams));
         }
 
@@ -763,7 +764,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--dump-ref", "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(),
                         storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(), "--work-dir",
                         temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.addAll(Splitter.on(" ").splitToList(additionalParams));
         }
 
@@ -785,7 +786,7 @@ public class DataStoreCommandTest {
         List<String> argsList = new ArrayList<>(Arrays.asList("--dump-id", "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(),
                         storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(), "--work-dir",
                         temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.addAll(Splitter.on(" ").splitToList(additionalParams));
         }
 
@@ -807,7 +808,7 @@ public class DataStoreCommandTest {
                 "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(),
                 storeFixture.getConnectionString(), "--out-dir", dump.getAbsolutePath(), "--work-dir",
                 temporaryFolder.newFolder().getAbsolutePath()));
-        if (!Strings.isNullOrEmpty(additionalParams)) {
+        if (!StringUtils.isEmpty(additionalParams)) {
             argsList.addAll(Splitter.on(" ").splitToList(additionalParams));
         }
 
diff --git a/oak-security-spi/pom.xml b/oak-security-spi/pom.xml
index d270cd7ec2..c07b183f49 100644
--- a/oak-security-spi/pom.xml
+++ b/oak-security-spi/pom.xml
@@ -152,6 +152,11 @@
       <artifactId>annotations</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+
     <!-- Test Dependencies -->
     <dependency>
       <groupId>junit</groupId>
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/util/PasswordUtil.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/util/PasswordUtil.java
index bf609acf45..af9fa0489d 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/util/PasswordUtil.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/util/PasswordUtil.java
@@ -26,7 +26,7 @@ import java.security.spec.KeySpec;
 import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.PBEKeySpec;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.util.Text;
@@ -216,7 +216,7 @@ public final class PasswordUtil {
                                        @Nullable String salt, int iterations) throws NoSuchAlgorithmException, UnsupportedEncodingException {
         StringBuilder passwordHash = new StringBuilder();
         passwordHash.append('{').append(algorithm).append('}');
-        if (!Strings.isNullOrEmpty(salt)) {
+        if (!StringUtils.isEmpty(salt)) {
             StringBuilder data = new StringBuilder();
             data.append(salt).append(pwd);
 
@@ -325,7 +325,7 @@ public final class PasswordUtil {
      */
     @Nullable
     private static String extractAlgorithm(@Nullable String hashedPwd) {
-        if (!Strings.isNullOrEmpty(hashedPwd)) {
+        if (!StringUtils.isEmpty(hashedPwd)) {
             int end = hashedPwd.indexOf('}');
             if (hashedPwd.charAt(0) == '{' && end > 0 && end < hashedPwd.length()-1) {
                 String algorithm = hashedPwd.substring(1, end);
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ReadOnlyStoreBlobReferencesTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ReadOnlyStoreBlobReferencesTest.java
index 9ffeedd408..995846a3e4 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ReadOnlyStoreBlobReferencesTest.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ReadOnlyStoreBlobReferencesTest.java
@@ -26,7 +26,7 @@ import java.util.HashSet;
 import java.util.Random;
 import java.util.Set;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
@@ -138,7 +138,7 @@ public class ReadOnlyStoreBlobReferencesTest {
             Set<String> actualReferences = new HashSet<>();
             fileStore.collectBlobReferences(actualReferences::add);
             assertEquals("Read only store visible references different", count, actualReferences.size());
-            if (!Strings.isNullOrEmpty(blobId)) {
+            if (!StringUtils.isEmpty(blobId)) {
                 assertEquals("Binary reference returned should be same", blobId,
                     actualReferences.toArray(new String[0])[0]);
             }
diff --git a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
index a1177c9b3f..e838ecb1f1 100644
--- a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
+++ b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/it/CompositeTestSupport.java
@@ -96,7 +96,8 @@ public abstract class CompositeTestSupport extends TestSupport {
             mavenBundle().groupId("javax.jcr").artifactId("jcr").versionAsInProject(),
             mavenBundle().groupId("commons-codec").artifactId("commons-codec").versionAsInProject(),
             mavenBundle().groupId("commons-io").artifactId("commons-io").versionAsInProject(),
-            mavenBundle().groupId("org.apache.commons").artifactId("commons-collections4").versionAsInProject()
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-collections4").versionAsInProject(),
+            mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").versionAsInProject()
         );
     }
 
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
index e5d3816d70..edf6ec3bc5 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
@@ -74,6 +74,7 @@ import java.util.function.Supplier;
 
 import javax.jcr.PropertyType;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.cache.Cache;
 import org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionException;
 import org.apache.jackrabbit.oak.api.Blob;
@@ -4013,7 +4014,7 @@ public final class DocumentNodeStore
     
     @Override
     public boolean isVisible(@NotNull String visibilityToken, long maxWaitMillis) throws InterruptedException {
-        if (Strings.isNullOrEmpty(visibilityToken)) {
+        if (StringUtils.isEmpty(visibilityToken)) {
             // we've asked for @Nonnull..
             // hence throwing an exception
             throw new IllegalArgumentException("visibilityToken must not be null or empty");
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
index 5cafc8b905..dc75bf84fd 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
@@ -50,6 +50,7 @@ import java.util.function.Supplier;
 
 import javax.sql.DataSource;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.guava.common.io.Closer;
 import org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionException;
@@ -565,10 +566,10 @@ public class DocumentNodeStoreService {
                 setJournalGCMaxAge(config.journalGCMaxAge()).
                 setNodeCachePathPredicate(createCachePredicate());
 
-        if (!Strings.isNullOrEmpty(persistentCache)) {
+        if (!StringUtils.isEmpty(persistentCache)) {
             builder.setPersistentCache(persistentCache);
         }
-        if (!Strings.isNullOrEmpty(journalCache)) {
+        if (!StringUtils.isEmpty(journalCache)) {
             builder.setJournalCache(journalCache);
         }
 
@@ -621,7 +622,7 @@ public class DocumentNodeStoreService {
     }
 
     private boolean isNodeStoreProvider() {
-        return !Strings.isNullOrEmpty(config.role());
+        return !StringUtils.isEmpty(config.role());
     }
 
     private boolean isContinuousRevisionGC() {
@@ -634,7 +635,7 @@ public class DocumentNodeStoreService {
     private String getVersionGCExpression() {
         String defaultExpr = CONTINUOUS_RGC_EXPR;
         String expr = config.versionGCExpression();
-        if (Strings.isNullOrEmpty(expr)) {
+        if (StringUtils.isEmpty(expr)) {
             expr = defaultExpr;
         }
         // validate expression
@@ -966,7 +967,7 @@ public class DocumentNodeStoreService {
 
     private String resolvePath(String value, String defaultValue) {
         String path = value;
-        if (Strings.isNullOrEmpty(value)) {
+        if (StringUtils.isEmpty(value)) {
             path = defaultValue;
         }
         if ("-".equals(path)) {
@@ -979,7 +980,7 @@ public class DocumentNodeStoreService {
 
     private String getRepositoryHome() {
         String repoHome = config.repository_home();
-        if (Strings.isNullOrEmpty(repoHome)) {
+        if (StringUtils.isEmpty(repoHome)) {
             repoHome = DEFAULT_PROP_HOME;
         }
         return repoHome;
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
index a317aaba6e..341a821359 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/MongoBlobGCTest.java
@@ -33,6 +33,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import ch.qos.logback.classic.Level;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.guava.common.base.Splitter;
 import org.apache.jackrabbit.guava.common.base.Stopwatch;
 import org.apache.jackrabbit.guava.common.base.Strings;
@@ -454,7 +455,7 @@ public class MongoBlobGCTest extends AbstractMongoConnectionTest {
             repoId = ClusterRepositoryInfo.getOrCreateId(store);
             ((SharedDataStore) store.getBlobStore()).setRepositoryId(repoId);
         }
-        if (Strings.isNullOrEmpty(root)) {
+        if (StringUtils.isEmpty(root)) {
             root = folder.newFolder().getAbsolutePath();
         }
 
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RdbConnectionUtils.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RdbConnectionUtils.java
index c880f29836..0bb789434e 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RdbConnectionUtils.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/RdbConnectionUtils.java
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.document;
 
-import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -137,7 +137,7 @@ public class RdbConnectionUtils {
     }
 
     private static boolean checkImageAvailability() throws TimeoutException {
-        if (Strings.isNullOrEmpty(IMG)) {
+        if (StringUtils.isEmpty(IMG)) {
             return false;
         }
         RemoteDockerImage remoteDockerImage = new RemoteDockerImage(DockerImageName.parse(IMG));