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/22 09:26:25 UTC

(jackrabbit-oak) 01/01: OAK-11411 : removed usage of Guava Strings.emptyToNull

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

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

commit 595fa3637c9befbcadfe40ecddda33017e30e10f
Author: Rishabh Kumar <di...@adobe.com>
AuthorDate: Wed Jan 22 14:56:10 2025 +0530

    OAK-11411 : removed usage of Guava Strings.emptyToNull
---
 .../principalbased/impl/EntryCache.java            |  3 +-
 .../impl/PrincipalBasedAccessControlManager.java   |  2 +-
 .../principalbased/impl/PrincipalPolicyImpl.java   |  5 ++-
 .../impl/PrincipalPolicyImporter.java              |  3 +-
 .../impl/PrincipalPolicyValidatorProvider.java     |  3 +-
 .../azure/blobstorage/AzureBlobStoreBackend.java   |  6 +--
 .../apache/jackrabbit/oak/commons/StringUtils.java | 21 +++++++++
 .../jackrabbit/oak/commons/package-info.java       |  2 +-
 .../jackrabbit/oak/commons/StringUtilsTest.java    | 52 ++++++++++++++++++++++
 .../accesscontrol/AccessControlManagerImpl.java    |  3 +-
 .../permission/PermissionStoreEditor.java          |  3 +-
 .../oak/security/user/UserInitializer.java         |  3 +-
 .../oak/security/user/query/UserQueryManager.java  |  3 +-
 .../apache/jackrabbit/oak/fixture/OakFixture.java  |  3 +-
 .../apache/jackrabbit/oak/index/IndexOptions.java  |  3 +-
 .../index/search/spi/binary/TikaParserConfig.java  |  3 +-
 .../plugins/document/DocumentNodeStoreService.java |  2 +-
 17 files changed, 102 insertions(+), 18 deletions(-)

diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/EntryCache.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/EntryCache.java
index 672717b1bd..e4f22ee21e 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/EntryCache.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/EntryCache.java
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern;
 import org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider;
