Skip to content

Commit 60a8d3b

Browse files
committed
Fix empty response
1 parent 35cd56e commit 60a8d3b

File tree

8 files changed

+25
-6
lines changed

8 files changed

+25
-6
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=0.0.1b202003301508
1+
version=0.0.1
22

33
PROJECT_GROUP = com.graphql-java-kickstart
44
PROJECT_NAME = graphql-spring-webclient

graphql-webclient/src/main/java/graphql/kickstart/spring/webclient/boot/GraphQLResponse.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.util.List;
44
import java.util.Map;
55
import java.util.Map.Entry;
6-
import java.util.NoSuchElementException;
76
import lombok.Data;
87

98
@Data
@@ -15,10 +14,10 @@ class GraphQLResponse {
1514
Object getFirstObject() {
1615
validateNoErrors();
1716

18-
if (data != null) {
19-
return data.entrySet().stream().findFirst().map(Entry::getValue).orElseThrow(NoSuchElementException::new);
17+
if (data != null && !data.isEmpty()) {
18+
return data.entrySet().stream().findFirst().map(Entry::getValue).orElse(null);
2019
}
21-
throw new NoSuchElementException();
20+
return null;
2221
}
2322

2423
private void validateNoErrors() {

graphql-webclient/src/main/java/graphql/kickstart/spring/webclient/boot/GraphQLWebClientImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public <T> Mono<T> post(String resource, Map<String, Object> variables, Class<T>
3939
.bodyValue(request)
4040
.retrieve()
4141
.bodyToMono(GraphQLResponse.class)
42-
.map(GraphQLResponse::getFirstObject)
42+
.flatMap(it -> Mono.justOrEmpty(it.getFirstObject()))
4343
.map(it -> readValue(it, returnType));
4444
}
4545

graphql-webclient/src/test/java/graphql/kickstart/spring/webclient/boot/GraphQLWebClientTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotNull;
55
import static org.junit.jupiter.api.Assertions.assertThrows;
6+
import static org.springframework.test.util.AssertionErrors.assertTrue;
67

78
import com.fasterxml.jackson.databind.ObjectMapper;
89
import graphql.kickstart.spring.webclient.testapp.Simple;
910
import java.util.Map;
11+
import java.util.Optional;
1012
import org.junit.jupiter.api.BeforeEach;
1113
import org.junit.jupiter.api.DisplayName;
1214
import org.junit.jupiter.api.Test;
@@ -68,4 +70,11 @@ void errorResponseSucceeds() {
6870
assertThrows(GraphQLErrorsException.class, response::block);
6971
}
7072

73+
@Test
74+
void noResponseSucceeds() {
75+
Mono<String> response = graphqlClient.post("query-noResponse.graphql", String.class);
76+
Optional<String> noResponse = response.blockOptional();
77+
assertTrue("response should be empty", noResponse.isEmpty());
78+
}
79+
7180
}

graphql-webclient/src/test/java/graphql/kickstart/spring/webclient/testapp/Query.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ String test() {
1010
return "test";
1111
}
1212

13+
String noResponse() {
14+
return null;
15+
}
16+
1317
String echo(String value) {
1418
return value;
1519
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
query {
2+
noResponse
3+
}

graphql-webclient/src/test/resources/schema.graphqls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
type Query {
22
test: String!
3+
noResponse: String
34
echo(value: String!): String!
45
simple(id: ID!): Simple!
56
}

travis-build.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ EOL
1717
if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_BRANCH}" = "master" ]; then
1818
# if [ "${RELEASE}" = "true" ]; then
1919
echo "Deploying release to Bintray"
20+
VERSION=$(gradle properties -q | grep "version:" | grep -v "kotlin_version:" | awk '{print $2}' | tr -d '[:space:]')
21+
NEXT_VERSION="${VERSION}b$(date +%Y%m%d%H%M)"
22+
sed -i -E "s/^version(\s)?=.*/version=${NEXT_VERSION}/" gradle.properties
2023
saveGitCredentials
2124
./gradlew clean assemble && ./gradlew check --info && ./gradlew bintrayUpload -x check --info
2225
# else

0 commit comments

Comments
 (0)