DRILL-8207: Fix Username Typo and password @JsonIgnore in JDBC SerDe (#2531)

diff --git a/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java b/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
index 55753a2..0de6912 100644
--- a/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
+++ b/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
@@ -51,7 +51,7 @@
   private final String driver;
   private final String url;
   private final boolean caseInsensitiveTableNames;
-  private final Boolean writable;
+  private final boolean writable;
   private final Map<String, Object> sourceParameters;
   private final int writerBatchSize;
 
@@ -62,7 +62,7 @@
       @JsonProperty("username") String username,
       @JsonProperty("password") String password,
       @JsonProperty("caseInsensitiveTableNames") boolean caseInsensitiveTableNames,
-      @JsonProperty("writable") Boolean writable,
+      @JsonProperty("writable") boolean writable,
       @JsonProperty("sourceParameters") Map<String, Object> sourceParameters,
       @JsonProperty("credentialsProvider") CredentialsProvider credentialsProvider,
       @JsonProperty("authMode") String authMode,
@@ -101,7 +101,6 @@
       .orElse(null);
   }
 
-  @JsonIgnore
   @JsonProperty("password")
   public String getPassword() {
     if (!directCredentials) {
@@ -163,7 +162,10 @@
 
   @Override
   public int hashCode() {
-    return Objects.hash(driver, url, caseInsensitiveTableNames, sourceParameters, credentialsProvider, writable, writerBatchSize);
+    return Objects.hash(
+      driver, url, caseInsensitiveTableNames, sourceParameters,
+      credentialsProvider, writable, writerBatchSize, authMode
+    );
   }
 
   @Override
@@ -181,7 +183,8 @@
         Objects.equals(writable, that.writable) &&
         Objects.equals(sourceParameters, that.sourceParameters) &&
         Objects.equals(credentialsProvider, that.credentialsProvider) &&
-        Objects.equals(writerBatchSize, that.writerBatchSize);
+        Objects.equals(writerBatchSize, that.writerBatchSize) &&
+        Objects.equals(authMode, that.authMode);
   }
 
   @Override
@@ -194,6 +197,7 @@
       .field("sourceParameters", sourceParameters)
       .field("caseInsensitiveTableNames", caseInsensitiveTableNames)
       .field("credentialProvider", credentialsProvider)
+      .field("authMode", authMode)
       .toString();
   }
 }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/security/CredentialProviderUtils.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/security/CredentialProviderUtils.java
index 33a4757..f42f057 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/security/CredentialProviderUtils.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/security/CredentialProviderUtils.java
@@ -35,13 +35,14 @@
     if (credentialsProvider != null) {
       return credentialsProvider;
     }
-    if (username == null) {
-      return PlainCredentialsProvider.EMPTY_CREDENTIALS_PROVIDER;
-    }
 
     ImmutableMap.Builder<String, String> mapBuilder = ImmutableMap.builder();
-    mapBuilder.put(UsernamePasswordCredentials.USERNAME, username);
-    mapBuilder.put(UsernamePasswordCredentials.PASSWORD, password);
+    if (username != null) {
+      mapBuilder.put(UsernamePasswordCredentials.USERNAME, username);
+    }
+    if (password != null) {
+      mapBuilder.put(UsernamePasswordCredentials.PASSWORD, password);
+    }
     return new PlainCredentialsProvider(mapBuilder.build());
   }