Skip to content

Commit 8bae13f

Browse files
fcristovaobbakerman
authored andcommitted
Refactor cacheControl to more readable code (graphql-java#1492)
1 parent a8a273f commit 8bae13f

1 file changed

Lines changed: 8 additions & 16 deletions

File tree

src/main/java/graphql/cachecontrol/CacheControl.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
import graphql.schema.DataFetchingEnvironment;
88

99
import java.util.ArrayList;
10-
import java.util.Collections;
1110
import java.util.LinkedHashMap;
1211
import java.util.List;
1312
import java.util.Map;
1413

1514
import static graphql.Assert.assertNotNull;
16-
import static graphql.Assert.assertTrue;
1715
import static graphql.util.FpKit.map;
1816

1917
/**
@@ -31,6 +29,8 @@
3129
@PublicApi
3230
public class CacheControl {
3331

32+
public static final String CACHE_CONTROL_EXTENSION_KEY = "cacheControl";
33+
3434
/**
3535
* If the scope is set to PRIVATE, this indicates anything under this path should only be cached per-user,
3636
* unless the value is overridden on a sub path. PUBLIC is the default and means anything under this path
@@ -170,26 +170,18 @@ public static CacheControl newCacheControl() {
170170
* @return a new execution result with the hints in the extensions map.
171171
*/
172172
public ExecutionResult addTo(ExecutionResult executionResult) {
173-
assertTrue(executionResult instanceof ExecutionResultImpl, "You must pass in an ExecutionResult based on graphql.ExecutionResultImpl");
174-
Map<Object, Object> currentExtensions = executionResult.getExtensions();
175-
if (currentExtensions == null) {
176-
currentExtensions = Collections.emptyMap();
177-
}
178-
currentExtensions = new LinkedHashMap<>(currentExtensions);
179-
180-
putHintsInExtensionsMap(currentExtensions);
181-
182-
return ExecutionResultImpl.newExecutionResult().from(executionResult)
183-
.extensions(currentExtensions).build();
173+
return ExecutionResultImpl.newExecutionResult()
174+
.from(executionResult)
175+
.addExtension(CACHE_CONTROL_EXTENSION_KEY, hintsToCacheControlProperties())
176+
.build();
184177
}
185178

186-
private void putHintsInExtensionsMap(Map<Object, Object> extensions) {
179+
private Map<String, Object> hintsToCacheControlProperties() {
187180
List<Map<String, Object>> recordedHints = map(hints, Hint::toMap);
188181

189182
Map<String, Object> cacheControl = new LinkedHashMap<>();
190183
cacheControl.put("version", 1);
191184
cacheControl.put("hints", recordedHints);
192-
193-
extensions.put("cacheControl", cacheControl);
185+
return cacheControl;
194186
}
195187
}

0 commit comments

Comments
 (0)