Package graphql.schema.diffing.ana
Class EditOperationAnalyzer
java.lang.Object
graphql.schema.diffing.ana.EditOperationAnalyzer
Higher level GraphQL semantic assigned to
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<String, SchemaDifference.DirectiveDifference> private final Map<String, SchemaDifference.EnumDifference> private final Map<String, SchemaDifference.InputObjectDifference> private final Map<String, SchemaDifference.InterfaceDifference> private final GraphQLSchemaprivate final SchemaGraphprivate final Map<String, SchemaDifference.ObjectDifference> private final GraphQLSchemaprivate final SchemaGraphprivate static final List<EditOperation.Operation> The order to traverse edit operations according to the operation.private final Map<String, SchemaDifference.ScalarDifference> The order to traverse edit operations according to the vertex types involved.private final Map<String, SchemaDifference.UnionDifference> -
Constructor Summary
ConstructorsConstructorDescriptionEditOperationAnalyzer(GraphQLSchema oldSchema, GraphQLSchema newSchema, SchemaGraph oldSchemaGraph, SchemaGraph newSchemaGraph) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddedDirective(EditOperation editOperation) private voidaddedEnum(EditOperation editOperation) private voidaddedInputObject(EditOperation editOperation) private voidaddedInterface(EditOperation editOperation) private voidaddedObject(EditOperation editOperation) private voidaddedScalar(EditOperation editOperation) private voidaddedUnion(EditOperation editOperation) analyzeEdits(List<EditOperation> editOperations, Mapping mapping) private voidappliedDirectiveAdded(EditOperation editOperation) private voidappliedDirectiveAddedToArgument(Vertex appliedDirective, Vertex container) private voidappliedDirectiveAddedToField(Vertex appliedDirective, Vertex container) private voidappliedDirectiveArgumentChanged(EditOperation editOperation) private voidappliedDirectiveArgumentDeleted(EditOperation editOperation) private voidappliedDirectiveDeleted(EditOperation editOperation) private voidappliedDirectiveDeletedFromArgument(Vertex appliedDirective, Vertex container) private voidappliedDirectiveDeletedFromField(Vertex appliedDirective, Vertex container) private voidargumentAdded(EditOperation editOperation) private voidargumentDeleted(EditOperation editOperation) private voidargumentTypeOrDefaultValueChanged(EditOperation editOperation, Mapping mapping) private voidchangedDirective(EditOperation editOperation) private voidchangedEnum(EditOperation editOperation) private voidchangedInputObject(EditOperation editOperation) private voidchangedInterface(EditOperation editOperation) private voidchangedObject(EditOperation editOperation) private voidchangedScalar(EditOperation editOperation) private voidchangedTypeVertex(EditOperation editOperation) private voidchangedUnion(EditOperation editOperation) private voiddeletedDirective(EditOperation editOperation) private voiddeletedScalar(EditOperation editOperation) private voiddeletedTypeVertex(EditOperation editOperation) private booleandoesArgumentChangeMakeSense(Vertex oldArgument, Vertex newArgument, Mapping mapping) Sometimes the diffing algorithm will give us an argument change when the argument container changed i.e.private voidfieldAdded(EditOperation editOperation) private voidfieldChanged(EditOperation editOperation) private voidfieldDeleted(EditOperation editOperation) private EditOperationfindDeletedEdge(Vertex targetVertexFrom, List<EditOperation> editOperations, Mapping mapping, Predicate<Edge> edgePredicate) private StringgetDirectiveModification(String newName) getEnumModification(String newName) getInputObjectModification(String newName) getInterfaceModification(String newName) getObjectModification(String newName) getScalarModification(String newName) (package private) static List<EditOperation> getTraversalOrder(List<EditOperation> editOperations) The input list ofEditOperations does not conform to any order.private StringgetTypeFromEdgeLabel(Edge edge) getUnionModification(String newName) private voidhandleAppliedDirectives(List<EditOperation> editOperations, Mapping mapping) private voidhandleArgumentChange(EditOperation editOperation, Mapping mapping) private voidhandleArgumentChanges(List<EditOperation> editOperations, Mapping mapping) private voidhandleEnumValueAdded(EditOperation editOperation) private voidhandleEnumValueChanged(EditOperation editOperation) private voidhandleEnumValueDeleted(EditOperation editOperation) private voidhandleEnumValuesChanges(List<EditOperation> editOperations, Mapping mapping) private voidhandleImplementsChanges(List<EditOperation> editOperations, Mapping mapping) private voidhandleInputFieldChange(EditOperation editOperation) private voidhandleTypeChanges(List<EditOperation> editOperations, Mapping mapping) private voidhandleTypeVertexChanges(List<EditOperation> editOperations) private voidhandleUnionMemberAdded(EditOperation editOperation) private voidhandleUnionMemberChanges(List<EditOperation> editOperations, Mapping mapping) private voidhandleUnionMemberDeleted(EditOperation editOperation) private voidinputFieldAdded(EditOperation editOperation) private voidinputFieldDeleted(EditOperation editOperation) private voidinputFieldTypeOrDefaultValueChanged(EditOperation editOperation) private voidinsertedTypeVertex(EditOperation editOperation) private voidinterfaceImplementationDeleted(Edge deletedEdge) private static booleanisAnyVertexOfType(Edge edge, String type) private static booleanisAnyVertexOfType(EditOperation edit, String type) private booleanisArgumentDeletedFromExistingDirective(String directiveName, String argumentName) private booleanisArgumentDeletedFromExistingInterfaceField(String interfaceName, String fieldName, String argumentName) private booleanisArgumentDeletedFromExistingObjectField(String objectName, String fieldName, String argumentName) private booleanisArgumentNewForExistingDirective(String directiveName, String argumentName) private booleanisArgumentNewForExistingInterfaceField(String objectName, String fieldName, String argumentName) private booleanisArgumentNewForExistingObjectField(String objectName, String fieldName, String argumentName) private booleanisDirectiveAdded(String name) private booleanisDirectiveDeleted(String name) private booleanisEnumAdded(String name) private booleanisEnumDeleted(String name) private booleanisEnumValueDeletedFromExistingEnum(String enumName, String valueName) private booleanisFieldDeletedFromExistingInterface(String interfaceName, String fieldName) private booleanisFieldDeletedFromExistingObject(String objectName, String fieldName) private booleanisFieldNewForExistingInterface(String interfaceName, String fieldName) private booleanisFieldNewForExistingObject(String objectName, String fieldName) private booleanisInputFieldAdded(String name) private booleanisInputFieldDeletedFromExistingInputObject(String inputObjectName, String fieldName) private booleanisInputObjectAdded(String name) private booleanisInputObjectDeleted(String name) private booleanisInterfaceAdded(String name) private booleanisInterfaceDeleted(String name) private booleanisNewEnumValueForExistingEnum(String enumName, String valueName) private booleanisNewInputFieldExistingInputObject(String inputObjectName, String fieldName) private booleanisObjectAdded(String name) private booleanisObjectDeleted(String name) private booleanisScalarAdded(String name) private booleanisScalarDeleted(String name) private booleanisTypeEdge(Edge edge) private booleanisUnionAdded(String name) private booleanisUnionDeleted(String name) private voidnewInterfaceAddedToInterfaceOrObject(Edge newEdge) private voidoutputFieldTypeChanged(EditOperation editOperation) private voidremovedEnum(EditOperation editOperation) private voidremovedInputObject(EditOperation editOperation) private voidremovedInterface(EditOperation editOperation) private voidremovedObject(EditOperation editOperation) private voidremovedUnion(EditOperation editOperation) private voidtypeEdgeChanged(EditOperation editOperation, Mapping mapping) private voidtypeEdgeInserted(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private voidtypeEdgeInsertedForArgument(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private voidtypeEdgeInsertedForField(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private voidtypeEdgeInsertedForInputField(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping)
-
Field Details
-
oldSchema
-
newSchema
-
oldSchemaGraph
-
newSchemaGraph
-
objectDifferences
-
interfaceDifferences
-
unionDifferences
-
enumDifferences
-
inputObjectDifferences
-
scalarDifferences
-
directiveDifferences
-
OPERATION_TRAVERSAL_ORDER
The order to traverse edit operations according to the operation.- See Also:
-
TYPE_TRAVERSAL_ORDER
The order to traverse edit operations according to the vertex types involved.- See Also:
-
-
Constructor Details
-
EditOperationAnalyzer
public EditOperationAnalyzer(GraphQLSchema oldSchema, GraphQLSchema newSchema, SchemaGraph oldSchemaGraph, SchemaGraph newSchemaGraph)
-
-
Method Details
-
analyzeEdits
public EditOperationAnalysisResult analyzeEdits(List<EditOperation> editOperations, Mapping mapping) -
handleArgumentChanges
-
handleAppliedDirectives
-
appliedDirectiveDeleted
-
appliedDirectiveArgumentDeleted
-
appliedDirectiveArgumentChanged
-
appliedDirectiveAdded
-
appliedDirectiveDeletedFromField
-
appliedDirectiveAddedToField
-
appliedDirectiveDeletedFromArgument
-
appliedDirectiveAddedToArgument
-
handleTypeChanges
-
handleUnionMemberChanges
-
handleEnumValuesChanges
-
handleInputFieldChange
-
handleArgumentChange
-
handleImplementsChanges
-
handleUnionMemberAdded
-
handleUnionMemberDeleted
-
handleEnumValueAdded
-
handleEnumValueDeleted
-
handleEnumValueChanged
-
fieldChanged
-
inputFieldAdded
-
fieldAdded
-
inputFieldDeleted
-
fieldDeleted
-
handleTypeVertexChanges
-
insertedTypeVertex
-
deletedTypeVertex
-
changedTypeVertex
-
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
-
inputFieldTypeOrDefaultValueChanged
-
argumentTypeOrDefaultValueChanged
-
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
-
getTypeFromEdgeLabel
-
getDefaultValueFromEdgeLabel
-
isTypeEdge
-
interfaceImplementationDeleted
-
newInterfaceAddedToInterfaceOrObject
-
isDirectiveAdded
-
isDirectiveDeleted
-
isObjectAdded
-
isUnionAdded
-
isUnionDeleted
-
isEnumDeleted
-
isEnumAdded
-
isInputObjectAdded
-
isInputObjectDeleted
-
isInputFieldAdded
-
isNewInputFieldExistingInputObject
-
isInputFieldDeletedFromExistingInputObject
-
isArgumentNewForExistingDirective
-
isArgumentDeletedFromExistingDirective
-
isArgumentNewForExistingObjectField
-
isArgumentDeletedFromExistingObjectField
-
isArgumentDeletedFromExistingInterfaceField
-
isArgumentNewForExistingInterfaceField
-
isFieldNewForExistingObject
-
isFieldDeletedFromExistingInterface
-
isFieldDeletedFromExistingObject
-
isNewEnumValueForExistingEnum
-
isEnumValueDeletedFromExistingEnum
-
isFieldNewForExistingInterface
-
isObjectDeleted
-
isInterfaceDeleted
-
isInterfaceAdded
-
isScalarAdded
-
isScalarDeleted
-
getObjectModification
-
getUnionModification
-
getEnumModification
-
getInputObjectModification
-
getDirectiveModification
-
getInterfaceModification
-
getScalarModification
-
addedObject
-
addedInterface
-
addedUnion
-
addedInputObject
-
addedEnum
-
addedScalar
-
addedDirective
-
removedObject
-
removedInterface
-
removedUnion
-
removedInputObject
-
removedEnum
-
deletedScalar
-
deletedDirective
-
argumentDeleted
-
argumentAdded
-
changedEnum
-
changedScalar
-
changedInputObject
-
changedDirective
-
changedObject
-
changedInterface
-
changedUnion
-
getTraversalOrder
The input list ofEditOperations 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
-
isAnyVertexOfType
-