@@ -54,16 +54,19 @@ public InstrumentationContext<List<ValidationError>> beginValidation(Instrumenta
5454 }
5555 QueryTraversal queryTraversal = newQueryTraversal (parameters );
5656
57- Map <QueryVisitorEnvironment , List <Integer >> valuesByParent = new LinkedHashMap <>();
58- queryTraversal .visitPostOrder (env -> {
59- int childsComplexity = 0 ;
60- QueryVisitorEnvironment thisNodeAsParent = new QueryVisitorEnvironment (env .getField (), env .getFieldDefinition (), env .getParentType (), env .getParentEnvironment (), env .getArguments ());
61- if (valuesByParent .containsKey (thisNodeAsParent )) {
62- childsComplexity = valuesByParent .get (thisNodeAsParent ).stream ().mapToInt (Integer ::intValue ).sum ();
57+ Map <QueryVisitorFieldEnvironment , List <Integer >> valuesByParent = new LinkedHashMap <>();
58+ queryTraversal .visitPostOrder (new QueryVisitorStub () {
59+ @ Override
60+ public void visitField (QueryVisitorFieldEnvironment env ) {
61+ int childsComplexity = 0 ;
62+ QueryVisitorFieldEnvironment thisNodeAsParent = new QueryVisitorFieldEnvironmentImpl (env .getField (), env .getFieldDefinition (), env .getParentType (), env .getParentEnvironment (), env .getArguments (), env .getSelectionSetContainer ());
63+ if (valuesByParent .containsKey (thisNodeAsParent )) {
64+ childsComplexity = valuesByParent .get (thisNodeAsParent ).stream ().mapToInt (Integer ::intValue ).sum ();
65+ }
66+ int value = calculateComplexity (env , childsComplexity );
67+ valuesByParent .putIfAbsent (env .getParentEnvironment (), new ArrayList <>());
68+ valuesByParent .get (env .getParentEnvironment ()).add (value );
6369 }
64- int value = calculateComplexity (env , childsComplexity );
65- valuesByParent .putIfAbsent (env .getParentEnvironment (), new ArrayList <>());
66- valuesByParent .get (env .getParentEnvironment ()).add (value );
6770 });
6871 int totalComplexity = valuesByParent .get (null ).stream ().mapToInt (Integer ::intValue ).sum ();
6972 if (totalComplexity > maxComplexity ) {
@@ -85,29 +88,29 @@ protected AbortExecutionException mkAbortException(int totalComplexity, int maxC
8588 }
8689
8790 QueryTraversal newQueryTraversal (InstrumentationValidationParameters parameters ) {
88- return new QueryTraversal (
89- parameters .getSchema (),
90- parameters .getDocument (),
91- parameters .getOperation (),
92- parameters .getVariables ()
93- );
91+ return QueryTraversal . newQueryTraversal ()
92+ . schema ( parameters .getSchema ())
93+ . document ( parameters .getDocument ())
94+ . operationName ( parameters .getOperation ())
95+ . variables ( parameters .getVariables () )
96+ . build ( );
9497 }
9598
96- private int calculateComplexity (QueryVisitorEnvironment queryVisitorEnvironment , int childsComplexity ) {
97- FieldComplexityEnvironment fieldComplexityEnvironment = convertEnv (queryVisitorEnvironment );
99+ private int calculateComplexity (QueryVisitorFieldEnvironment QueryVisitorFieldEnvironment , int childsComplexity ) {
100+ FieldComplexityEnvironment fieldComplexityEnvironment = convertEnv (QueryVisitorFieldEnvironment );
98101 return fieldComplexityCalculator .calculate (fieldComplexityEnvironment , childsComplexity );
99102 }
100103
101- private FieldComplexityEnvironment convertEnv (QueryVisitorEnvironment queryVisitorEnvironment ) {
104+ private FieldComplexityEnvironment convertEnv (QueryVisitorFieldEnvironment QueryVisitorFieldEnvironment ) {
102105 FieldComplexityEnvironment parentEnv = null ;
103- if (queryVisitorEnvironment .getParentEnvironment () != null ) {
104- parentEnv = convertEnv (queryVisitorEnvironment .getParentEnvironment ());
106+ if (QueryVisitorFieldEnvironment .getParentEnvironment () != null ) {
107+ parentEnv = convertEnv (QueryVisitorFieldEnvironment .getParentEnvironment ());
105108 }
106109 return new FieldComplexityEnvironment (
107- queryVisitorEnvironment .getField (),
108- queryVisitorEnvironment .getFieldDefinition (),
109- queryVisitorEnvironment .getParentType (),
110- queryVisitorEnvironment .getArguments (),
110+ QueryVisitorFieldEnvironment .getField (),
111+ QueryVisitorFieldEnvironment .getFieldDefinition (),
112+ QueryVisitorFieldEnvironment .getParentType (),
113+ QueryVisitorFieldEnvironment .getArguments (),
111114 parentEnv
112115 );
113116 }
0 commit comments