Skip to content

Commit b0ae271

Browse files
committed
Update Streams.
1 parent 118a5a3 commit b0ae271

File tree

8 files changed

+61
-13
lines changed

8 files changed

+61
-13
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
subprojects {
1616
group = 'org.httprpc'
17-
version = '5.3.4'
17+
version = '5.3.5'
1818

1919
repositories {
2020
mavenCentral()

kilo-client/src/main/java/org/httprpc/kilo/sql/ResultSetAdapter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,12 @@ public void close() throws SQLException {
131131
*
132132
* @return
133133
* A stream over the results.
134+
*
135+
* @deprecated
136+
* Use {@link org.httprpc.kilo.util.stream.Streams#streamOf(Iterable)}
137+
* instead.
134138
*/
139+
@Deprecated
135140
public Stream<Map<String, Object>> stream() {
136141
return StreamSupport.stream(spliterator(), false).onClose(() -> {
137142
try {

kilo-client/src/main/java/org/httprpc/kilo/util/stream/Streams.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616

1717
import org.httprpc.kilo.beans.BeanAdapter;
1818

19+
import java.util.Collection;
1920
import java.util.function.Function;
21+
import java.util.stream.Stream;
22+
import java.util.stream.StreamSupport;
2023

2124
/**
2225
* Provides static utility methods for working with streams.
@@ -40,4 +43,44 @@ private Streams() {
4043
public static <T> Function<Object, T> toType(Class<T> type) {
4144
return value -> BeanAdapter.coerce(value, type);
4245
}
46+
47+
/**
48+
* Returns a stream over an iterable.
49+
*
50+
* @param <T>
51+
* The element type.
52+
*
53+
* @param iterable
54+
* The iterable instance.
55+
*
56+
* @return
57+
* A stream over the iterable.
58+
*/
59+
public static <T> Stream<T> streamOf(Iterable<T> iterable) {
60+
if (iterable == null) {
61+
throw new IllegalArgumentException();
62+
}
63+
64+
return StreamSupport.stream(iterable.spliterator(), false);
65+
}
66+
67+
/**
68+
* Returns a stream over a collection.
69+
*
70+
* @param <T>
71+
* The element type.
72+
*
73+
* @param collection
74+
* The collection instance.
75+
*
76+
* @return
77+
* A stream over the collection.
78+
*/
79+
public static <T> Stream<T> streamOf(Collection<T> collection) {
80+
if (collection == null) {
81+
throw new IllegalArgumentException();
82+
}
83+
84+
return collection.stream();
85+
}
4386
}

kilo-client/src/test/java/org/httprpc/kilo/sql/ResultSetAdapterTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private TemporalAccessorTest selectTemporalAccessorTest(int id) throws SQLExcept
7575
var results = queryBuilder.executeQuery(statement, mapOf(
7676
entry("id", id)
7777
))) {
78-
return results.stream().findFirst().map(toType(TemporalAccessorTest.class)).orElseThrow();
78+
return streamOf(results).findFirst().map(toType(TemporalAccessorTest.class)).orElseThrow();
7979
}
8080
}
8181

@@ -152,7 +152,7 @@ private JSONTest selectJSONTest(int id) throws SQLException {
152152
var results = queryBuilder.executeQuery(statement, mapOf(
153153
entry("id", id)
154154
))) {
155-
return results.stream().findFirst().map(toType(JSONTest.class)).orElseThrow();
155+
return streamOf(results).findFirst().map(toType(JSONTest.class)).orElseThrow();
156156
}
157157
}
158158

@@ -211,7 +211,7 @@ private XMLTest selectXMLTest(int id) throws SQLException {
211211
var results = queryBuilder.executeQuery(statement, mapOf(
212212
entry("id", id)
213213
))) {
214-
return results.stream().findFirst().map(toType(XMLTest.class)).orElseThrow();
214+
return streamOf(results).findFirst().map(toType(XMLTest.class)).orElseThrow();
215215
}
216216
}
217217

kilo-test/src/main/java/org/httprpc/kilo/test/CatalogService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public List<Item> getItems() throws SQLException {
4040

4141
try (var statement = queryBuilder.prepare(getConnection());
4242
var results = queryBuilder.executeQuery(statement)) {
43-
return results.stream().map(toType(Item.class)).toList();
43+
return streamOf(results).map(toType(Item.class)).toList();
4444
}
4545
}
4646

@@ -56,7 +56,7 @@ public ItemDetail getItem(
5656
var results = queryBuilder.executeQuery(statement, mapOf(
5757
entry("itemID", itemID)
5858
))) {
59-
return results.stream().findFirst().map(toType(ItemDetail.class)).orElse(null);
59+
return streamOf(results).findFirst().map(toType(ItemDetail.class)).orElse(null);
6060
}
6161
}
6262

kilo-test/src/main/java/org/httprpc/kilo/test/EmployeeService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public List<Employee> getEmployees() throws SQLException {
5858

5959
try (var statement = queryBuilder.prepare(getConnection());
6060
var results = queryBuilder.executeQuery(statement)) {
61-
return results.stream().map(toType(Employee.class)).toList();
61+
return streamOf(results).map(toType(Employee.class)).toList();
6262
}
6363
}
6464

@@ -74,7 +74,7 @@ public Iterable<Employee> getEmployeesStream() {
7474

7575
try (var statement = queryBuilder.prepare(connection);
7676
var results = queryBuilder.executeQuery(statement)) {
77-
pipe.submit(results.stream().map(toType(Employee.class)));
77+
pipe.submit(streamOf(results).map(toType(Employee.class)));
7878
} catch (SQLException exception) {
7979
throw new RuntimeException(exception);
8080
}

kilo-test/src/main/java/org/httprpc/kilo/test/FilmService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public List<Film> getFilms(
5353
var results = queryBuilder.executeQuery(statement, mapOf(
5454
entry("match", map(match, value -> value.replace('*', '%')))
5555
))) {
56-
return results.stream().map(toType(Film.class)).toList();
56+
return streamOf(results).map(toType(Film.class)).toList();
5757
}
5858
}
5959

@@ -70,7 +70,7 @@ public FilmDetail getFilm(
7070
var results = queryBuilder.executeQuery(statement, mapOf(
7171
entry("filmID", filmID)
7272
))) {
73-
film = results.stream().findFirst().map(toType(FilmDetail.class)).orElseThrow();
73+
film = streamOf(results).findFirst().map(toType(FilmDetail.class)).orElseThrow();
7474
}
7575

7676
film.setActors(getActors(filmID));
@@ -89,7 +89,7 @@ private List<Actor> getActors(Integer filmID) throws SQLException {
8989
var results = queryBuilder.executeQuery(statement, mapOf(
9090
entry("filmID", filmID)
9191
))) {
92-
return results.stream().map(toType(Actor.class)).toList();
92+
return streamOf(results).map(toType(Actor.class)).toList();
9393
}
9494
}
9595

@@ -103,7 +103,7 @@ private List<Category> getCategories(Integer filmID) throws SQLException {
103103
var results = queryBuilder.executeQuery(statement, mapOf(
104104
entry("filmID", filmID)
105105
))) {
106-
return results.stream().map(toType(Category.class)).toList();
106+
return streamOf(results).map(toType(Category.class)).toList();
107107
}
108108
}
109109
}

kilo-test/src/main/java/org/httprpc/kilo/test/PetService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public List<Pet> getPets(@Required String owner) throws SQLException {
4343
var results = queryBuilder.executeQuery(statement, mapOf(
4444
entry("owner", owner)
4545
))) {
46-
return results.stream().map(toType(Pet.class)).toList();
46+
return streamOf(results).map(toType(Pet.class)).toList();
4747
}
4848
}
4949

0 commit comments

Comments
 (0)