@@ -85,7 +86,7 @@ class EntryCache implements Constants {
         private final RestrictionPattern pattern;
 
         private PermissionEntryImpl(@NotNull Tree entryTree) {
-            effectivePath = Strings.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
+            effectivePath = StringUtils.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
             privilegeBits = bitsProvider.getBits(entryTree.getProperty(REP_PRIVILEGES).getValue(Type.NAMES));
             if (Utils.hasRestrictions(entryTree)) {
                 pattern = restrictionProvider.getPattern(effectivePath, restrictionProvider.readRestrictions(effectivePath, entryTree));
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 3288893980..dc91f8c7c0 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
@@ -424,7 +424,7 @@ class PrincipalBasedAccessControlManager extends AbstractAccessControlManager im
         if (principal == null || !filter.canHandle(Collections.singleton(principal))) {
             return null;
         }
-        String oakPath = Strings.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
+        String oakPath = org.apache.jackrabbit.oak.commons.StringUtils.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
         PrivilegeBits bits = privilegeBitsProvider.getBits(entryTree.getProperty(Constants.REP_PRIVILEGES).getValue(Type.NAMES));
 
         RestrictionProvider rp = mgrProvider.getRestrictionProvider();
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImpl.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImpl.java
index 66491d4b3d..08f56ad5c9 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImpl.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImpl.java
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.commons.collections.MapUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
@@ -75,7 +76,7 @@ class PrincipalPolicyImpl extends AbstractAccessControlList implements Principal
     }
 
     boolean addEntry(@NotNull Tree entryTree, @NotNull Collection<String> oakPathToFilter) throws AccessControlException {
-        String oakPath = Strings.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
+        String oakPath = StringUtils.emptyToNull(TreeUtil.getString(entryTree, REP_EFFECTIVE_PATH));
         if (Utils.hasValidRestrictions(oakPath, entryTree, restrictionProvider)) {
             PrivilegeBits bits = privilegeBitsProvider.getBits(entryTree.getProperty(Constants.REP_PRIVILEGES).getValue(Type.NAMES));
             Set<Restriction> restrictions = Utils.readRestrictions(restrictionProvider, oakPath, entryTree);
@@ -246,7 +247,7 @@ class PrincipalPolicyImpl extends AbstractAccessControlList implements Principal
         }
 
         // retrieve path from restrictions and filter that restriction entry for further processing
-        return Strings.emptyToNull(restrictions.get(jcrName).getString());
+        return StringUtils.emptyToNull(restrictions.get(jcrName).getString());
     }
 
     @NotNull
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImporter.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImporter.java
index e704da2611..3528933ea9 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImporter.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyImporter.java
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.commons.conditions.Validate;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
@@ -308,7 +309,7 @@ class PrincipalPolicyImporter implements ProtectedNodeImporter, ProtectedPropert
                 log.error("Missing rep:effectivePath for entry {} of policy at {}", this, policy.getOakPath());
                 throw new ConstraintViolationException("Entries for PrincipalAccessControlList must specify an effective path.");
             }
-            policy.addEntry(Strings.emptyToNull(effectivePath), Iterables.toArray(privileges, Privilege.class), restrictions, mvRestrictions);
+            policy.addEntry(StringUtils.emptyToNull(effectivePath), Iterables.toArray(privileges, Privilege.class), restrictions, mvRestrictions);
         }
     }
 }
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyValidatorProvider.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyValidatorProvider.java
index 5c21c38872..136dd8f300 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyValidatorProvider.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalPolicyValidatorProvider.java
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.commons.conditions.Validate;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
@@ -199,7 +200,7 @@ class PrincipalPolicyValidatorProvider extends ValidatorProvider implements Cons
             Tree parent = verifyNotNull(parentAfter);
             if (NT_REP_PRINCIPAL_ENTRY.equals(TreeUtil.getPrimaryTypeName(parent))) {
                 try {
-                    String oakPath = Strings.emptyToNull(TreeUtil.getString(parent, REP_EFFECTIVE_PATH));
+                    String oakPath = StringUtils.emptyToNull(TreeUtil.getString(parent, REP_EFFECTIVE_PATH));
                     mgrProvider.getRestrictionProvider().validateRestrictions(oakPath, parent);
                 } catch (AccessControlException e) {
                     throw new CommitFailedException(ACCESS_CONTROL, 35, "Invalid restrictions", e);
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 ee8264fcc4..fc070671ae 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
@@ -181,7 +181,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
             try {
                 Utils.setProxyIfNeeded(properties);
                 createBlobContainer = PropertiesUtil.toBoolean(
-                    Strings.emptyToNull(properties.getProperty(AzureConstants.AZURE_CREATE_CONTAINER)), true);
+                    org.apache.jackrabbit.oak.commons.StringUtils.emptyToNull(properties.getProperty(AzureConstants.AZURE_CREATE_CONTAINER)), true);
                 initAzureDSConfig();
 
                 concurrentRequestCount = PropertiesUtil.toInteger(
@@ -205,7 +205,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
                     requestTimeout = PropertiesUtil.toInteger(properties.getProperty(AzureConstants.AZURE_BLOB_REQUEST_TIMEOUT), RetryPolicy.DEFAULT_CLIENT_RETRY_COUNT);
                 }
                 presignedDownloadURIVerifyExists = PropertiesUtil.toBoolean(
-                    Strings.emptyToNull(properties.getProperty(AzureConstants.PRESIGNED_HTTP_DOWNLOAD_URI_VERIFY_EXISTS)), true);
+                    org.apache.jackrabbit.oak.commons.StringUtils.emptyToNull(properties.getProperty(AzureConstants.PRESIGNED_HTTP_DOWNLOAD_URI_VERIFY_EXISTS)), true);
 
                 enableSecondaryLocation = PropertiesUtil.toBoolean(
                         properties.getProperty(AzureConstants.AZURE_BLOB_ENABLE_SECONDARY_LOCATION_NAME),
@@ -243,7 +243,7 @@ public class AzureBlobStoreBackend extends AbstractSharedBackend {
 
                 // Initialize reference key secret
                 boolean createRefSecretOnInit = PropertiesUtil.toBoolean(
-                    Strings.emptyToNull(properties.getProperty(AzureConstants.AZURE_REF_ON_INIT)), true);
+                    org.apache.jackrabbit.oak.commons.StringUtils.emptyToNull(properties.getProperty(AzureConstants.AZURE_REF_ON_INIT)), true);
 
                 if (createRefSecretOnInit) {
                     getOrCreateReferenceKey();
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java
index a2ed5b91b3..2e25629d9b 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java
@@ -20,6 +20,7 @@ import static java.util.Objects.requireNonNull;
 import static org.apache.jackrabbit.oak.commons.conditions.Validate.checkArgument;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -108,4 +109,24 @@ public class StringUtils {
         }
         return (int) size;
     }
+
+    /**
+     * Returns the string if it is not empty, or {@code null} otherwise.
+     *
+     * @param string the string to test and possibly return, may be {@code null}
+     * @return the input string if it is not empty, or {@code null} if the input string is {@code null} or empty
+     */
+    public static String emptyToNull(@Nullable String string) {
+        return isNullOrEmpty(string) ? null : string;
+    }
+
+    /**
+     * Checks if a string is null or empty.
+     *
+     * @param string the string to check, may be {@code null}
+     * @return {@code true} if the string is null or empty, {@code false} otherwise
+     */
+    static boolean isNullOrEmpty(@Nullable String string) {
+        return string == null || string.isEmpty();
+    }
 }
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java
index c81c699b0b..718a93ef89 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("2.3.0")
+@Version("2.4.0")
 package org.apache.jackrabbit.oak.commons;
 
 import org.osgi.annotation.versioning.Version;
diff --git a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java
index 6166ed1a76..285ab10ce8 100644
--- a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java
+++ b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.fail;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.junit.Assert;
 import org.junit.Test;
 
 /**
@@ -79,4 +80,55 @@ public class StringUtilsTest {
         }
     }
 
+
+    @Test
+    public void testIsNullOrEmptyWithNull() {
+        Assert.assertTrue(StringUtils.isNullOrEmpty(null));
+    }
+
+    @Test
+    public void testIsNullOrEmptyWithEmptyString() {
+        Assert.assertTrue(StringUtils.isNullOrEmpty(""));
+    }
+
+    @Test
+    public void testIsNullOrEmptyWithNonEmptyString() {
+        Assert.assertFalse(StringUtils.isNullOrEmpty("not empty"));
+    }
+
+    @Test
+    public void testIsNullOrEmptyWithWhitespaceString() {
+        Assert.assertFalse(StringUtils.isNullOrEmpty(" "));
+    }
+
+    @Test
+    public void testIsNullOrEmptyWithNewlineString() {
+        Assert.assertFalse(StringUtils.isNullOrEmpty("\n"));
+    }
+
+    @Test
+    public void testEmptyToNullWithNull() {
+        Assert.assertNull(StringUtils.emptyToNull(null));
+    }
+
+    @Test
+    public void testEmptyToNullWithEmptyString() {
+        Assert.assertNull(StringUtils.emptyToNull(""));
+    }
+
+    @Test
+    public void testEmptyToNullWithNonEmptyString() {
+        Assert.assertEquals("not empty", StringUtils.emptyToNull("not empty"));
+    }
+
+    @Test
+    public void testEmptyToNullWithWhitespaceString() {
+        Assert.assertEquals(" ", StringUtils.emptyToNull(" "));
+    }
+
+    @Test
+    public void testEmptyToNullWithNewlineString() {
+        Assert.assertEquals("\n", StringUtils.emptyToNull("\n"));
+    }
+
 }
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java
index 262108df0d..9e348addd2 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java
@@ -58,6 +58,7 @@ import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyBuilder;
 import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
@@ -587,7 +588,7 @@ public class AccessControlManagerImpl extends AbstractAccessControlManager imple
         if (v == null) {
             throw new AccessControlException("Missing mandatory restriction rep:nodePath");
         } else {
-            return getOakPath(Strings.emptyToNull(v.getString()));
+            return getOakPath(StringUtils.emptyToNull(v.getString()));
         }
     }
     
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
index 81476d510c..f330b94cf7 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreEditor.java
@@ -24,6 +24,7 @@ import java.util.Set;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.commons.collections.SetUtils;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
 import org.apache.jackrabbit.oak.security.authorization.ProviderCtx;
@@ -86,7 +87,7 @@ final class PermissionStoreEditor implements AccessControlConstants, PermissionC
             if (isACE.test(ace)) {
                 boolean isAllow = isGrantACE.test(ace);
                 PrivilegeBits privilegeBits = bitsProvider.getBits(ace.getNames(REP_PRIVILEGES));
-                Set<Restriction> restrictions = restrictionProvider.readRestrictions(Strings.emptyToNull(accessControlledPath), providerCtx.getTreeProvider().createReadOnlyTree(ace));
+                Set<Restriction> restrictions = restrictionProvider.readRestrictions(StringUtils.emptyToNull(accessControlledPath), providerCtx.getTreeProvider().createReadOnlyTree(ace));
 
                 String principalName = Text.escapeIllegalJcrChars(ace.getString(REP_PRINCIPAL_NAME));
                 AcEntry entry = new AcEntry(principalName, index, isAllow, privilegeBits, restrictions);
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
index 6388a7a00e..5448071f4f 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.commons.conditions.Validate;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
@@ -142,7 +143,7 @@ class UserInitializer implements WorkspaceInitializer, UserConstants, QueryIndex
                 boolean omitPw = params.getConfigValue(PARAM_OMIT_ADMIN_PW, false);
                 userManager.createUser(adminId, (omitPw) ? null : adminId);
             }
-            String anonymousId = Strings.emptyToNull(params.getConfigValue(PARAM_ANONYMOUS_ID, DEFAULT_ANONYMOUS_ID, String.class));
+            String anonymousId = StringUtils.emptyToNull(params.getConfigValue(PARAM_ANONYMOUS_ID, DEFAULT_ANONYMOUS_ID, String.class));
             if (anonymousId != null && userManager.getAuthorizable(anonymousId) == null) {
                 userManager.createUser(anonymousId, null);
             }
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManager.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManager.java
index cd3fb22e26..78b86c48dc 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManager.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManager.java
@@ -36,6 +36,7 @@ import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.security.user.DeclaredMembershipPredicate;
 import org.apache.jackrabbit.oak.security.user.UserManagerImpl;
@@ -299,7 +300,7 @@ public class UserQueryManager {
                     sb.append(segments[i]);
                 }
             }
-            return Strings.emptyToNull(sb.toString());
+            return StringUtils.emptyToNull(sb.toString());
         }
     }
 
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
index 40e723c747..5dbcbe83de 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.guava.common.base.Splitter;
 import org.apache.jackrabbit.guava.common.base.Strings;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.blob.BlobAccessProvider;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.fixture.SegmentTarFixture.SegmentTarFixtureBuilder;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBuilder;
@@ -543,7 +544,7 @@ public abstract class OakFixture {
             Set<String> paths = new HashSet<>();
             if (persistentCacheIncludes != null) {
                 for (String p : Splitter.on(',').split(persistentCacheIncludes)) {
-                    p = p != null ? Strings.emptyToNull(p.trim()) : null;
+                    p = p != null ? StringUtils.emptyToNull(p.trim()) : null;
                     if (p != null) {
                         paths.add(p);
                     }
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java
index 121ca33124..3b473a9bd4 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java
@@ -23,6 +23,7 @@ import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
 import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.run.cli.OptionsBean;
 import org.apache.jackrabbit.oak.run.cli.OptionsBeanFactory;
 
@@ -254,7 +255,7 @@ public class IndexOptions implements OptionsBean {
     private static List<String> trim(List<String> values) {
         Set<String> paths = new HashSet<>();
         for (String v : values) {
-            v = Strings.emptyToNull(v);
+            v = StringUtils.emptyToNull(v);
             if (v != null) {
                 paths.add(v.trim());
             }
diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/binary/TikaParserConfig.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/binary/TikaParserConfig.java
index 00e1c305bf..6ee2b0c084 100644
--- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/binary/TikaParserConfig.java
+++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/binary/TikaParserConfig.java
@@ -27,6 +27,7 @@ import java.util.Set;
 import javax.xml.parsers.DocumentBuilder;
 
 import org.apache.jackrabbit.guava.common.base.Strings;
+import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.ParseContext;
@@ -80,7 +81,7 @@ public class TikaParserConfig {
             Node mime = mimes.item(j);
             if (mime instanceof Element) {
                 String mimeValue = mime.getTextContent();
-                mimeValue = Strings.emptyToNull(mimeValue);
+                mimeValue = StringUtils.emptyToNull(mimeValue);
                 if (mimeValue != null) {
                     MediaType mediaType = MediaType.parse(mimeValue.trim());
                     if (mediaType != null) {
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 dc75bf84fd..04562941a9 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
@@ -603,7 +603,7 @@ public class DocumentNodeStoreService {
 
         Set<Path> paths = new HashSet<>();
         for (String p : config.persistentCacheIncludes()) {
-            p = p != null ? Strings.emptyToNull(p.trim()) : null;
+            p = p != null ? org.apache.jackrabbit.oak.commons.StringUtils.emptyToNull(p.trim()) : null;
             if (p != null) {
                 paths.add(Path.fromString(p));
             }