Class QueryComplexityLimits
java.lang.Object
graphql.validation.QueryComplexityLimits
Configuration class for query complexity limits enforced during validation.
This provides a lightweight alternative to ExecutableNormalizedOperation (ENO) for tracking
query depth and field count.
By default, validation enforces limits (maxDepth=100, maxFieldsCount=100000). To customize limits per-request, put a custom instance in the GraphQLContext:
QueryComplexityLimits limits = QueryComplexityLimits.newLimits()
.maxDepth(10)
.maxFieldsCount(100)
.build();
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
.query(query)
.graphQLContext(ctx -> ctx.put(QueryComplexityLimits.KEY, limits))
.build();
To disable limits for a request, use NONE:
executionInput.getGraphQLContext().put(QueryComplexityLimits.KEY, QueryComplexityLimits.NONE);
To change the default limits globally (e.g., for testing), use setDefaultLimits(QueryComplexityLimits):
QueryComplexityLimits.setDefaultLimits(QueryComplexityLimits.NONE); // disable for tests
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder for QueryComplexityLimits. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final QueryComplexityLimitsStandard limits (maxDepth=100, maxFieldsCount=100000).static final intDefault maximum query depth.static final intDefault maximum field count.static final StringThe key used to store QueryComplexityLimits in GraphQLContext.static final QueryComplexityLimitsNo limits (all limits set to Integer.MAX_VALUE). -
Method Summary
Modifier and TypeMethodDescriptionstatic QueryComplexityLimitsReturns the current default limits.intintstatic voidSets the default limits used when no limits are specified in GraphQLContext.toString()
-
Field Details
-
DEFAULT_MAX_DEPTH
public static final int DEFAULT_MAX_DEPTHDefault maximum query depth.- See Also:
-
DEFAULT_MAX_FIELDS_COUNT
public static final int DEFAULT_MAX_FIELDS_COUNTDefault maximum field count.- See Also:
-
KEY
The key used to store QueryComplexityLimits in GraphQLContext.- See Also:
-
DEFAULT
Standard limits (maxDepth=100, maxFieldsCount=100000). -
NONE
No limits (all limits set to Integer.MAX_VALUE). Use this to disable complexity checking.
-
-
Method Details
-
setDefaultLimits
Sets the default limits used when no limits are specified in GraphQLContext. This is useful for testing or for applications that want different global defaults. -
getDefaultLimits
Returns the current default limits.- Returns:
- the default limits
-
getMaxDepth
public int getMaxDepth()- Returns:
- the maximum allowed depth for queries, where depth is measured as the number of nested Field nodes
-
getMaxFieldsCount
public int getMaxFieldsCount()- Returns:
- the maximum allowed number of fields in a query, counting fields at each fragment spread site
-
newLimits
- Returns:
- a new builder for creating QueryComplexityLimits
-
toString
-