@@ -960,8 +960,9 @@ private void typeEdgeInserted(EditOperation editOperation, List<EditOperation> e
960960
961961 }
962962
963- private void typeEdgeInsertedForInputField (EditOperation
964- editOperation , List <EditOperation > editOperations , Mapping mapping ) {
963+ private void typeEdgeInsertedForInputField (EditOperation editOperation ,
964+ List <EditOperation > editOperations ,
965+ Mapping mapping ) {
965966 Vertex inputField = editOperation .getTargetEdge ().getFrom ();
966967 Vertex inputObject = newSchemaGraph .getInputObjectForInputField (inputField );
967968 if (isInputObjectAdded (inputObject .getName ())) {
@@ -977,8 +978,9 @@ private void typeEdgeInsertedForInputField(EditOperation
977978 getInputObjectModification (inputObject .getName ()).getDetails ().add (inputObjectFieldTypeModification );
978979 }
979980
980- private void typeEdgeInsertedForArgument (EditOperation
981- editOperation , List <EditOperation > editOperations , Mapping mapping ) {
981+ private void typeEdgeInsertedForArgument (EditOperation editOperation ,
982+ List <EditOperation > editOperations ,
983+ Mapping mapping ) {
982984 Vertex argument = editOperation .getTargetEdge ().getFrom ();
983985 Vertex fieldOrDirective = newSchemaGraph .getFieldOrDirectiveForArgument (argument );
984986 if (fieldOrDirective .isOfType (SchemaGraph .FIELD )) {
@@ -987,6 +989,7 @@ private void typeEdgeInsertedForArgument(EditOperation
987989
988990 if (objectOrInterface .isOfType (SchemaGraph .OBJECT )) {
989991 Vertex object = objectOrInterface ;
992+
990993 // if the whole object is new we are done
991994 if (isObjectAdded (object .getName ())) {
992995 return ;
@@ -999,16 +1002,24 @@ private void typeEdgeInsertedForArgument(EditOperation
9991002 if (isArgumentNewForExistingObjectField (object .getName (), field .getName (), argument .getName ())) {
10001003 return ;
10011004 }
1005+
10021006 String newType = getTypeFromEdgeLabel (editOperation .getTargetEdge ());
10031007 // this means we have an existing object changed its type
10041008 // and there must be a deleted edge with the old type information
10051009 EditOperation deletedTypeEdgeOperation = findDeletedEdge (argument , editOperations , mapping , this ::isTypeEdge );
10061010 String oldType = getTypeFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
10071011 ObjectFieldArgumentTypeModification objectFieldArgumentTypeModification = new ObjectFieldArgumentTypeModification (field .getName (), argument .getName (), oldType , newType );
10081012 getObjectModification (object .getName ()).getDetails ().add (objectFieldArgumentTypeModification );
1013+
1014+ String oldDefaultValue = getDefaultValueFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
1015+ String newDefaultValue = getDefaultValueFromEdgeLabel (editOperation .getTargetEdge ());
1016+ if (!oldDefaultValue .equals (newDefaultValue )) {
1017+ getObjectModification (object .getName ()).getDetails ().add (new ObjectFieldArgumentDefaultValueModification (field .getName (), argument .getName (), oldDefaultValue , newDefaultValue ));
1018+ }
10091019 } else {
10101020 assertTrue (objectOrInterface .isOfType (SchemaGraph .INTERFACE ));
10111021 Vertex interfaze = objectOrInterface ;
1022+
10121023 // if the whole object is new we are done
10131024 if (isInterfaceAdded (interfaze .getName ())) {
10141025 return ;
@@ -1021,34 +1032,49 @@ private void typeEdgeInsertedForArgument(EditOperation
10211032 if (isArgumentNewForExistingInterfaceField (interfaze .getName (), field .getName (), argument .getName ())) {
10221033 return ;
10231034 }
1035+
10241036 String newType = getTypeFromEdgeLabel (editOperation .getTargetEdge ());
10251037 // this means we have an existing object changed its type
10261038 // and there must be a deleted edge with the old type information
10271039 EditOperation deletedTypeEdgeOperation = findDeletedEdge (argument , editOperations , mapping , this ::isTypeEdge );
10281040 String oldType = getTypeFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
10291041 InterfaceFieldArgumentTypeModification interfaceFieldArgumentTypeModification = new InterfaceFieldArgumentTypeModification (field .getName (), argument .getName (), oldType , newType );
10301042 getInterfaceModification (interfaze .getName ()).getDetails ().add (interfaceFieldArgumentTypeModification );
1043+
1044+ String oldDefaultValue = getDefaultValueFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
1045+ String newDefaultValue = getDefaultValueFromEdgeLabel (editOperation .getTargetEdge ());
1046+ if (!oldDefaultValue .equals (newDefaultValue )) {
1047+ getInterfaceModification (interfaze .getName ()).getDetails ().add (new InterfaceFieldArgumentDefaultValueModification (field .getName (), argument .getName (), oldDefaultValue , newDefaultValue ));
1048+ }
10311049 }
10321050 } else {
10331051 assertTrue (fieldOrDirective .isOfType (SchemaGraph .DIRECTIVE ));
10341052 Vertex directive = fieldOrDirective ;
1053+
10351054 if (isDirectiveAdded (directive .getName ())) {
10361055 return ;
10371056 }
10381057 if (isArgumentNewForExistingDirective (directive .getName (), argument .getName ())) {
10391058 return ;
10401059 }
1060+
10411061 String newType = getTypeFromEdgeLabel (editOperation .getTargetEdge ());
10421062 EditOperation deletedTypeEdgeOperation = findDeletedEdge (argument , editOperations , mapping , this ::isTypeEdge );
10431063 String oldType = getTypeFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
10441064 DirectiveArgumentTypeModification directiveArgumentTypeModification = new DirectiveArgumentTypeModification (argument .getName (), oldType , newType );
10451065 getDirectiveModification (directive .getName ()).getDetails ().add (directiveArgumentTypeModification );
1046- }
10471066
1067+ String oldDefaultValue = getDefaultValueFromEdgeLabel (deletedTypeEdgeOperation .getSourceEdge ());
1068+ String newDefaultValue = getDefaultValueFromEdgeLabel (editOperation .getTargetEdge ());
1069+ if (!oldDefaultValue .equals (newDefaultValue )) {
1070+ getDirectiveModification (directive .getName ()).getDetails ().add (new DirectiveArgumentDefaultValueModification (argument .getName (), oldDefaultValue , newDefaultValue ));
1071+ }
1072+ }
10481073 }
10491074
1050- private void typeEdgeInsertedForField (EditOperation
1051- editOperation , List <EditOperation > editOperations , Mapping mapping ) {
1075+ private void typeEdgeInsertedForField (EditOperation editOperation ,
1076+ List <EditOperation > editOperations ,
1077+ Mapping mapping ) {
10521078 Vertex field = editOperation .getTargetEdge ().getFrom ();
10531079 Vertex objectOrInterface = newSchemaGraph .getFieldsContainerForField (field );
10541080 if (objectOrInterface .isOfType (SchemaGraph .OBJECT )) {
0 commit comments