Class EditOperationAnalyzer

java.lang.Object
graphql.schema.diffing.ana.EditOperationAnalyzer

public class EditOperationAnalyzer extends Object
Higher level GraphQL semantic assigned to
  • Field Details

  • Constructor Details

  • Method Details

    • analyzeEdits

      public EditOperationAnalysisResult analyzeEdits(List<EditOperation> editOperations, Mapping mapping)
    • handleArgumentChanges

      private void handleArgumentChanges(List<EditOperation> editOperations, Mapping mapping)
    • handleAppliedDirectives

      private void handleAppliedDirectives(List<EditOperation> editOperations, Mapping mapping)
    • appliedDirectiveDeleted

      private void appliedDirectiveDeleted(EditOperation editOperation)
    • appliedDirectiveArgumentDeleted

      private void appliedDirectiveArgumentDeleted(EditOperation editOperation)
    • appliedDirectiveArgumentChanged

      private void appliedDirectiveArgumentChanged(EditOperation editOperation)
    • appliedDirectiveAdded

      private void appliedDirectiveAdded(EditOperation editOperation)
    • appliedDirectiveDeletedFromField

      private void appliedDirectiveDeletedFromField(Vertex appliedDirective, Vertex container)
    • appliedDirectiveAddedToField

      private void appliedDirectiveAddedToField(Vertex appliedDirective, Vertex container)
    • appliedDirectiveDeletedFromArgument

      private void appliedDirectiveDeletedFromArgument(Vertex appliedDirective, Vertex container)
    • appliedDirectiveAddedToArgument

      private void appliedDirectiveAddedToArgument(Vertex appliedDirective, Vertex container)
    • handleTypeChanges

      private void handleTypeChanges(List<EditOperation> editOperations, Mapping mapping)
    • handleUnionMemberChanges

      private void handleUnionMemberChanges(List<EditOperation> editOperations, Mapping mapping)
    • handleEnumValuesChanges

      private void handleEnumValuesChanges(List<EditOperation> editOperations, Mapping mapping)
    • handleInputFieldChange

      private void handleInputFieldChange(EditOperation editOperation)
    • handleArgumentChange

      private void handleArgumentChange(EditOperation editOperation, Mapping mapping)
    • handleImplementsChanges

      private void handleImplementsChanges(List<EditOperation> editOperations, Mapping mapping)
    • handleUnionMemberAdded

      private void handleUnionMemberAdded(EditOperation editOperation)
    • handleUnionMemberDeleted

      private void handleUnionMemberDeleted(EditOperation editOperation)
    • handleEnumValueAdded

      private void handleEnumValueAdded(EditOperation editOperation)
    • handleEnumValueDeleted

      private void handleEnumValueDeleted(EditOperation editOperation)
    • handleEnumValueChanged

      private void handleEnumValueChanged(EditOperation editOperation)
    • fieldChanged

      private void fieldChanged(EditOperation editOperation)
    • inputFieldAdded

      private void inputFieldAdded(EditOperation editOperation)
    • fieldAdded

      private void fieldAdded(EditOperation editOperation)
    • inputFieldDeleted

      private void inputFieldDeleted(EditOperation editOperation)
    • fieldDeleted

      private void fieldDeleted(EditOperation editOperation)
    • handleTypeVertexChanges

      private void handleTypeVertexChanges(List<EditOperation> editOperations)
    • insertedTypeVertex

      private void insertedTypeVertex(EditOperation editOperation)
    • deletedTypeVertex

      private void deletedTypeVertex(EditOperation editOperation)
    • changedTypeVertex

      private void changedTypeVertex(EditOperation editOperation)
    • typeEdgeInserted

      private void typeEdgeInserted(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping)
    • typeEdgeInsertedForInputField

      private void typeEdgeInsertedForInputField(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping)
    • typeEdgeInsertedForArgument

      private void typeEdgeInsertedForArgument(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping)
    • typeEdgeInsertedForField

      private void typeEdgeInsertedForField(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping)
    • findDeletedEdge

      private EditOperation findDeletedEdge(Vertex targetVertexFrom, List<EditOperation> editOperations, Mapping mapping, Predicate<Edge> edgePredicate)
    • typeEdgeChanged

      private void typeEdgeChanged(EditOperation editOperation, Mapping mapping)
    • inputFieldTypeOrDefaultValueChanged

      private void inputFieldTypeOrDefaultValueChanged(EditOperation editOperation)
    • argumentTypeOrDefaultValueChanged

      private void argumentTypeOrDefaultValueChanged(EditOperation editOperation, Mapping mapping)
    • doesArgumentChangeMakeSense

      private boolean doesArgumentChangeMakeSense(Vertex oldArgument, Vertex newArgument, Mapping mapping)
      Sometimes the diffing algorithm will give us an argument change when the argument container changed i.e. the argument was "moved" around because the deleted and newly added arguments look similar.

      We only want to report argument type changes if it makes sense i.e. if the argument container was the same.

    • outputFieldTypeChanged

      private void outputFieldTypeChanged(EditOperation editOperation)
    • getTypeFromEdgeLabel

      private String getTypeFromEdgeLabel(Edge edge)
    • getDefaultValueFromEdgeLabel

      private String getDefaultValueFromEdgeLabel(Edge edge)
    • isTypeEdge

      private boolean isTypeEdge(Edge edge)
    • interfaceImplementationDeleted

      private void interfaceImplementationDeleted(Edge deletedEdge)
    • newInterfaceAddedToInterfaceOrObject

      private void newInterfaceAddedToInterfaceOrObject(Edge newEdge)
    • isDirectiveAdded

      private boolean isDirectiveAdded(String name)
    • isDirectiveDeleted

      private boolean isDirectiveDeleted(String name)
    • isObjectAdded

      private boolean isObjectAdded(String name)
    • isUnionAdded

      private boolean isUnionAdded(String name)
    • isUnionDeleted

      private boolean isUnionDeleted(String name)
    • isEnumDeleted

      private boolean isEnumDeleted(String name)
    • isEnumAdded

      private boolean isEnumAdded(String name)
    • isInputObjectAdded

      private boolean isInputObjectAdded(String name)
    • isInputObjectDeleted

      private boolean isInputObjectDeleted(String name)
    • isInputFieldAdded

      private boolean isInputFieldAdded(String name)
    • isNewInputFieldExistingInputObject

      private boolean isNewInputFieldExistingInputObject(String inputObjectName, String fieldName)
    • isInputFieldDeletedFromExistingInputObject

      private boolean isInputFieldDeletedFromExistingInputObject(String inputObjectName, String fieldName)
    • isArgumentNewForExistingDirective

      private boolean isArgumentNewForExistingDirective(String directiveName, String argumentName)
    • isArgumentDeletedFromExistingDirective

      private boolean isArgumentDeletedFromExistingDirective(String directiveName, String argumentName)
    • isArgumentNewForExistingObjectField

      private boolean isArgumentNewForExistingObjectField(String objectName, String fieldName, String argumentName)
    • isArgumentDeletedFromExistingObjectField

      private boolean isArgumentDeletedFromExistingObjectField(String objectName, String fieldName, String argumentName)
    • isArgumentDeletedFromExistingInterfaceField

      private boolean isArgumentDeletedFromExistingInterfaceField(String interfaceName, String fieldName, String argumentName)
    • isArgumentNewForExistingInterfaceField

      private boolean isArgumentNewForExistingInterfaceField(String objectName, String fieldName, String argumentName)
    • isFieldNewForExistingObject

      private boolean isFieldNewForExistingObject(String objectName, String fieldName)
    • isFieldDeletedFromExistingInterface

      private boolean isFieldDeletedFromExistingInterface(String interfaceName, String fieldName)
    • isFieldDeletedFromExistingObject

      private boolean isFieldDeletedFromExistingObject(String objectName, String fieldName)
    • isNewEnumValueForExistingEnum

      private boolean isNewEnumValueForExistingEnum(String enumName, String valueName)
    • isEnumValueDeletedFromExistingEnum

      private boolean isEnumValueDeletedFromExistingEnum(String enumName, String valueName)
    • isFieldNewForExistingInterface

      private boolean isFieldNewForExistingInterface(String interfaceName, String fieldName)
    • isObjectDeleted

      private boolean isObjectDeleted(String name)
    • isInterfaceDeleted

      private boolean isInterfaceDeleted(String name)
    • isInterfaceAdded

      private boolean isInterfaceAdded(String name)
    • isScalarAdded

      private boolean isScalarAdded(String name)
    • isScalarDeleted

      private boolean isScalarDeleted(String name)
    • getObjectModification

      private SchemaDifference.ObjectModification getObjectModification(String newName)
    • getUnionModification

      private SchemaDifference.UnionModification getUnionModification(String newName)
    • getEnumModification

      private SchemaDifference.EnumModification getEnumModification(String newName)
    • getInputObjectModification

      private SchemaDifference.InputObjectModification getInputObjectModification(String newName)
    • getDirectiveModification

      private SchemaDifference.DirectiveModification getDirectiveModification(String newName)
    • getInterfaceModification

      private SchemaDifference.InterfaceModification getInterfaceModification(String newName)
    • getScalarModification

      private SchemaDifference.ScalarModification getScalarModification(String newName)
    • addedObject

      private void addedObject(EditOperation editOperation)
    • addedInterface

      private void addedInterface(EditOperation editOperation)
    • addedUnion

      private void addedUnion(EditOperation editOperation)
    • addedInputObject

      private void addedInputObject(EditOperation editOperation)
    • addedEnum

      private void addedEnum(EditOperation editOperation)
    • addedScalar

      private void addedScalar(EditOperation editOperation)
    • addedDirective

      private void addedDirective(EditOperation editOperation)
    • removedObject

      private void removedObject(EditOperation editOperation)
    • removedInterface

      private void removedInterface(EditOperation editOperation)
    • removedUnion

      private void removedUnion(EditOperation editOperation)
    • removedInputObject

      private void removedInputObject(EditOperation editOperation)
    • removedEnum

      private void removedEnum(EditOperation editOperation)
    • deletedScalar

      private void deletedScalar(EditOperation editOperation)
    • deletedDirective

      private void deletedDirective(EditOperation editOperation)
    • argumentDeleted

      private void argumentDeleted(EditOperation editOperation)
    • argumentAdded

      private void argumentAdded(EditOperation editOperation)
    • changedEnum

      private void changedEnum(EditOperation editOperation)
    • changedScalar

      private void changedScalar(EditOperation editOperation)
    • changedInputObject

      private void changedInputObject(EditOperation editOperation)
    • changedDirective

      private void changedDirective(EditOperation editOperation)
    • changedObject

      private void changedObject(EditOperation editOperation)
    • changedInterface

      private void changedInterface(EditOperation editOperation)
    • changedUnion

      private void changedUnion(EditOperation editOperation)
    • getTraversalOrder

      static List<EditOperation> getTraversalOrder(List<EditOperation> editOperations)
      The input list of EditOperations does not conform to any order.

      We need to sort it as we sometimes rely on the parents being processed first.

      e.g. we ignore a new argument if the parent of the argument is new. However, if the argument addition is processed before the

    • isAnyVertexOfType

      private static boolean isAnyVertexOfType(EditOperation edit, String type)
    • isAnyVertexOfType

      private static boolean isAnyVertexOfType(Edge edge, String type)