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 GraphQLSchema
private final SchemaGraph
private final Map
<String, SchemaDifference.ObjectDifference> private final GraphQLSchema
private final SchemaGraph
private 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 void
addedDirective
(EditOperation editOperation) private void
addedEnum
(EditOperation editOperation) private void
addedInputObject
(EditOperation editOperation) private void
addedInterface
(EditOperation editOperation) private void
addedObject
(EditOperation editOperation) private void
addedScalar
(EditOperation editOperation) private void
addedUnion
(EditOperation editOperation) analyzeEdits
(List<EditOperation> editOperations, Mapping mapping) private void
appliedDirectiveAdded
(EditOperation editOperation) private void
appliedDirectiveAddedToArgument
(Vertex appliedDirective, Vertex container) private void
appliedDirectiveAddedToField
(Vertex appliedDirective, Vertex container) private void
appliedDirectiveArgumentChanged
(EditOperation editOperation) private void
appliedDirectiveArgumentDeleted
(EditOperation editOperation) private void
appliedDirectiveDeleted
(EditOperation editOperation) private void
appliedDirectiveDeletedFromArgument
(Vertex appliedDirective, Vertex container) private void
appliedDirectiveDeletedFromField
(Vertex appliedDirective, Vertex container) private void
argumentAdded
(EditOperation editOperation) private void
argumentDeleted
(EditOperation editOperation) private void
argumentTypeOrDefaultValueChanged
(EditOperation editOperation, Mapping mapping) private void
changedDirective
(EditOperation editOperation) private void
changedEnum
(EditOperation editOperation) private void
changedInputObject
(EditOperation editOperation) private void
changedInterface
(EditOperation editOperation) private void
changedObject
(EditOperation editOperation) private void
changedScalar
(EditOperation editOperation) private void
changedTypeVertex
(EditOperation editOperation) private void
changedUnion
(EditOperation editOperation) private void
deletedDirective
(EditOperation editOperation) private void
deletedScalar
(EditOperation editOperation) private void
deletedTypeVertex
(EditOperation editOperation) 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.private void
fieldAdded
(EditOperation editOperation) private void
fieldChanged
(EditOperation editOperation) private void
fieldDeleted
(EditOperation editOperation) private EditOperation
findDeletedEdge
(Vertex targetVertexFrom, List<EditOperation> editOperations, Mapping mapping, Predicate<Edge> edgePredicate) private String
getDirectiveModification
(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 ofEditOperation
s does not conform to any order.private String
getTypeFromEdgeLabel
(Edge edge) getUnionModification
(String newName) private void
handleAppliedDirectives
(List<EditOperation> editOperations, Mapping mapping) private void
handleArgumentChange
(EditOperation editOperation, Mapping mapping) private void
handleArgumentChanges
(List<EditOperation> editOperations, Mapping mapping) private void
handleEnumValueAdded
(EditOperation editOperation) private void
handleEnumValueChanged
(EditOperation editOperation) private void
handleEnumValueDeleted
(EditOperation editOperation) private void
handleEnumValuesChanges
(List<EditOperation> editOperations, Mapping mapping) private void
handleImplementsChanges
(List<EditOperation> editOperations, Mapping mapping) private void
handleInputFieldChange
(EditOperation editOperation) private void
handleTypeChanges
(List<EditOperation> editOperations, Mapping mapping) private void
handleTypeVertexChanges
(List<EditOperation> editOperations) private void
handleUnionMemberAdded
(EditOperation editOperation) private void
handleUnionMemberChanges
(List<EditOperation> editOperations, Mapping mapping) private void
handleUnionMemberDeleted
(EditOperation editOperation) private void
inputFieldAdded
(EditOperation editOperation) private void
inputFieldDeleted
(EditOperation editOperation) private void
inputFieldTypeOrDefaultValueChanged
(EditOperation editOperation) private void
insertedTypeVertex
(EditOperation editOperation) private void
interfaceImplementationDeleted
(Edge deletedEdge) private static boolean
isAnyVertexOfType
(Edge edge, String type) private static boolean
isAnyVertexOfType
(EditOperation edit, String type) private boolean
isArgumentDeletedFromExistingDirective
(String directiveName, String argumentName) private boolean
isArgumentDeletedFromExistingInterfaceField
(String interfaceName, String fieldName, String argumentName) private boolean
isArgumentDeletedFromExistingObjectField
(String objectName, String fieldName, String argumentName) private boolean
isArgumentNewForExistingDirective
(String directiveName, String argumentName) private boolean
isArgumentNewForExistingInterfaceField
(String objectName, String fieldName, String argumentName) private boolean
isArgumentNewForExistingObjectField
(String objectName, String fieldName, String argumentName) private boolean
isDirectiveAdded
(String name) private boolean
isDirectiveDeleted
(String name) private boolean
isEnumAdded
(String name) private boolean
isEnumDeleted
(String name) private boolean
isEnumValueDeletedFromExistingEnum
(String enumName, String valueName) private boolean
isFieldDeletedFromExistingInterface
(String interfaceName, String fieldName) private boolean
isFieldDeletedFromExistingObject
(String objectName, String fieldName) private boolean
isFieldNewForExistingInterface
(String interfaceName, String fieldName) private boolean
isFieldNewForExistingObject
(String objectName, String fieldName) private boolean
isInputFieldAdded
(String name) private boolean
isInputFieldDeletedFromExistingInputObject
(String inputObjectName, String fieldName) private boolean
isInputObjectAdded
(String name) private boolean
isInputObjectDeleted
(String name) private boolean
isInterfaceAdded
(String name) private boolean
isInterfaceDeleted
(String name) private boolean
isNewEnumValueForExistingEnum
(String enumName, String valueName) private boolean
isNewInputFieldExistingInputObject
(String inputObjectName, String fieldName) private boolean
isObjectAdded
(String name) private boolean
isObjectDeleted
(String name) private boolean
isScalarAdded
(String name) private boolean
isScalarDeleted
(String name) private boolean
isTypeEdge
(Edge edge) private boolean
isUnionAdded
(String name) private boolean
isUnionDeleted
(String name) private void
newInterfaceAddedToInterfaceOrObject
(Edge newEdge) private void
outputFieldTypeChanged
(EditOperation editOperation) private void
removedEnum
(EditOperation editOperation) private void
removedInputObject
(EditOperation editOperation) private void
removedInterface
(EditOperation editOperation) private void
removedObject
(EditOperation editOperation) private void
removedUnion
(EditOperation editOperation) private void
typeEdgeChanged
(EditOperation editOperation, Mapping mapping) private void
typeEdgeInserted
(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private void
typeEdgeInsertedForArgument
(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private void
typeEdgeInsertedForField
(EditOperation editOperation, List<EditOperation> editOperations, Mapping mapping) private void
typeEdgeInsertedForInputField
(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 ofEditOperation
s 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
-