Skip to content

Commit 07e5569

Browse files
Addressed comments
1 parent fb618d5 commit 07e5569

File tree

2 files changed

+16
-33
lines changed

2 files changed

+16
-33
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerTypeConverter.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.ArrayList;
2929
import java.util.Iterator;
3030
import java.util.List;
31+
import java.util.function.Consumer;
3132
import java.util.function.Function;
3233
import java.util.stream.Collectors;
3334
import java.util.stream.Stream;
@@ -62,38 +63,38 @@ static <T> Value createUntypedStringValue(T value) {
6263
com.google.protobuf.Value.newBuilder().setStringValue(String.valueOf(value)).build());
6364
}
6465

65-
@SuppressWarnings("unchecked")
6666
static <T, U> Iterable<U> convertToTypedIterable(
6767
Function<T, U> func, T val, Iterator<?> iterator) {
6868
List<U> values = new ArrayList<>();
69-
values.add(func.apply(val));
70-
iterator.forEachRemaining(value -> values.add(func.apply((T) value)));
69+
SpannerTypeConverter.processIterable(val, iterator, func, values::add);
7170
return values;
7271
}
7372

7473
static <T> Iterable<T> convertToTypedIterable(T val, Iterator<?> iterator) {
7574
return convertToTypedIterable(v -> v, val, iterator);
7675
}
7776

77+
@SuppressWarnings("unchecked")
78+
static <T, U> void processIterable(
79+
T val, Iterator<?> iterator, Function<T, U> func, Consumer<U> consumer) {
80+
consumer.accept(func.apply(val));
81+
iterator.forEachRemaining(values -> consumer.accept(func.apply((T) values)));
82+
}
83+
7884
static Date convertLocalDateToSpannerDate(LocalDate date) {
7985
return Date.fromYearMonthDay(date.getYear(), date.getMonthValue(), date.getDayOfMonth());
8086
}
8187

8288
static <T> Value createUntypedIterableValue(
8389
T value, Iterator<?> iterator, Function<T, String> func) {
90+
ListValue.Builder listValueBuilder = ListValue.newBuilder();
91+
SpannerTypeConverter.processIterable(
92+
value,
93+
iterator,
94+
(val) -> com.google.protobuf.Value.newBuilder().setStringValue(func.apply(val)).build(),
95+
listValueBuilder::addValues);
8496
return Value.untyped(
85-
com.google.protobuf.Value.newBuilder()
86-
.setListValue(
87-
ListValue.newBuilder()
88-
.addAllValues(
89-
SpannerTypeConverter.convertToTypedIterable(
90-
(val) ->
91-
com.google.protobuf.Value.newBuilder()
92-
.setStringValue(func.apply(val))
93-
.build(),
94-
value,
95-
iterator)))
96-
.build());
97+
com.google.protobuf.Value.newBuilder().setListValue(listValueBuilder.build()).build());
9798
}
9899

99100
static ZonedDateTime atUTC(LocalDateTime localDateTime) {

google-cloud-spanner/src/test/java/com/google/cloud/spanner/ValueTest.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import java.math.BigDecimal;
5050
import java.math.BigInteger;
5151
import java.nio.charset.StandardCharsets;
52-
import java.time.Instant;
5352
import java.time.LocalDate;
5453
import java.time.LocalDateTime;
5554
import java.time.OffsetDateTime;
@@ -2580,13 +2579,6 @@ public void testToValue() {
25802579
assertEquals(Type.date(), value.getType());
25812580
assertEquals(date, value.getDate());
25822581

2583-
java.util.Date utilDate =
2584-
java.util.Date.from(
2585-
Instant.from(LocalDateTime.of(2018, 2, 26, 11, 30).toInstant(ZoneOffset.UTC)));
2586-
value = Value.toValue(utilDate);
2587-
assertEquals(Type.date(), value.getType());
2588-
assertEquals(date, value.getDate());
2589-
25902582
LocalDate localDate = LocalDate.of(2018, 2, 26);
25912583
value = Value.toValue(localDate);
25922584
assertEquals(Type.date(), value.getType());
@@ -2768,16 +2760,6 @@ public void testToValueIterable() {
27682760
assertEquals(Type.array(Type.date()), value.getType());
27692761
assertEquals(dates, value.getDateArray());
27702762

2771-
List<java.util.Date> javaDates =
2772-
Arrays.asList(
2773-
java.util.Date.from(
2774-
ZonedDateTime.of(2024, 8, 23, 11, 12, 13, 10, ZoneId.of("UTC")).toInstant()),
2775-
java.util.Date.from(
2776-
ZonedDateTime.of(2024, 12, 27, 11, 12, 13, 10, ZoneId.of("UTC")).toInstant()));
2777-
value = Value.toValue(javaDates);
2778-
assertEquals(Type.array(Type.date()), value.getType());
2779-
assertEquals(dates, value.getDateArray());
2780-
27812763
List<LocalDate> localDates =
27822764
Arrays.asList(LocalDate.of(2024, 8, 23), LocalDate.of(2024, 12, 27));
27832765
value = Value.toValue(localDates);

0 commit comments

Comments
 (0)