diff --git a/src/main/java/net/snowflake/client/config/SFConnectionConfigParser.java b/src/main/java/net/snowflake/client/config/SFConnectionConfigParser.java index 1a93d20f68..0e710be5cb 100644 --- a/src/main/java/net/snowflake/client/config/SFConnectionConfigParser.java +++ b/src/main/java/net/snowflake/client/config/SFConnectionConfigParser.java @@ -1,11 +1,11 @@ package net.snowflake.client.config; import static net.snowflake.client.jdbc.SnowflakeUtil.convertSystemGetEnvToBooleanValue; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.isWindows; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetEnv; import com.fasterxml.jackson.dataformat.toml.TomlMapper; -import com.google.common.base.Strings; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; @@ -162,7 +162,7 @@ private static String createUrl(Map fileConnectionConfiguration) logger.debug("Host created using parameters from connection configuration file: {}", host); String port = fileConnectionConfiguration.get("port"); String protocol = fileConnectionConfiguration.get("protocol"); - if (Strings.isNullOrEmpty(port)) { + if (isNullOrEmpty(port)) { if ("https".equals(protocol)) { port = "443"; } else { diff --git a/src/main/java/net/snowflake/client/core/CredentialManager.java b/src/main/java/net/snowflake/client/core/CredentialManager.java index 04f229c52b..7f45faf0ab 100644 --- a/src/main/java/net/snowflake/client/core/CredentialManager.java +++ b/src/main/java/net/snowflake/client/core/CredentialManager.java @@ -1,7 +1,7 @@ package net.snowflake.client.core; -import com.amazonaws.util.StringUtils; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Base64; @@ -149,7 +149,7 @@ static void fillCachedDPoPBundledAccessToken(SFLoginInput loginInput) throws SFE synchronized void fillCachedCredential( SFLoginInput loginInput, String host, String username, CachedCredentialType credType) throws SFException { - if (StringUtils.isNullOrEmpty(username)) { + if (isNullOrEmpty(username)) { logger.debug("Missing username; Cannot read from credential cache"); return; } @@ -210,7 +210,7 @@ synchronized void fillCachedCredential( private void updateInputWithTokenAndPublicKey(String cred, SFLoginInput loginInput) throws SFException { - if (Strings.isNullOrEmpty(cred)) { + if (isNullOrEmpty(cred)) { String[] values = cred.split("\\."); if (values.length != 2) { throw new SFException( @@ -313,11 +313,11 @@ static void writeDPoPBundledAccessToken(SFLoginInput loginInput) throws SFExcept /** Store the temporary credential */ synchronized void writeTemporaryCredential( String host, String user, String cred, CachedCredentialType credType) { - if (StringUtils.isNullOrEmpty(user)) { + if (isNullOrEmpty(user)) { logger.debug("Missing username; Cannot write to credential cache"); return; } - if (Strings.isNullOrEmpty(cred)) { + if (isNullOrEmpty(cred)) { logger.debug("No {} is given.", credType); return; // no credential } @@ -426,7 +426,7 @@ synchronized void deleteTemporaryCredential( logMissingJnaJarForSecureLocalStorage(); return; } - if (StringUtils.isNullOrEmpty(user)) { + if (isNullOrEmpty(user)) { logger.debug("Missing username; Cannot delete from credential cache"); return; } diff --git a/src/main/java/net/snowflake/client/core/ExecTimeTelemetryData.java b/src/main/java/net/snowflake/client/core/ExecTimeTelemetryData.java index 4fbf27a454..af5ab24537 100644 --- a/src/main/java/net/snowflake/client/core/ExecTimeTelemetryData.java +++ b/src/main/java/net/snowflake/client/core/ExecTimeTelemetryData.java @@ -1,6 +1,7 @@ package net.snowflake.client.core; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import net.minidev.json.JSONObject; import net.snowflake.client.jdbc.telemetryOOB.TelemetryService; import net.snowflake.client.util.TimeMeasurement; @@ -106,7 +107,7 @@ public void setRequestId(String requestId) { } public void addRetryLocation(String location) { - if (Strings.isNullOrEmpty(this.retryLocations)) { + if (isNullOrEmpty(this.retryLocations)) { this.retryLocations = location; } else { this.retryLocations = this.retryLocations.concat(", ").concat(location); diff --git a/src/main/java/net/snowflake/client/core/FileUtil.java b/src/main/java/net/snowflake/client/core/FileUtil.java index 4152be45e9..3bb1698bd7 100644 --- a/src/main/java/net/snowflake/client/core/FileUtil.java +++ b/src/main/java/net/snowflake/client/core/FileUtil.java @@ -1,8 +1,8 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.isWindows; -import com.google.common.base.Strings; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -190,7 +190,7 @@ static String getFileOwnerName(Path filePath) throws IOException { } private static String getContextStr(String context) { - return Strings.isNullOrEmpty(context) ? "" : context + ": "; + return isNullOrEmpty(context) ? "" : context + ": "; } public static boolean exists(File file) { diff --git a/src/main/java/net/snowflake/client/core/HttpClientSettingsKey.java b/src/main/java/net/snowflake/client/core/HttpClientSettingsKey.java index da41401a23..abf489f546 100644 --- a/src/main/java/net/snowflake/client/core/HttpClientSettingsKey.java +++ b/src/main/java/net/snowflake/client/core/HttpClientSettingsKey.java @@ -1,6 +1,7 @@ package net.snowflake.client.core; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import java.io.Serializable; /** @@ -35,14 +36,14 @@ public HttpClientSettingsKey( Boolean gzipDisabled) { this.useProxy = true; this.ocspMode = mode != null ? mode : OCSPMode.FAIL_OPEN; - this.proxyHost = !Strings.isNullOrEmpty(host) ? host.trim() : ""; + this.proxyHost = !isNullOrEmpty(host) ? host.trim() : ""; this.proxyPort = port; - this.nonProxyHosts = !Strings.isNullOrEmpty(nonProxyHosts) ? nonProxyHosts.trim() : ""; - this.proxyUser = !Strings.isNullOrEmpty(user) ? user.trim() : ""; - this.proxyPassword = !Strings.isNullOrEmpty(password) ? password.trim() : ""; - this.proxyProtocol = !Strings.isNullOrEmpty(scheme) ? scheme.trim() : "http"; + this.nonProxyHosts = !isNullOrEmpty(nonProxyHosts) ? nonProxyHosts.trim() : ""; + this.proxyUser = !isNullOrEmpty(user) ? user.trim() : ""; + this.proxyPassword = !isNullOrEmpty(password) ? password.trim() : ""; + this.proxyProtocol = !isNullOrEmpty(scheme) ? scheme.trim() : "http"; this.gzipDisabled = gzipDisabled; - this.userAgentSuffix = !Strings.isNullOrEmpty(userAgentSuffix) ? userAgentSuffix.trim() : ""; + this.userAgentSuffix = !isNullOrEmpty(userAgentSuffix) ? userAgentSuffix.trim() : ""; } public HttpClientSettingsKey(OCSPMode mode) { @@ -52,7 +53,7 @@ public HttpClientSettingsKey(OCSPMode mode) { HttpClientSettingsKey(OCSPMode mode, String userAgentSuffix, Boolean gzipDisabled) { this(mode); - this.userAgentSuffix = !Strings.isNullOrEmpty(userAgentSuffix) ? userAgentSuffix.trim() : ""; + this.userAgentSuffix = !isNullOrEmpty(userAgentSuffix) ? userAgentSuffix.trim() : ""; this.gzipDisabled = gzipDisabled; } diff --git a/src/main/java/net/snowflake/client/core/HttpUtil.java b/src/main/java/net/snowflake/client/core/HttpUtil.java index 258696a4e1..975676da4c 100644 --- a/src/main/java/net/snowflake/client/core/HttpUtil.java +++ b/src/main/java/net/snowflake/client/core/HttpUtil.java @@ -1,5 +1,6 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; import static org.apache.http.client.config.CookieSpecs.DEFAULT; import static org.apache.http.client.config.CookieSpecs.IGNORE_COOKIES; @@ -8,7 +9,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Strings; import com.microsoft.azure.storage.OperationContext; import java.io.File; import java.io.IOException; @@ -403,8 +403,7 @@ public static CloseableHttpClient buildHttpClient( key.getProxyHttpProtocol(), key.getNonProxyHosts())); httpClientBuilder.setProxy(proxy).setRoutePlanner(sdkProxyRoutePlanner); - if (!Strings.isNullOrEmpty(key.getProxyUser()) - && !Strings.isNullOrEmpty(key.getProxyPassword())) { + if (!isNullOrEmpty(key.getProxyUser()) && !isNullOrEmpty(key.getProxyPassword())) { Credentials credentials = new UsernamePasswordCredentials(key.getProxyUser(), key.getProxyPassword()); AuthScope authScope = new AuthScope(key.getProxyHost(), key.getProxyPort()); @@ -966,7 +965,7 @@ private static String executeRequestInternal( private static void checkForDPoPNonceError(HttpResponse response) throws IOException { String errorResponse = EntityUtils.toString(response.getEntity()); - if (!Strings.isNullOrEmpty(errorResponse)) { + if (!isNullOrEmpty(errorResponse)) { ObjectMapper objectMapper = ObjectMapperFactory.getObjectMapper(); JsonNode rootNode = objectMapper.readTree(errorResponse); JsonNode errorNode = rootNode.get(ERROR_FIELD_NAME); diff --git a/src/main/java/net/snowflake/client/core/SFBaseSession.java b/src/main/java/net/snowflake/client/core/SFBaseSession.java index db5cd445e5..7611dbb184 100644 --- a/src/main/java/net/snowflake/client/core/SFBaseSession.java +++ b/src/main/java/net/snowflake/client/core/SFBaseSession.java @@ -1,9 +1,9 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetEnv; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; -import com.google.common.base.Strings; import java.sql.DriverPropertyInfo; import java.sql.SQLException; import java.util.ArrayList; @@ -593,8 +593,8 @@ public HttpClientSettingsKey getHttpClientKey() throws SnowflakeSQLException { userAgentSuffix, gzipDisabled); // There are 2 possible parameters for non proxy hosts that can be combined into 1 - String combinedNonProxyHosts = Strings.isNullOrEmpty(nonProxyHosts) ? "" : nonProxyHosts; - if (!Strings.isNullOrEmpty(noProxy)) { + String combinedNonProxyHosts = isNullOrEmpty(nonProxyHosts) ? "" : nonProxyHosts; + if (!isNullOrEmpty(noProxy)) { combinedNonProxyHosts += combinedNonProxyHosts.length() == 0 ? "" : "|"; combinedNonProxyHosts += noProxy; } @@ -602,18 +602,18 @@ public HttpClientSettingsKey getHttpClientKey() throws SnowflakeSQLException { // It is possible that a user can have both http and https proxies specified in the JVM // parameters. The default protocol is http. String proxyProtocol = "http"; - if (!Strings.isNullOrEmpty(httpProxyProtocol)) { + if (!isNullOrEmpty(httpProxyProtocol)) { proxyProtocol = httpProxyProtocol; - } else if (!Strings.isNullOrEmpty(httpsProxyHost) - && !Strings.isNullOrEmpty(httpsProxyPort) - && Strings.isNullOrEmpty(httpProxyHost) - && Strings.isNullOrEmpty(httpProxyPort)) { + } else if (!isNullOrEmpty(httpsProxyHost) + && !isNullOrEmpty(httpsProxyPort) + && isNullOrEmpty(httpProxyHost) + && isNullOrEmpty(httpProxyPort)) { proxyProtocol = "https"; } if (proxyProtocol.equals("https") - && !Strings.isNullOrEmpty(httpsProxyHost) - && !Strings.isNullOrEmpty(httpsProxyPort)) { + && !isNullOrEmpty(httpsProxyHost) + && !isNullOrEmpty(httpsProxyPort)) { logger.debug("Using https proxy configuration from JVM parameters"); int proxyPort; try { @@ -635,8 +635,8 @@ public HttpClientSettingsKey getHttpClientKey() throws SnowflakeSQLException { gzipDisabled); logHttpClientInitInfo(ocspAndProxyAndGzipKey); } else if (proxyProtocol.equals("http") - && !Strings.isNullOrEmpty(httpProxyHost) - && !Strings.isNullOrEmpty(httpProxyPort)) { + && !isNullOrEmpty(httpProxyHost) + && !isNullOrEmpty(httpProxyPort)) { logger.debug("Using http proxy configuration from JVM parameters"); int proxyPort; try { @@ -703,10 +703,10 @@ private void logHttpClientInitInfo(HttpClientSettingsKey key) { public void unsetInvalidProxyHostAndPort() { // If proxyHost and proxyPort are used without http or https unset them, so they are not used // later by the ProxySelector. - if (!Strings.isNullOrEmpty(systemGetProperty("proxyHost"))) { + if (!isNullOrEmpty(systemGetProperty("proxyHost"))) { System.clearProperty("proxyHost"); } - if (!Strings.isNullOrEmpty(systemGetProperty("proxyPort"))) { + if (!isNullOrEmpty(systemGetProperty("proxyPort"))) { System.clearProperty("proxyPort"); } } @@ -1145,7 +1145,7 @@ public String getDatabase() { } public void setDatabase(String database) { - if (!Strings.isNullOrEmpty(database)) { + if (!isNullOrEmpty(database)) { this.database = database; } } @@ -1155,7 +1155,7 @@ public String getSchema() { } public void setSchema(String schema) { - if (!Strings.isNullOrEmpty(schema)) { + if (!isNullOrEmpty(schema)) { this.schema = schema; } } @@ -1173,7 +1173,7 @@ public String getWarehouse() { } public void setWarehouse(String warehouse) { - if (!Strings.isNullOrEmpty(warehouse)) { + if (!isNullOrEmpty(warehouse)) { this.warehouse = warehouse; } } diff --git a/src/main/java/net/snowflake/client/core/SFSession.java b/src/main/java/net/snowflake/client/core/SFSession.java index eafe2263d8..acec6b3f33 100644 --- a/src/main/java/net/snowflake/client/core/SFSession.java +++ b/src/main/java/net/snowflake/client/core/SFSession.java @@ -4,11 +4,11 @@ import static net.snowflake.client.core.QueryStatus.isAnError; import static net.snowflake.client.core.QueryStatus.isStillRunning; import static net.snowflake.client.core.SFLoginInput.getBooleanValue; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Strings; import java.security.PrivateKey; import java.sql.DriverPropertyInfo; import java.sql.SQLException; @@ -326,7 +326,7 @@ else if (isAnError(result)) { // if an error message has been provided, set appropriate error message. // This should override the default error message displayed when there is // an error with no code. - if (!Strings.isNullOrEmpty(errorMessage) && !errorMessage.equalsIgnoreCase("null")) { + if (!isNullOrEmpty(errorMessage) && !errorMessage.equalsIgnoreCase("null")) { result.setErrorMessage(errorMessage); } else { result.setErrorMessage("No error reported"); @@ -875,7 +875,7 @@ boolean isExternalbrowserOrOAuthFullFlowAuthenticator() { boolean isOKTAAuthenticator() { Map connectionPropertiesMap = getConnectionPropertiesMap(); String authenticator = (String) connectionPropertiesMap.get(SFSessionProperty.AUTHENTICATOR); - return !Strings.isNullOrEmpty(authenticator) && authenticator.startsWith("https://"); + return !isNullOrEmpty(authenticator) && authenticator.startsWith("https://"); } /** @@ -1040,7 +1040,7 @@ public Void call() throws SQLException { /** Start heartbeat for this session */ protected void startHeartbeatForThisSession() { - if (getEnableHeartbeat() && !Strings.isNullOrEmpty(masterToken)) { + if (getEnableHeartbeat() && !isNullOrEmpty(masterToken)) { logger.debug( "Session {} start heartbeat, master token validity: {} s", getSessionId(), @@ -1055,7 +1055,7 @@ protected void startHeartbeatForThisSession() { /** Stop heartbeat for this session */ protected void stopHeartbeatForThisSession() { - if (getEnableHeartbeat() && !Strings.isNullOrEmpty(masterToken)) { + if (getEnableHeartbeat() && !isNullOrEmpty(masterToken)) { logger.debug("Session {} stop heartbeat", getSessionId()); HeartbeatBackground.getInstance().removeSession(this); @@ -1298,12 +1298,12 @@ private void performSanityCheckOnProperties() throws SFException { || isUsernamePasswordMFAAuthenticator()) { // userName and password are expected for both Snowflake and Okta. String userName = (String) connectionPropertiesMap.get(SFSessionProperty.USER); - if (Strings.isNullOrEmpty(userName)) { + if (isNullOrEmpty(userName)) { throw new SFException(ErrorCode.MISSING_USERNAME); } String password = (String) connectionPropertiesMap.get(SFSessionProperty.PASSWORD); - if (Strings.isNullOrEmpty(password)) { + if (isNullOrEmpty(password)) { throw new SFException(ErrorCode.MISSING_PASSWORD); } @@ -1335,13 +1335,13 @@ public List checkProperties() { if (isSnowflakeAuthenticator() || isOKTAAuthenticator()) { // userName and password are expected for both Snowflake and Okta. String userName = (String) connectionPropertiesMap.get(SFSessionProperty.USER); - if (Strings.isNullOrEmpty(userName)) { + if (isNullOrEmpty(userName)) { missingProperties.add( addNewDriverProperty(SFSessionProperty.USER.getPropertyKey(), "username for account")); } String password = (String) connectionPropertiesMap.get(SFSessionProperty.PASSWORD); - if (Strings.isNullOrEmpty(password)) { + if (isNullOrEmpty(password)) { missingProperties.add( addNewDriverProperty( SFSessionProperty.PASSWORD.getPropertyKey(), "password for " + "account")); diff --git a/src/main/java/net/snowflake/client/core/SFTrustManager.java b/src/main/java/net/snowflake/client/core/SFTrustManager.java index bca17a24d5..aa4b84796b 100644 --- a/src/main/java/net/snowflake/client/core/SFTrustManager.java +++ b/src/main/java/net/snowflake/client/core/SFTrustManager.java @@ -1,5 +1,6 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetEnv; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; @@ -10,7 +11,6 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeType; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.base.Strings; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -577,8 +577,8 @@ private static CloseableHttpClient getHttpClient(int timeout) { Protocol.HTTP, proxySettingsKey.getNonProxyHosts()); httpClientBuilder = httpClientBuilder.setProxy(proxy).setRoutePlanner(sdkProxyRoutePlanner); - if (!Strings.isNullOrEmpty(proxySettingsKey.getProxyUser()) - && !Strings.isNullOrEmpty(proxySettingsKey.getProxyPassword())) { + if (!isNullOrEmpty(proxySettingsKey.getProxyUser()) + && !isNullOrEmpty(proxySettingsKey.getProxyPassword())) { Credentials credentials = new UsernamePasswordCredentials( proxySettingsKey.getProxyUser(), proxySettingsKey.getProxyPassword()); @@ -1106,7 +1106,7 @@ private OCSPResp fetchOcspResponse( String urlEncodedOCSPReq = URLUtil.urlEncode(ocspReqDerBase64); if (SF_OCSP_RESPONSE_CACHE_SERVER_RETRY_URL_PATTERN != null) { URL ocspUrl = new URL(ocspUrlStr); - if (!Strings.isNullOrEmpty(ocspUrl.getPath())) { + if (!isNullOrEmpty(ocspUrl.getPath())) { path = ocspUrl.getPath(); } if (ocspUrl.getPort() > 0) { diff --git a/src/main/java/net/snowflake/client/core/SecureStorageAppleManager.java b/src/main/java/net/snowflake/client/core/SecureStorageAppleManager.java index 8a95eb99f5..2108d7d2f6 100644 --- a/src/main/java/net/snowflake/client/core/SecureStorageAppleManager.java +++ b/src/main/java/net/snowflake/client/core/SecureStorageAppleManager.java @@ -1,6 +1,7 @@ package net.snowflake.client.core; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Pointer; @@ -23,7 +24,7 @@ public static SecureStorageAppleManager builder() { } public SecureStorageStatus setCredential(String host, String user, String type, String cred) { - if (Strings.isNullOrEmpty(cred)) { + if (isNullOrEmpty(cred)) { logger.debug("No credential provided", false); return SecureStorageStatus.SUCCESS; } diff --git a/src/main/java/net/snowflake/client/core/SecureStorageLinuxManager.java b/src/main/java/net/snowflake/client/core/SecureStorageLinuxManager.java index c99224076d..6693d0733d 100644 --- a/src/main/java/net/snowflake/client/core/SecureStorageLinuxManager.java +++ b/src/main/java/net/snowflake/client/core/SecureStorageLinuxManager.java @@ -1,11 +1,11 @@ package net.snowflake.client.core; import static net.snowflake.client.core.StmtUtil.mapper; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.JsonNodeType; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.base.Strings; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -49,7 +49,7 @@ public static SecureStorageLinuxManager getInstance() { @Override public synchronized SecureStorageStatus setCredential( String host, String user, String type, String token) { - if (Strings.isNullOrEmpty(token)) { + if (isNullOrEmpty(token)) { logger.warn("No token provided", false); return SecureStorageStatus.SUCCESS; } diff --git a/src/main/java/net/snowflake/client/core/SecureStorageWindowsManager.java b/src/main/java/net/snowflake/client/core/SecureStorageWindowsManager.java index 0d374b73a4..a6dc011f53 100644 --- a/src/main/java/net/snowflake/client/core/SecureStorageWindowsManager.java +++ b/src/main/java/net/snowflake/client/core/SecureStorageWindowsManager.java @@ -1,6 +1,7 @@ package net.snowflake.client.core; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.sun.jna.Memory; import com.sun.jna.Native; import com.sun.jna.Pointer; @@ -34,7 +35,7 @@ public static SecureStorageWindowsManager builder() { } public SecureStorageStatus setCredential(String host, String user, String type, String token) { - if (Strings.isNullOrEmpty(token)) { + if (isNullOrEmpty(token)) { logger.warn("No token provided", false); return SecureStorageStatus.SUCCESS; } diff --git a/src/main/java/net/snowflake/client/core/SessionUtil.java b/src/main/java/net/snowflake/client/core/SessionUtil.java index 275ad5a5a6..ba10e7b3d2 100644 --- a/src/main/java/net/snowflake/client/core/SessionUtil.java +++ b/src/main/java/net/snowflake/client/core/SessionUtil.java @@ -1,14 +1,13 @@ package net.snowflake.client.core; import static net.snowflake.client.core.SFTrustManager.resetOCSPResponseCacherServerURL; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetEnv; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; -import com.amazonaws.util.StringUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; @@ -445,7 +444,7 @@ private static void convertSessionParameterStringValueToBooleanIfGiven( } private static void readCachedCredentialsIfPossible(SFLoginInput loginInput) throws SFException { - if (!StringUtils.isNullOrEmpty(loginInput.getUserName())) { + if (!isNullOrEmpty(loginInput.getUserName())) { if (asBoolean(loginInput.getSessionParameters().get(CLIENT_STORE_TEMPORARY_CREDENTIAL))) { CredentialManager.fillCachedIdToken(loginInput); CredentialManager.fillCachedOAuthRefreshToken(loginInput); @@ -520,7 +519,7 @@ static SFLoginOutput newSession( loginInput.getLoginTimeout(), loginInput.getAuthTimeout(), loginInput.getOCSPMode(), - Strings.isNullOrEmpty(oktaUsername) ? "" : ", okta username: " + oktaUsername); + isNullOrEmpty(oktaUsername) ? "" : ", okta username: " + oktaUsername); try { @@ -1094,14 +1093,14 @@ private static void clearAccessTokenCache(SFLoginInput loginInput) throws SFExce } private static void setServiceNameHeader(SFLoginInput loginInput, HttpPost postRequest) { - if (!Strings.isNullOrEmpty(loginInput.getServiceName())) { + if (!isNullOrEmpty(loginInput.getServiceName())) { // service name is used to route a request to appropriate cluster. postRequest.setHeader(SF_HEADER_SERVICE_NAME, loginInput.getServiceName()); } } private static String nullStringAsEmptyString(String value) { - if (Strings.isNullOrEmpty(value) || "null".equals(value)) { + if (isNullOrEmpty(value) || "null".equals(value)) { return ""; } return value; @@ -2025,7 +2024,7 @@ private static StringEntity prepareFederatedFlowStep1RequestInput(SFLoginInput l private static void setFederatedFlowStep3PostRequestAuthData( HttpPost postRequest, SFLoginInput loginInput) throws SnowflakeSQLException { String userName = - Strings.isNullOrEmpty(loginInput.getOKTAUserName()) + isNullOrEmpty(loginInput.getOKTAUserName()) ? loginInput.getUserName() : loginInput.getOKTAUserName(); try { diff --git a/src/main/java/net/snowflake/client/core/SessionUtilExternalBrowser.java b/src/main/java/net/snowflake/client/core/SessionUtilExternalBrowser.java index 64436359c7..082f392b15 100644 --- a/src/main/java/net/snowflake/client/core/SessionUtilExternalBrowser.java +++ b/src/main/java/net/snowflake/client/core/SessionUtilExternalBrowser.java @@ -1,8 +1,9 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; import java.awt.Desktop; import java.io.BufferedReader; import java.io.IOException; @@ -364,9 +365,9 @@ private boolean processOptions(String[] rets, Socket socket) throws IOException if (userAgent != null) { logger.debug("{}", userAgent); } - if (Strings.isNullOrEmpty(targetLine) - || Strings.isNullOrEmpty(requestedHeaderLine) - || Strings.isNullOrEmpty(this.origin)) { + if (isNullOrEmpty(targetLine) + || isNullOrEmpty(requestedHeaderLine) + || isNullOrEmpty(this.origin)) { return false; } returnToBrowserForOptions(requestedHeaderLine, socket); diff --git a/src/main/java/net/snowflake/client/core/SessionUtilKeyPair.java b/src/main/java/net/snowflake/client/core/SessionUtilKeyPair.java index 61800c4ced..8ed7123700 100644 --- a/src/main/java/net/snowflake/client/core/SessionUtilKeyPair.java +++ b/src/main/java/net/snowflake/client/core/SessionUtilKeyPair.java @@ -1,8 +1,8 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetEnv; -import com.google.common.base.Strings; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSHeader; @@ -121,17 +121,17 @@ class SessionUtilKeyPair { private static void ensurePrivateKeyProvidedInOnlyOneProperty( PrivateKey privateKey, String privateKeyFile, String privateKeyBase64) throws SFException { - if (!Strings.isNullOrEmpty(privateKeyFile) && privateKey != null) { + if (!isNullOrEmpty(privateKeyFile) && privateKey != null) { throw new SFException( ErrorCode.INVALID_OR_UNSUPPORTED_PRIVATE_KEY, "Cannot have both private key object and private key file."); } - if (!Strings.isNullOrEmpty(privateKeyBase64) && !Strings.isNullOrEmpty(privateKeyFile)) { + if (!isNullOrEmpty(privateKeyBase64) && !isNullOrEmpty(privateKeyFile)) { throw new SFException( ErrorCode.INVALID_OR_UNSUPPORTED_PRIVATE_KEY, "Cannot have both private key file and private key base64 string value."); } - if (!Strings.isNullOrEmpty(privateKeyBase64) && privateKey != null) { + if (!isNullOrEmpty(privateKeyBase64) && privateKey != null) { throw new SFException( ErrorCode.INVALID_OR_UNSUPPORTED_PRIVATE_KEY, "Cannot have both private key object and private key base64 string value."); @@ -141,11 +141,11 @@ private static void ensurePrivateKeyProvidedInOnlyOneProperty( private PrivateKey buildPrivateKey( PrivateKey privateKey, String privateKeyFile, String privateKeyBase64, String privateKeyPwd) throws SFException { - if (!Strings.isNullOrEmpty(privateKeyBase64)) { + if (!isNullOrEmpty(privateKeyBase64)) { logger.trace("Reading private key from base64 string"); return extractPrivateKeyFromBase64(privateKeyBase64, privateKeyPwd); } - if (!Strings.isNullOrEmpty(privateKeyFile)) { + if (!isNullOrEmpty(privateKeyFile)) { logger.trace("Reading private key from file"); return extractPrivateKeyFromFile(privateKeyFile, privateKeyPwd); } @@ -307,7 +307,7 @@ private PrivateKey extractPrivateKeyWithJdk(byte[] privateKeyFileBytes, String p throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException { logger.trace("Extracting private key using JDK"); String privateKeyContent = new String(privateKeyFileBytes, StandardCharsets.UTF_8); - if (Strings.isNullOrEmpty(privateKeyPwd)) { + if (isNullOrEmpty(privateKeyPwd)) { // unencrypted private key file return generatePrivateKey(false, privateKeyContent, privateKeyPwd); } else { diff --git a/src/main/java/net/snowflake/client/core/StmtUtil.java b/src/main/java/net/snowflake/client/core/StmtUtil.java index 80ab97b0bb..cde909a18e 100644 --- a/src/main/java/net/snowflake/client/core/StmtUtil.java +++ b/src/main/java/net/snowflake/client/core/StmtUtil.java @@ -1,8 +1,9 @@ package net.snowflake.client.core; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URISyntaxException; @@ -419,7 +420,7 @@ public static StmtOutput execute(StmtInput stmtInput, ExecTimeTelemetryData exec } private static void setServiceNameHeader(StmtInput stmtInput, HttpRequestBase httpRequest) { - if (!Strings.isNullOrEmpty(stmtInput.serviceName)) { + if (!isNullOrEmpty(stmtInput.serviceName)) { httpRequest.setHeader(SessionUtil.SF_HEADER_SERVICE_NAME, stmtInput.serviceName); } } diff --git a/src/main/java/net/snowflake/client/core/auth/oauth/AuthorizationCodeRedirectRequestHandler.java b/src/main/java/net/snowflake/client/core/auth/oauth/AuthorizationCodeRedirectRequestHandler.java index e518d6762c..f19825650f 100644 --- a/src/main/java/net/snowflake/client/core/auth/oauth/AuthorizationCodeRedirectRequestHandler.java +++ b/src/main/java/net/snowflake/client/core/auth/oauth/AuthorizationCodeRedirectRequestHandler.java @@ -1,6 +1,7 @@ package net.snowflake.client.core.auth.oauth; -import com.amazonaws.util.StringUtils; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.google.common.html.HtmlEscapers; import com.nimbusds.oauth2.sdk.id.State; import java.util.Map; @@ -38,7 +39,7 @@ static String handleRedirectRequest( response = "Authorization error: invalid authorization request redirection state"; } else { String authorizationCode = urlParams.get("code"); - if (!StringUtils.isNullOrEmpty(authorizationCode)) { + if (!isNullOrEmpty(authorizationCode)) { logger.debug("Received authorization code on redirect URI"); response = "Authorization completed successfully."; authorizationCodeFuture.complete(authorizationCode); diff --git a/src/main/java/net/snowflake/client/core/auth/oauth/OAuthAccessTokenProviderFactory.java b/src/main/java/net/snowflake/client/core/auth/oauth/OAuthAccessTokenProviderFactory.java index 18cc9eaaec..6ca0318ef0 100644 --- a/src/main/java/net/snowflake/client/core/auth/oauth/OAuthAccessTokenProviderFactory.java +++ b/src/main/java/net/snowflake/client/core/auth/oauth/OAuthAccessTokenProviderFactory.java @@ -1,6 +1,7 @@ package net.snowflake.client.core.auth.oauth; -import com.amazonaws.util.StringUtils; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import java.net.URI; import java.util.Arrays; import java.util.HashSet; @@ -61,19 +62,15 @@ private void validateAuthorizationAndTokenEndpointsIfSpecified(SFLoginInput logi throws SFException { String authorizationEndpoint = loginInput.getOauthLoginInput().getAuthorizationUrl(); String tokenEndpoint = loginInput.getOauthLoginInput().getTokenRequestUrl(); - if ((!StringUtils.isNullOrEmpty(authorizationEndpoint) - && StringUtils.isNullOrEmpty(tokenEndpoint)) - || (StringUtils.isNullOrEmpty(authorizationEndpoint) - && !StringUtils.isNullOrEmpty(tokenEndpoint))) { + if ((!isNullOrEmpty(authorizationEndpoint) && isNullOrEmpty(tokenEndpoint)) + || (isNullOrEmpty(authorizationEndpoint) && !isNullOrEmpty(tokenEndpoint))) { throw new SFException( ErrorCode.OAUTH_AUTHORIZATION_CODE_FLOW_ERROR, "For OAUTH_AUTHORIZATION_CODE authentication with external IdP, both oauthAuthorizationUrl and oauthTokenRequestUrl must be specified"); - } else if (!StringUtils.isNullOrEmpty(authorizationEndpoint) - && !StringUtils.isNullOrEmpty(tokenEndpoint)) { + } else if (!isNullOrEmpty(authorizationEndpoint) && !isNullOrEmpty(tokenEndpoint)) { URI authorizationUrl = URI.create(authorizationEndpoint); URI tokenUrl = URI.create(tokenEndpoint); - if (StringUtils.isNullOrEmpty(authorizationUrl.getHost()) - || StringUtils.isNullOrEmpty(tokenUrl.getHost())) { + if (isNullOrEmpty(authorizationUrl.getHost()) || isNullOrEmpty(tokenUrl.getHost())) { throw new SFException( ErrorCode.OAUTH_AUTHORIZATION_CODE_FLOW_ERROR, String.format( diff --git a/src/main/java/net/snowflake/client/core/auth/oauth/OAuthUtil.java b/src/main/java/net/snowflake/client/core/auth/oauth/OAuthUtil.java index 6475f84630..1f51903c1f 100644 --- a/src/main/java/net/snowflake/client/core/auth/oauth/OAuthUtil.java +++ b/src/main/java/net/snowflake/client/core/auth/oauth/OAuthUtil.java @@ -2,8 +2,8 @@ import static net.snowflake.client.core.auth.oauth.OAuthAuthorizationCodeAccessTokenProvider.DEFAULT_REDIRECT_HOST; import static net.snowflake.client.core.auth.oauth.OAuthAuthorizationCodeAccessTokenProvider.DEFAULT_REDIRECT_URI_ENDPOINT; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; -import com.amazonaws.util.StringUtils; import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.oauth2.sdk.http.HTTPRequest; import java.io.IOException; @@ -31,7 +31,7 @@ class OAuthUtil { static URI getTokenRequestUrl(SFOauthLoginInput oauthLoginInput, String serverUrl) { URI uri = - !StringUtils.isNullOrEmpty(oauthLoginInput.getTokenRequestUrl()) + !isNullOrEmpty(oauthLoginInput.getTokenRequestUrl()) ? URI.create(oauthLoginInput.getTokenRequestUrl()) : URI.create(serverUrl + SNOWFLAKE_TOKEN_REQUEST_ENDPOINT); return uri.normalize(); @@ -48,21 +48,21 @@ static HttpRequestBase convertToBaseRequest(HTTPRequest request) { static URI getAuthorizationUrl(SFOauthLoginInput oauthLoginInput, String serverUrl) { URI uri = - !StringUtils.isNullOrEmpty(oauthLoginInput.getAuthorizationUrl()) + !isNullOrEmpty(oauthLoginInput.getAuthorizationUrl()) ? URI.create(oauthLoginInput.getAuthorizationUrl()) : URI.create(serverUrl + SNOWFLAKE_AUTHORIZE_ENDPOINT); return uri.normalize(); } static String getScope(SFOauthLoginInput oauthLoginInput, String role) { - return (!StringUtils.isNullOrEmpty(oauthLoginInput.getScope())) + return (!isNullOrEmpty(oauthLoginInput.getScope())) ? oauthLoginInput.getScope() : DEFAULT_SESSION_ROLE_SCOPE_PREFIX + role; } static URI buildRedirectUri(SFOauthLoginInput oauthLoginInput) throws IOException { String redirectUri = - !StringUtils.isNullOrEmpty(oauthLoginInput.getRedirectUri()) + !isNullOrEmpty(oauthLoginInput.getRedirectUri()) ? oauthLoginInput.getRedirectUri() : createDefaultRedirectUri(); return URI.create(redirectUri); diff --git a/src/main/java/net/snowflake/client/jdbc/SFAsyncResultSet.java b/src/main/java/net/snowflake/client/jdbc/SFAsyncResultSet.java index 692e907639..6e7284d2a8 100644 --- a/src/main/java/net/snowflake/client/jdbc/SFAsyncResultSet.java +++ b/src/main/java/net/snowflake/client/jdbc/SFAsyncResultSet.java @@ -1,8 +1,8 @@ package net.snowflake.client.jdbc; import static net.snowflake.client.core.QueryStatus.NO_DATA; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; -import com.google.api.client.util.Strings; import java.math.BigDecimal; import java.sql.Date; import java.sql.ResultSet; @@ -151,7 +151,7 @@ private void getRealResults() throws SQLException { // exception if (!QueryStatus.isStillRunning(qs) && qs.getValue() != QueryStatus.SUCCESS.getValue()) { String errorMessage = qs.getErrorMessage(); - if (Strings.isNullOrEmpty(errorMessage)) { + if (isNullOrEmpty(errorMessage)) { errorMessage = "No error message available"; } throw new SQLException( diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeBasicDataSource.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeBasicDataSource.java index e74fb2c7ef..c354dd66e9 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeBasicDataSource.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeBasicDataSource.java @@ -1,6 +1,7 @@ package net.snowflake.client.jdbc; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; @@ -238,7 +239,7 @@ public void setPrivateKey(PrivateKey privateKey) { public void setPrivateKeyFile(String location, String password) { this.setAuthenticator(AUTHENTICATOR_SNOWFLAKE_JWT); this.properties.put(SFSessionProperty.PRIVATE_KEY_FILE.getPropertyKey(), location); - if (!Strings.isNullOrEmpty(password)) { + if (!isNullOrEmpty(password)) { this.properties.put(SFSessionProperty.PRIVATE_KEY_PWD.getPropertyKey(), password); } } @@ -246,7 +247,7 @@ public void setPrivateKeyFile(String location, String password) { public void setPrivateKeyBase64(String privateKeyBase64, String password) { this.setAuthenticator(AUTHENTICATOR_SNOWFLAKE_JWT); this.properties.put(SFSessionProperty.PRIVATE_KEY_BASE64.getPropertyKey(), privateKeyBase64); - if (!Strings.isNullOrEmpty(password)) { + if (!isNullOrEmpty(password)) { this.properties.put(SFSessionProperty.PRIVATE_KEY_PWD.getPropertyKey(), password); } } diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeColumnMetadata.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeColumnMetadata.java index 2cfe2b4002..aea8b66842 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeColumnMetadata.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeColumnMetadata.java @@ -2,10 +2,10 @@ import static net.snowflake.client.jdbc.SnowflakeUtil.getFieldMetadata; import static net.snowflake.client.jdbc.SnowflakeUtil.getSnowflakeType; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.isVectorType; import com.fasterxml.jackson.databind.JsonNode; -import com.google.common.base.Strings; import java.io.Serializable; import java.sql.Types; import java.util.List; @@ -135,8 +135,7 @@ public SnowflakeColumnMetadata( JsonNode udtOutputType = colNode.path("outputType"); JsonNode extColTypeNameNode = colNode.path("extTypeName"); String extColTypeName = null; - if (!extColTypeNameNode.isMissingNode() - && !Strings.isNullOrEmpty(extColTypeNameNode.asText())) { + if (!extColTypeNameNode.isMissingNode() && !isNullOrEmpty(extColTypeNameNode.asText())) { extColTypeName = extColTypeNameNode.asText(); } String internalColTypeName = colNode.path("type").asText(); diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectString.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectString.java index 26b29eb842..ab018bd147 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectString.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectString.java @@ -1,6 +1,7 @@ package net.snowflake.client.jdbc; -import com.google.common.base.Strings; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.net.URI; @@ -73,7 +74,7 @@ public static SnowflakeConnectString parse(String url, Properties info) { logger.debug("Connect strings must have a valid scheme: 'snowflake' or 'http' or 'https'"); return INVALID_CONNECT_STRING; } - if (Strings.isNullOrEmpty(host)) { + if (isNullOrEmpty(host)) { logger.debug("Connect strings must have a valid host: found null or empty host"); return INVALID_CONNECT_STRING; } @@ -81,12 +82,12 @@ public static SnowflakeConnectString parse(String url, Properties info) { port = 443; } String path = uri.getPath(); - if (!Strings.isNullOrEmpty(path) && !"/".equals(path)) { + if (!isNullOrEmpty(path) && !"/".equals(path)) { logger.debug("Connect strings must have no path: expecting empty or null or '/'"); return INVALID_CONNECT_STRING; } String account = null; - if (!Strings.isNullOrEmpty(queryData)) { + if (!isNullOrEmpty(queryData)) { String[] params = queryData.split("&"); for (String p : params) { String[] keyVals = p.split("="); @@ -137,7 +138,7 @@ public static SnowflakeConnectString parse(String url, Properties info) { parameters.put("ACCOUNT", account); } - if (Strings.isNullOrEmpty(account)) { + if (isNullOrEmpty(account)) { logger.debug("Connect strings must contain account identifier"); return INVALID_CONNECT_STRING; } @@ -222,7 +223,7 @@ public String toString(boolean maskSensitiveValue) { public boolean isValid() { // invalid if host name is null or empty - return !Strings.isNullOrEmpty(host); + return !isNullOrEmpty(host); } public String getScheme() { diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectionV1.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectionV1.java index 82f884ec59..158b70e4c2 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectionV1.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeConnectionV1.java @@ -2,8 +2,8 @@ import static net.snowflake.client.jdbc.ErrorCode.FEATURE_UNSUPPORTED; import static net.snowflake.client.jdbc.ErrorCode.INVALID_CONNECT_STRING; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; -import com.google.common.base.Strings; import java.io.IOException; import java.io.InputStream; import java.sql.Array; @@ -986,7 +986,7 @@ public InputStream downloadStream(String stageName, String sourceFileName, boole logger.debug( "Download data to stream: stageName={}" + ", sourceFileName={}", stageName, sourceFileName); - if (Strings.isNullOrEmpty(stageName)) { + if (isNullOrEmpty(stageName)) { throw new SnowflakeSQLLoggedException( sfSession, ErrorCode.INTERNAL_ERROR.getMessageCode(), @@ -994,7 +994,7 @@ public InputStream downloadStream(String stageName, String sourceFileName, boole "stage name is null or empty"); } - if (Strings.isNullOrEmpty(sourceFileName)) { + if (isNullOrEmpty(sourceFileName)) { throw new SnowflakeSQLLoggedException( sfSession, ErrorCode.INTERNAL_ERROR.getMessageCode(), diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeDatabaseMetaData.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeDatabaseMetaData.java index e1c75a8313..026f119103 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeDatabaseMetaData.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeDatabaseMetaData.java @@ -14,11 +14,11 @@ import static net.snowflake.client.jdbc.DBMetadataResultSetMetadata.GET_TABLES; import static net.snowflake.client.jdbc.DBMetadataResultSetMetadata.GET_TABLE_PRIVILEGES; import static net.snowflake.client.jdbc.SnowflakeType.convertStringToType; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.base.Strings; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; @@ -1457,17 +1457,17 @@ private String getFirstResultSetCommand( procedures or functions */ private String getSecondResultSetCommand( String catalog, String schemaPattern, String name, String type) { - if (Strings.isNullOrEmpty(name)) { + if (isNullOrEmpty(name)) { return ""; } String procedureCols = name.substring(name.indexOf("("), name.indexOf(" RETURN")); String quotedName = "\"" + name.substring(0, name.indexOf("(")) + "\""; String procedureName = quotedName + procedureCols; String showProcedureColCommand; - if (!Strings.isNullOrEmpty(catalog) && !Strings.isNullOrEmpty(schemaPattern)) { + if (!isNullOrEmpty(catalog) && !isNullOrEmpty(schemaPattern)) { showProcedureColCommand = "desc " + type + " " + catalog + "." + schemaPattern + "." + procedureName; - } else if (!Strings.isNullOrEmpty(schemaPattern)) { + } else if (!isNullOrEmpty(schemaPattern)) { showProcedureColCommand = "desc " + type + " " + schemaPattern + "." + procedureName; } else { showProcedureColCommand = "desc " + type + " " + procedureName; @@ -3677,7 +3677,7 @@ private ResultSet executeAndReturnEmptyResultIfNotFound( Statement statement, String sql, DBMetadataResultSetMetadata metadataType) throws SQLException { ResultSet resultSet; - if (Strings.isNullOrEmpty(sql)) { + if (isNullOrEmpty(sql)) { return SnowflakeDatabaseMetaDataResultSet.getEmptyResultSet(metadataType, statement); } try { diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferAgent.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferAgent.java index 98feb55bfa..c4adb9b637 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferAgent.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferAgent.java @@ -1,13 +1,13 @@ package net.snowflake.client.jdbc; import static net.snowflake.client.core.Constants.NO_SPACE_LEFT_ON_DEVICE_ERR; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; import com.google.common.io.ByteStreams; import com.google.common.io.CountingOutputStream; import java.io.File; @@ -1175,7 +1175,7 @@ static StageInfo getStageInfo(JsonNode jsonNode, SFSession session) throws Snowf JsonNode presignedUrlNode = jsonNode.path("data").path("stageInfo").path("presignedUrl"); if (!presignedUrlNode.isMissingNode()) { String presignedUrl = presignedUrlNode.asText(); - if (!Strings.isNullOrEmpty(presignedUrl)) { + if (!isNullOrEmpty(presignedUrl)) { stageInfo.setPresignedUrl(presignedUrl); } } @@ -3061,7 +3061,7 @@ static Optional mimeTypeToCompressionType(String mimeTypeSt } else { subType = mimeTypeStr.substring(slashIndex + 1, semiColonIndex); } - if (Strings.isNullOrEmpty(subType)) { + if (isNullOrEmpty(subType)) { return Optional.empty(); } return FileCompressionType.lookupByMimeSubType(subType); diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferMetadataV1.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferMetadataV1.java index 7e4850c907..f12e847a2e 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferMetadataV1.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeFileTransferMetadataV1.java @@ -1,7 +1,8 @@ package net.snowflake.client.jdbc; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Strings; import java.io.Serializable; import net.snowflake.client.jdbc.SFBaseFileTransferAgent.CommandType; import net.snowflake.client.jdbc.cloud.storage.StageInfo; @@ -49,7 +50,7 @@ public SnowflakeFileTransferMetadataV1( public boolean isForOneFile() { // The presigned url is for one file and the down-scoped token can be used for multiple files. return stageInfo.getStageType() == StageInfo.StageType.GCS - && !Strings.isNullOrEmpty(presignedUrl) + && !isNullOrEmpty(presignedUrl) && !"null".equalsIgnoreCase(presignedUrl); } diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeSQLLoggedException.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeSQLLoggedException.java index 35ffd3b400..1955d783dd 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeSQLLoggedException.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeSQLLoggedException.java @@ -1,8 +1,9 @@ package net.snowflake.client.jdbc; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.api.client.util.Strings; import java.io.PrintWriter; import java.io.StringWriter; import java.sql.SQLException; @@ -131,10 +132,10 @@ static JSONObject createOOBValue(String queryId, String SQLState, int vendorCode oobValue.put("type", TelemetryField.SQL_EXCEPTION.toString()); oobValue.put("DriverType", LoginInfoDTO.SF_JDBC_APP_ID); oobValue.put("DriverVersion", SnowflakeDriver.implementVersion); - if (!Strings.isNullOrEmpty(queryId)) { + if (!isNullOrEmpty(queryId)) { oobValue.put("QueryID", queryId); } - if (!Strings.isNullOrEmpty(SQLState)) { + if (!isNullOrEmpty(SQLState)) { oobValue.put("SQLState", SQLState); } if (vendorCode != NO_VENDOR_CODE) { @@ -156,10 +157,10 @@ static ObjectNode createIBValue(String queryId, String SQLState, int vendorCode) ibValue.put("type", TelemetryField.SQL_EXCEPTION.toString()); ibValue.put("DriverType", LoginInfoDTO.SF_JDBC_APP_ID); ibValue.put("DriverVersion", SnowflakeDriver.implementVersion); - if (!Strings.isNullOrEmpty(queryId)) { + if (!isNullOrEmpty(queryId)) { ibValue.put("QueryID", queryId); } - if (!Strings.isNullOrEmpty(SQLState)) { + if (!isNullOrEmpty(SQLState)) { ibValue.put("SQLState", SQLState); } if (vendorCode != NO_VENDOR_CODE) { diff --git a/src/main/java/net/snowflake/client/jdbc/SnowflakeUtil.java b/src/main/java/net/snowflake/client/jdbc/SnowflakeUtil.java index fb65e4a250..12276d9709 100644 --- a/src/main/java/net/snowflake/client/jdbc/SnowflakeUtil.java +++ b/src/main/java/net/snowflake/client/jdbc/SnowflakeUtil.java @@ -3,12 +3,12 @@ import static java.util.Arrays.stream; import static net.snowflake.client.core.Constants.OAUTH_ACCESS_TOKEN_EXPIRED_GS_CODE; import static net.snowflake.client.jdbc.SnowflakeType.GEOGRAPHY; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; -import com.google.common.base.Strings; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -365,8 +365,7 @@ static List createFieldsMetadata( JsonNode outputType = node.path("outputType"); JsonNode extColTypeNameNode = node.path("extTypeName"); String extColTypeName = null; - if (!extColTypeNameNode.isMissingNode() - && !Strings.isNullOrEmpty(extColTypeNameNode.asText())) { + if (!extColTypeNameNode.isMissingNode() && !isNullOrEmpty(extColTypeNameNode.asText())) { extColTypeName = extColTypeNameNode.asText(); } ColumnTypeInfo columnTypeInfo = @@ -753,8 +752,7 @@ public static HttpClientSettingsKey convertProxyPropertiesToHttpClientKey( String userAgentSuffix = info.getProperty(SFSessionProperty.USER_AGENT_SUFFIX.getPropertyKey()); Boolean gzipDisabled = - Strings.isNullOrEmpty( - info.getProperty(SFSessionProperty.GZIP_DISABLED.getPropertyKey())) + isNullOrEmpty(info.getProperty(SFSessionProperty.GZIP_DISABLED.getPropertyKey())) ? false : Boolean.valueOf( info.getProperty(SFSessionProperty.GZIP_DISABLED.getPropertyKey())); @@ -906,4 +904,8 @@ public static Map createCaseInsensitiveMap(Header[] headers) { public static boolean isWindows() { return Constants.getOS() == Constants.OS.WINDOWS; } + + public static boolean isNullOrEmpty(String str) { + return str == null || str.isEmpty(); + } } diff --git a/src/main/java/net/snowflake/client/jdbc/cloud/storage/S3HttpUtil.java b/src/main/java/net/snowflake/client/jdbc/cloud/storage/S3HttpUtil.java index 235ec60996..e122c03459 100644 --- a/src/main/java/net/snowflake/client/jdbc/cloud/storage/S3HttpUtil.java +++ b/src/main/java/net/snowflake/client/jdbc/cloud/storage/S3HttpUtil.java @@ -1,8 +1,9 @@ package net.snowflake.client.jdbc.cloud.storage; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; + import com.amazonaws.ClientConfiguration; import com.amazonaws.Protocol; -import com.google.common.base.Strings; import java.util.Properties; import net.snowflake.client.core.HttpClientSettingsKey; import net.snowflake.client.core.HttpProtocol; @@ -41,8 +42,7 @@ public static void setProxyForS3(HttpClientSettingsKey key, ClientConfiguration + key.getProxyHttpProtocol() + ", non-proxy hosts: " + key.getNonProxyHosts(); - if (!Strings.isNullOrEmpty(key.getProxyUser()) - && !Strings.isNullOrEmpty(key.getProxyPassword())) { + if (!isNullOrEmpty(key.getProxyUser()) && !isNullOrEmpty(key.getProxyPassword())) { logMessage += ", user: " + key.getProxyUser() @@ -96,7 +96,7 @@ public static void setSessionlessProxyForS3( String proxyProtocol = proxyProperties.getProperty(SFSessionProperty.PROXY_PROTOCOL.getPropertyKey()); Protocol protocolEnum = - (!Strings.isNullOrEmpty(proxyProtocol) && proxyProtocol.equalsIgnoreCase("https")) + (!isNullOrEmpty(proxyProtocol) && proxyProtocol.equalsIgnoreCase("https")) ? Protocol.HTTPS : Protocol.HTTP; clientConfig.setProxyHost(proxyHost); @@ -112,7 +112,7 @@ public static void setSessionlessProxyForS3( + nonProxyHosts + ", protocol: " + proxyProtocol; - if (!Strings.isNullOrEmpty(proxyUser) && !Strings.isNullOrEmpty(proxyPassword)) { + if (!isNullOrEmpty(proxyUser) && !isNullOrEmpty(proxyPassword)) { logMessage += ", user: " + proxyUser + " with password provided"; clientConfig.setProxyUsername(proxyUser); clientConfig.setProxyPassword(proxyPassword); diff --git a/src/main/java/net/snowflake/client/jdbc/cloud/storage/SnowflakeGCSClient.java b/src/main/java/net/snowflake/client/jdbc/cloud/storage/SnowflakeGCSClient.java index c567617e13..40290bd857 100644 --- a/src/main/java/net/snowflake/client/jdbc/cloud/storage/SnowflakeGCSClient.java +++ b/src/main/java/net/snowflake/client/jdbc/cloud/storage/SnowflakeGCSClient.java @@ -5,6 +5,7 @@ import static net.snowflake.client.jdbc.SnowflakeUtil.createCaseInsensitiveMap; import static net.snowflake.client.jdbc.SnowflakeUtil.getRootCause; import static net.snowflake.client.jdbc.SnowflakeUtil.isBlank; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; import com.fasterxml.jackson.core.JsonFactory; @@ -24,7 +25,6 @@ import com.google.cloud.storage.Storage.BlobListOption; import com.google.cloud.storage.StorageException; import com.google.cloud.storage.StorageOptions; -import com.google.common.base.Strings; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -263,7 +263,7 @@ public void download( String key = null; String iv = null; long downloadMillis = 0; - if (!Strings.isNullOrEmpty(presignedUrl)) { + if (!isNullOrEmpty(presignedUrl)) { logger.debug("Starting download with presigned URL", false); URIBuilder uriBuilder = new URIBuilder(presignedUrl); @@ -362,8 +362,8 @@ public void download( } } - if (!Strings.isNullOrEmpty(iv) - && !Strings.isNullOrEmpty(key) + if (!isNullOrEmpty(iv) + && !isNullOrEmpty(key) && this.isEncrypting() && this.getEncryptionKeySize() <= 256) { if (key == null || iv == null) { @@ -457,7 +457,7 @@ public InputStream downloadToStream( String key = null; String iv = null; - if (!Strings.isNullOrEmpty(presignedUrl)) { + if (!isNullOrEmpty(presignedUrl)) { logger.debug("Starting download with presigned URL", false); URIBuilder uriBuilder = new URIBuilder(presignedUrl); @@ -655,7 +655,7 @@ public void uploadWithPresignedUrlWithoutConnection( } Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); - if (Strings.isNullOrEmpty(presignedUrl) || "null".equalsIgnoreCase(presignedUrl)) { + if (isNullOrEmpty(presignedUrl) || "null".equalsIgnoreCase(presignedUrl)) { logger.debug("Starting upload with downscoped token"); uploadWithDownScopedToken( remoteStorageLocation, @@ -758,7 +758,7 @@ public void upload( Stopwatch stopwatch = new Stopwatch(); stopwatch.start(); - if (!Strings.isNullOrEmpty(presignedUrl)) { + if (!isNullOrEmpty(presignedUrl)) { logger.debug("Starting upload with downscope token", false); uploadWithPresignedUrl( session.getNetworkTimeoutInMilli(), @@ -1001,7 +1001,7 @@ private void uploadWithPresignedUrl( * @return Just the object path */ private String scrubPresignedUrl(String presignedUrl) { - if (Strings.isNullOrEmpty(presignedUrl)) { + if (isNullOrEmpty(presignedUrl)) { return ""; } int indexOfQueryString = presignedUrl.lastIndexOf("?"); diff --git a/src/main/java/net/snowflake/client/log/SFLoggerUtil.java b/src/main/java/net/snowflake/client/log/SFLoggerUtil.java index 199f86b530..0317135bac 100644 --- a/src/main/java/net/snowflake/client/log/SFLoggerUtil.java +++ b/src/main/java/net/snowflake/client/log/SFLoggerUtil.java @@ -1,8 +1,8 @@ package net.snowflake.client.log; +import static net.snowflake.client.jdbc.SnowflakeUtil.isNullOrEmpty; import static net.snowflake.client.jdbc.SnowflakeUtil.systemGetProperty; -import com.google.common.base.Strings; import net.snowflake.client.core.SnowflakeJdbcInternalApi; import org.apache.commons.logging.LogFactory; @@ -45,7 +45,7 @@ public static void initializeSnowflakeLogger() { @SnowflakeJdbcInternalApi public static String isVariableProvided(T variable) { if (variable instanceof String) { - return (Strings.isNullOrEmpty((String) variable)) ? NOT_PROVIDED_LOG : PROVIDED_LOG; + return (isNullOrEmpty((String) variable)) ? NOT_PROVIDED_LOG : PROVIDED_LOG; } return variable == null ? NOT_PROVIDED_LOG : PROVIDED_LOG; }