diff --git a/bigquery-connector-common/src/main/java/com/google/cloud/bigquery/connector/common/QueryParameterHelper.java b/bigquery-connector-common/src/main/java/com/google/cloud/bigquery/connector/common/QueryParameterHelper.java index ca65efc33..fcc45eee4 100644 --- a/bigquery-connector-common/src/main/java/com/google/cloud/bigquery/connector/common/QueryParameterHelper.java +++ b/bigquery-connector-common/src/main/java/com/google/cloud/bigquery/connector/common/QueryParameterHelper.java @@ -18,9 +18,10 @@ import com.google.cloud.bigquery.QueryJobConfiguration; import com.google.cloud.bigquery.QueryParameterValue; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -36,28 +37,28 @@ public final class QueryParameterHelper implements Serializable { private static final long serialVersionUID = -283738274937293739L; // For Serializable interface private final ParameterMode mode; - private final ImmutableMap namedParameters; - private final ImmutableList positionalParameters; + private final Map namedParameters; + private final List positionalParameters; public QueryParameterHelper( ParameterMode mode, - ImmutableMap named, - ImmutableList positional) { + Map named, + List positional) { this.mode = mode; - this.namedParameters = named; - this.positionalParameters = positional; + this.namedParameters = Collections.unmodifiableMap(new HashMap<>(named)); + this.positionalParameters = Collections.unmodifiableList(new ArrayList<>(positional)); } static QueryParameterHelper none() { - return new QueryParameterHelper(ParameterMode.NONE, ImmutableMap.of(), ImmutableList.of()); + return new QueryParameterHelper( + ParameterMode.NONE, Collections.emptyMap(), Collections.emptyList()); } static QueryParameterHelper named(Map namedParameters) { Preconditions.checkNotNull( namedParameters, "Input named parameters map cannot be null for named mode"); - return new QueryParameterHelper( - ParameterMode.NAMED, ImmutableMap.copyOf(namedParameters), ImmutableList.of()); + return new QueryParameterHelper(ParameterMode.NAMED, namedParameters, Collections.emptyList()); } static QueryParameterHelper positional(List positionalParameters) { @@ -67,8 +68,8 @@ static QueryParameterHelper positional(List positionalParam return new QueryParameterHelper( ParameterMode.POSITIONAL, - ImmutableMap.of(), // Pass empty immutable map - ImmutableList.copyOf(positionalParameters)); + Collections.emptyMap(), // Pass empty immutable map + positionalParameters); } public ParameterMode getMode() { @@ -81,7 +82,7 @@ public ParameterMode getMode() { * @return An Optional containing an immutable map of named parameters if mode is NAMED, otherwise * Optional.empty(). */ - public Optional> getNamedParameters() { + public Optional> getNamedParameters() { return mode == ParameterMode.NAMED ? Optional.of(namedParameters) : Optional.empty(); } @@ -91,7 +92,7 @@ public Optional> getNamedParameters() * @return An Optional containing an immutable list of positional parameters if mode is * POSITIONAL, otherwise Optional.empty(). */ - public Optional> getPositionalParameters() { + public Optional> getPositionalParameters() { return mode == ParameterMode.POSITIONAL ? Optional.of(positionalParameters) : Optional.empty(); } diff --git a/bigquery-connector-common/src/test/java/com/google/cloud/bigquery/connector/common/BigQueryUtilTest.java b/bigquery-connector-common/src/test/java/com/google/cloud/bigquery/connector/common/BigQueryUtilTest.java index 235ef1cbc..e9344708d 100644 --- a/bigquery-connector-common/src/test/java/com/google/cloud/bigquery/connector/common/BigQueryUtilTest.java +++ b/bigquery-connector-common/src/test/java/com/google/cloud/bigquery/connector/common/BigQueryUtilTest.java @@ -51,7 +51,6 @@ import com.google.cloud.bigquery.storage.v1.ReadSession.TableReadOptions; import com.google.cloud.bigquery.storage.v1.ReadStream; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import java.math.BigDecimal; import java.time.Instant; import java.util.Arrays; @@ -1008,7 +1007,7 @@ public void testParseNamedParameters_SuccessAllTypes() { assertThat(result.isEmpty()).isFalse(); assertThat(result.getNamedParameters()).isPresent(); - ImmutableMap params = result.getNamedParameters().get(); + Map params = result.getNamedParameters().get(); assertThat(params).hasSize(12); assertThat(params.get("strParam")).isEqualTo(QueryParameterValue.string("hello world")); @@ -1039,7 +1038,7 @@ public void testParseNamedParameters_EmptyStringValue() { assertThat(result.getMode()).isEqualTo(ParameterMode.NAMED); assertThat(result.getNamedParameters()).isPresent(); - ImmutableMap params = result.getNamedParameters().get(); + Map params = result.getNamedParameters().get(); assertThat(params).hasSize(1); assertThat(params.get("emptyStr")).isEqualTo(QueryParameterValue.string("")); } @@ -1053,7 +1052,7 @@ public void testParseNamedParameters_SpacesInValue() { QueryParameterHelper result = BigQueryUtil.parseQueryParameters(options); assertThat(result.getMode()).isEqualTo(ParameterMode.NAMED); assertThat(result.getNamedParameters()).isPresent(); - ImmutableMap params = result.getNamedParameters().get(); + Map params = result.getNamedParameters().get(); assertThat(params).hasSize(2); assertThat(params.get("withSpaces")) .isEqualTo(QueryParameterValue.string("leading and trailing spaces")); @@ -1069,7 +1068,7 @@ public void testParseNamedParameters_DuplicateKeysDifferentCase() { QueryParameterHelper result = BigQueryUtil.parseQueryParameters(options); assertThat(result.getMode()).isEqualTo(ParameterMode.NAMED); assertThat(result.getNamedParameters()).isPresent(); - ImmutableMap params = result.getNamedParameters().get(); + Map params = result.getNamedParameters().get(); // Both keys exist as they are different strings assertThat(params).hasSize(2); @@ -1103,7 +1102,7 @@ public void testParsePositionalParameters_Success() { assertThat(result.isEmpty()).isFalse(); assertThat(result.getPositionalParameters()).isPresent(); - ImmutableList params = result.getPositionalParameters().get(); + List params = result.getPositionalParameters().get(); assertThat(params).hasSize(3); // Parser ensures correct size based on max index assertThat(params.get(0)).isEqualTo(QueryParameterValue.string("value1")); // Index 0 = Param 1 @@ -1121,7 +1120,7 @@ public void testParsePositionalParameters_SingleParameter() { assertThat(result.getMode()).isEqualTo(ParameterMode.POSITIONAL); assertThat(result.getPositionalParameters()).isPresent(); - ImmutableList params = result.getPositionalParameters().get(); + List params = result.getPositionalParameters().get(); assertThat(params).hasSize(1); assertThat(params.get(0)).isEqualTo(QueryParameterValue.float64(1.0)); }