Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 4d5fb1f

Browse files
authored
Merge pull request #647 from m1ngyuan/use_duration
Move milliseconds and seconds to duration
2 parents ee4226e + acc98de commit 4d5fb1f

File tree

11 files changed

+193
-26
lines changed

11 files changed

+193
-26
lines changed

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/editor/graphiql/GraphiQLController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private Map<String, String> getReplacements(
143143
}
144144
replacements.put(
145145
"subscriptionClientTimeout",
146-
String.valueOf(graphiQLProperties.getSubscriptions().getTimeout() * 1000));
146+
String.valueOf(graphiQLProperties.getSubscriptions().getTimeout().toMillis()));
147147
replacements.put(
148148
"subscriptionClientReconnect",
149149
String.valueOf(graphiQLProperties.getSubscriptions().isReconnect()));

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/editor/graphiql/GraphiQLProperties.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package graphql.kickstart.autoconfigure.editor.graphiql;
22

3+
import java.time.Duration;
4+
import java.time.temporal.ChronoUnit;
35
import lombok.Data;
46
import org.springframework.boot.context.properties.ConfigurationProperties;
7+
import org.springframework.boot.convert.DurationUnit;
58

69
@Data
710
@ConfigurationProperties("graphql.graphiql")
@@ -65,7 +68,11 @@ static class Cdn {
6568
@Data
6669
static class Subscriptions {
6770

68-
private int timeout = 30;
71+
/**
72+
* Subscription timeout. If a duration suffix is not specified, second will be used.
73+
*/
74+
@DurationUnit(ChronoUnit.SECONDS)
75+
private Duration timeout = Duration.ofSeconds(30);
6976
private boolean reconnect = false;
7077
}
7178
}

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/AsyncServletProperties.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
package graphql.kickstart.autoconfigure.web.servlet;
22

3+
import java.time.Duration;
4+
import java.time.temporal.ChronoUnit;
35
import lombok.Data;
46
import org.springframework.boot.context.properties.ConfigurationProperties;
7+
import org.springframework.boot.convert.DurationUnit;
58

