@@ -140,7 +140,7 @@ public EditOperationAnalysisResult analyzeEdits(List<EditOperation> editOperatio
140140 if (editOperation .getTargetVertex ().isOfType (SchemaGraph .FIELD )) {
141141 fieldChanged (editOperation );
142142 } else if (editOperation .getTargetVertex ().isOfType (SchemaGraph .ARGUMENT )) {
143- handleArgumentChange (editOperation );
143+ handleArgumentChange (editOperation , mapping );
144144 } else if (editOperation .getTargetVertex ().isOfType (SchemaGraph .INPUT_FIELD )) {
145145 handleInputFieldChange (editOperation );
146146 }
@@ -656,16 +656,21 @@ private void handleInputFieldChange(EditOperation editOperation) {
656656 getInputObjectModification (newName ).getDetails ().add (new InputObjectFieldRename (oldName , inputField .getName ()));
657657 }
658658
659- private void handleArgumentChange (EditOperation editOperation ) {
659+ private void handleArgumentChange (EditOperation editOperation , Mapping mapping ) {
660+ Vertex oldArgument = editOperation .getSourceVertex ();
660661 Vertex argument = editOperation .getTargetVertex ();
662+
663+ if (!doesArgumentChangeMakeSense (oldArgument , argument , mapping )) {
664+ return ;
665+ }
666+
661667 Vertex fieldOrDirective = newSchemaGraph .getFieldOrDirectiveForArgument (argument );
662668 if (fieldOrDirective .isOfType (SchemaGraph .DIRECTIVE )) {
663669 Vertex directive = fieldOrDirective ;
664670 DirectiveModification directiveModification = getDirectiveModification (directive .getName ());
665- String oldName = editOperation . getSourceVertex () .getName ();
671+ String oldName = oldArgument .getName ();
666672 String newName = argument .getName ();
667673 directiveModification .getDetails ().add (new DirectiveArgumentRename (oldName , newName ));
668-
669674 } else {
670675 assertTrue (fieldOrDirective .isOfType (SchemaGraph .FIELD ));
671676 Vertex field = fieldOrDirective ;
@@ -674,17 +679,16 @@ private void handleArgumentChange(EditOperation editOperation) {
674679 if (fieldsContainerForField .isOfType (SchemaGraph .OBJECT )) {
675680 Vertex object = fieldsContainerForField ;
676681 ObjectModification objectModification = getObjectModification (object .getName ());
677- String oldName = editOperation . getSourceVertex () .getName ();
682+ String oldName = oldArgument .getName ();
678683 String newName = argument .getName ();
679684 objectModification .getDetails ().add (new ObjectFieldArgumentRename (fieldName , oldName , newName ));
680685 } else {
681686 assertTrue (fieldsContainerForField .isOfType (SchemaGraph .INTERFACE ));
682687 Vertex interfaze = fieldsContainerForField ;
683688 InterfaceModification interfaceModification = getInterfaceModification (interfaze .getName ());
684- String oldName = editOperation . getSourceVertex () .getName ();
689+ String oldName = oldArgument .getName ();
685690 String newName = argument .getName ();
686691 interfaceModification .getDetails ().add (new InterfaceFieldArgumentRename (fieldName , oldName , newName ));
687-
688692 }
689693 }
690694 }
@@ -1162,12 +1166,13 @@ private void inputFieldTypeOrDefaultValueChanged(EditOperation editOperation) {
11621166 }
11631167
11641168 private void argumentTypeOrDefaultValueChanged (EditOperation editOperation , Mapping mapping ) {
1165- if (!doesArgumentChangeMakeSense (editOperation , mapping )) {
1169+ Vertex oldArgument = editOperation .getSourceEdge ().getFrom ();
1170+ Vertex argument = editOperation .getTargetEdge ().getFrom ();
1171+
1172+ if (!doesArgumentChangeMakeSense (oldArgument , argument , mapping )) {
11661173 return ;
11671174 }
11681175
1169- Edge targetEdge = editOperation .getTargetEdge ();
1170- Vertex argument = targetEdge .getFrom ();
11711176 Vertex fieldOrDirective = newSchemaGraph .getFieldOrDirectiveForArgument (argument );
11721177 if (fieldOrDirective .isOfType (SchemaGraph .FIELD )) {
11731178 Vertex field = fieldOrDirective ;
@@ -1231,10 +1236,10 @@ private void argumentTypeOrDefaultValueChanged(EditOperation editOperation, Mapp
12311236 * <p>
12321237 * We only want to report argument type changes if it makes sense i.e. if the argument container was the same.
12331238 */
1234- private boolean doesArgumentChangeMakeSense (EditOperation editOperation , Mapping mapping ) {
1239+ private boolean doesArgumentChangeMakeSense (Vertex oldArgument , Vertex newArgument , Mapping mapping ) {
12351240 // Container for an argument in this case should be a field or directive
1236- Vertex oldContainer = oldSchemaGraph .getFieldOrDirectiveForArgument (editOperation . getSourceEdge (). getFrom () );
1237- Vertex newContainer = newSchemaGraph .getFieldOrDirectiveForArgument (editOperation . getTargetEdge (). getFrom () );
1241+ Vertex oldContainer = oldSchemaGraph .getFieldOrDirectiveForArgument (oldArgument );
1242+ Vertex newContainer = newSchemaGraph .getFieldOrDirectiveForArgument (newArgument );
12381243
12391244 // Make sure the container is the same
12401245 return mapping .getTarget (oldContainer ) == newContainer ;
0 commit comments