Skip to content

Commit e0bb96b

Browse files
committed
Minor refactoring
See gh-620
1 parent da00c8b commit e0bb96b

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/SortMethodArgumentResolver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,17 @@ public boolean supportsParameter(MethodParameter parameter) {
5050
return parameter.nestedIfOptional().getNestedParameterType().equals(Sort.class);
5151
}
5252

53+
@SuppressWarnings("ConstantValue")
5354
@Override
5455
public Object resolveArgument(MethodParameter parameter, DataFetchingEnvironment environment) {
56+
5557
Sort sort = this.sortStrategy.extract(environment);
58+
5659
if (parameter.isOptional()) {
60+
sort = (sort == Sort.unsorted() ? null : sort);
5761
return Optional.ofNullable(sort);
5862
}
63+
5964
return (sort != null ? sort : Sort.unsorted());
6065
}
6166

spring-graphql/src/main/java/org/springframework/graphql/data/pagination/Subrange.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919

2020
import java.util.Optional;
21+
import java.util.OptionalInt;
2122

2223
import org.springframework.lang.Nullable;
2324

@@ -28,13 +29,12 @@
2829
* @author Rossen Stoyanchev
2930
* @since 1.2
3031
*/
32+
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
3133
public class Subrange<P> {
3234

33-
@Nullable
34-
private final P position;
35+
private final Optional<P> position;
3536

36-
@Nullable
37-
private final Integer count;
37+
private final OptionalInt count;
3838

3939
private final boolean forward;
4040

@@ -43,9 +43,9 @@ public class Subrange<P> {
4343
* Constructor with the relative position, count, and direction.
4444
*/
4545
public Subrange(@Nullable P position, @Nullable Integer count, boolean forward) {
46-
this.position = position;
46+
this.position = Optional.ofNullable(position);
47+
this.count = (count != null ? OptionalInt.of(count) : OptionalInt.empty());
4748
this.forward = forward;
48-
this.count = count;
4949
}
5050

5151

@@ -55,15 +55,15 @@ public Subrange(@Nullable P position, @Nullable Integer count, boolean forward)
5555
* Cursor connection spec via {@link CursorStrategy}.
5656
*/
5757
public Optional<P> position() {
58-
return Optional.ofNullable(this.position);
58+
return this.position;
5959
}
6060

6161
/**
6262
* The number of elements in the subrange based on the "first" and "last"
6363
* arguments from the GraphQL Cursor connection spec.
6464
*/
65-
public Optional<Integer> count() {
66-
return Optional.ofNullable(this.count);
65+
public OptionalInt count() {
66+
return this.count;
6767
}
6868

6969
/**

spring-graphql/src/main/java/org/springframework/graphql/data/query/SortStrategy.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import graphql.schema.DataFetchingEnvironment;
2121

2222
import org.springframework.data.domain.Sort;
23-
import org.springframework.lang.Nullable;
2423

2524
/**
2625
* Strategy to extract {@link Sort} details from GraphQL arguments.
@@ -31,9 +30,9 @@
3130
public interface SortStrategy {
3231

3332
/**
34-
* Return a {@link Sort} instance initialized from GraphQL arguments, or {@code null}.
33+
* Return a {@link Sort} instance by extracting the sort information from
34+
* GraphQL arguments, or {@link Sort#unsorted()} otherwise.
3535
*/
36-
@Nullable
3736
Sort extract(DataFetchingEnvironment environment);
3837

3938
}

spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/SubrangeMethodArgumentResolverTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void backwardPagination() throws Exception {
7676
private static void testRequest(int count, int index, Object result, boolean forward) {
7777
Subrange<MyPosition> subrange = (Subrange<MyPosition>) result;
7878
assertThat(subrange.position().get().index()).isEqualTo(index);
79-
assertThat(subrange.count().get()).isEqualTo(count);
79+
assertThat(subrange.count().orElse(0)).isEqualTo(count);
8080
assertThat(subrange.forward()).isEqualTo(forward);
8181
}
8282

spring-graphql/src/test/java/org/springframework/graphql/data/query/ScrollSubrangeTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ void offset() {
4242

4343
ScrollSubrange subrange = new ScrollSubrange(position, count, true);
4444
assertThat(((OffsetScrollPosition) subrange.position().get())).isEqualTo(position);
45-
assertThat(subrange.count().get()).isEqualTo(count);
45+
assertThat(subrange.count().orElse(0)).isEqualTo(count);
4646
assertThat(subrange.forward()).isTrue();
4747

4848
subrange = new ScrollSubrange(position, count, false);
4949
assertThat(((OffsetScrollPosition) subrange.position().get()).getOffset()).isEqualTo(20);
50-
assertThat(subrange.count().get()).isEqualTo(count);
50+
assertThat(subrange.count().orElse(0)).isEqualTo(count);
5151
assertThat(subrange.forward()).isTrue();
5252
}
5353

@@ -65,14 +65,14 @@ void keyset() {
6565
KeysetScrollPosition actualPosition = (KeysetScrollPosition) subrange.position().get();
6666
assertThat(actualPosition.getKeys()).isEqualTo(keys);
6767
assertThat(actualPosition.getDirection()).isEqualTo(Direction.Forward);
68-
assertThat(subrange.count().get()).isEqualTo(count);
68+
assertThat(subrange.count().orElse(0)).isEqualTo(count);
6969
assertThat(subrange.forward()).isTrue();
7070

7171
subrange = new ScrollSubrange(position, count, false);
7272
actualPosition = (KeysetScrollPosition) subrange.position().get();
7373
assertThat(actualPosition.getKeys()).isEqualTo(keys);
7474
assertThat(actualPosition.getDirection()).isEqualTo(Direction.Backward);
75-
assertThat(subrange.count().get()).isEqualTo(count);
75+
assertThat(subrange.count().orElse(0)).isEqualTo(count);
7676
assertThat(subrange.forward()).isFalse();
7777
}
7878

0 commit comments

Comments
 (0)