69
@Data
710
@ConfigurationProperties(prefix = "graphql.servlet.async")
811
public class AsyncServletProperties {
912

13+
public static final Duration DEFAULT_TIMEOUT = Duration.ofSeconds(30);
14+
1015
private boolean enabled = true;
11-
private long timeout = 30000;
16+
/**
17+
* Asynchronous execution timeout. If a duration suffix is not specified, millisecond will be used.
18+
*/
19+
@DurationUnit(ChronoUnit.MILLIS)
20+
private Duration timeout = DEFAULT_TIMEOUT;
1221
private boolean delegateSecurityContext = true;
1322
private Threads threads = new Threads();
1423

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/GraphQLServletProperties.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,31 @@
1919
package graphql.kickstart.autoconfigure.web.servlet;
2020

2121
import graphql.kickstart.execution.context.ContextSetting;
22+
import java.time.Duration;
23+
import java.time.temporal.ChronoUnit;
2224
import lombok.Data;
2325
import org.springframework.boot.context.properties.ConfigurationProperties;
26+
import org.springframework.boot.convert.DurationUnit;
2427

2528
/** @author Michiel Oliemans */
2629
@Data
2730
@ConfigurationProperties(prefix = "graphql.servlet")
2831
public class GraphQLServletProperties {
2932

33+
public final static Duration DEFAULT_SUBSCRIPTION_TIMEOUT = Duration.ZERO;
34+
3035
private boolean enabled = true;
3136
private boolean corsEnabled = true;
3237
private String mapping = "/graphql";
3338
private boolean exceptionHandlersEnabled = false;
34-
private long subscriptionTimeout = 0;
39+
/**
40+
* Subscription timeout. If a duration suffix is not specified, millisecond will be used.
41+
*/
42+
@DurationUnit(ChronoUnit.MILLIS)
43+
private Duration subscriptionTimeout = DEFAULT_SUBSCRIPTION_TIMEOUT;
3544
private ContextSetting contextSetting = ContextSetting.PER_QUERY_WITH_INSTRUMENTATION;
36-
/** @deprecated Use <tt>graphql.servlet.async.timeout</tt> instead */
37-
@Deprecated private Long asyncTimeout;
45+
/** Asynchronous execution timeout. If a duration suffix is not specified, millisecond will be used. @deprecated Use <tt>graphql.servlet.async.timeout</tt> instead */
46+
@Deprecated @DurationUnit(ChronoUnit.MILLIS) private Duration asyncTimeout;
3847
/** @deprecated Use <tt>graphql.servlet.async.enabled</tt> instead */
3948
@Deprecated private Boolean asyncModeEnabled;
4049

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/GraphQLWebAutoConfiguration.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,13 @@
5757
import graphql.kickstart.spring.error.ErrorHandlerSupplier;
5858
import graphql.kickstart.spring.error.GraphQLErrorStartupListener;
5959
import graphql.schema.GraphQLSchema;
60+
import java.time.Duration;
6061
import java.util.Arrays;
6162
import java.util.LinkedHashMap;
6263
import java.util.List;
6364
import java.util.Map;
6465
import java.util.Map.Entry;
66+
import java.util.Optional;
6567
import java.util.concurrent.Executor;
6668
import javax.servlet.MultipartConfigElement;
6769
import lombok.RequiredArgsConstructor;
@@ -301,19 +303,21 @@ public GraphQLConfiguration graphQLServletConfiguration(
301303
@Autowired(required = false) GraphQLResponseCacheManager responseCacheManager,
302304
@Autowired(required = false) AsyncTaskDecorator asyncTaskDecorator,
303305
@Autowired(required = false) @Qualifier("graphqlAsyncTaskExecutor") Executor asyncExecutor) {
304-
long asyncTimeout =
305-
graphQLServletProperties.getAsyncTimeout() != null
306-
? graphQLServletProperties.getAsyncTimeout()
307-
: asyncServletProperties.getTimeout();
306+
Duration asyncTimeout = Optional.ofNullable(asyncServletProperties.getTimeout()) //
307+
.orElse(AsyncServletProperties.DEFAULT_TIMEOUT);
308+
long asyncTimeoutMilliseconds = Optional.ofNullable(graphQLServletProperties.getAsyncTimeout()) //
309+
.orElse(asyncTimeout).toMillis();
310+
long subscriptionTimeoutMilliseconds = Optional.ofNullable(graphQLServletProperties.getSubscriptionTimeout()) //
311+
.orElse(GraphQLServletProperties.DEFAULT_SUBSCRIPTION_TIMEOUT).toMillis();
308312
return GraphQLConfiguration.with(invocationInputFactory)
309313
.with(graphQLInvoker)
310314
.with(graphQLObjectMapper)
311315
.with(listeners)
312-
.with(graphQLServletProperties.getSubscriptionTimeout())
316+
.with(subscriptionTimeoutMilliseconds)
313317
.with(batchInputPreProcessor)
314318
.with(graphQLServletProperties.getContextSetting())
315319
.with(responseCacheManager)
316-
.asyncTimeout(asyncTimeout)
320+
.asyncTimeout(asyncTimeoutMilliseconds)
317321
.with(asyncTaskDecorator)
318322
.asyncCorePoolSize(asyncServletProperties.getThreads().getMin())
319323
.asyncMaxPoolSize(asyncServletProperties.getThreads().getMax())

graphql-spring-boot-autoconfigure/src/test/java/graphql/kickstart/autoconfigure/annotations/GraphQLAnnotationsSubscriptionTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.graphql.spring.boot.test.GraphQLResponse;
66
import com.graphql.spring.boot.test.GraphQLTestSubscription;
7+
import java.time.Duration;
78
import org.junit.jupiter.api.DisplayName;
89
import org.junit.jupiter.api.Test;
910
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +26,7 @@ void testSubscription() {
2526
graphQLTestSubscription
2627
.init()
2728
.start("annotations/subscriptions/test-subscription.graphql")
28-
.awaitAndGetNextResponse(10000);
29+
.awaitAndGetNextResponse(Duration.ofSeconds(10));
2930
// THEN
3031
assertThat(graphQLResponse.get("$.data.testSubscription")).isEqualTo("some value");
3132
}

graphql-spring-boot-test-autoconfigure/src/test/java/com/graphql/spring/boot/test/GraphQLTestAutoConfigurationTestBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.graphql.spring.boot.test;
22

33
import java.io.IOException;
4+
import java.time.Duration;
45
import org.springframework.beans.factory.annotation.Autowired;
56
import org.springframework.boot.test.context.SpringBootTest;
67
import org.springframework.context.ApplicationContext;
@@ -19,7 +20,7 @@ void assertThatTestSubscriptionWorksCorrectly() {
1920
// WHEN - THEN
2021
testSubscription
2122
.start("test-subscription.graphql")
22-
.awaitAndGetNextResponse(1000)
23+
.awaitAndGetNextResponse(Duration.ofSeconds(1))
2324
.assertThatNoErrorsArePresent()
2425
.assertThatField("$.data.testSubscription")
2526
.asString()

0 commit comments

Comments
 (0)