Package graphql.schema.diffing.ana
Class EditOperationAnalyzer
- java.lang.Object
-
- graphql.schema.diffing.ana.EditOperationAnalyzer
-
public class EditOperationAnalyzer extends java.lang.Object
Higher level GraphQL semantic assigned to
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,SchemaDifference.DirectiveDifference>
directiveDifferences
private java.util.Map<java.lang.String,SchemaDifference.EnumDifference>
enumDifferences
private java.util.Map<java.lang.String,SchemaDifference.InputObjectDifference>
inputObjectDifferences
private java.util.Map<java.lang.String,SchemaDifference.InterfaceDifference>
interfaceDifferences
private GraphQLSchema
newSchema
private SchemaGraph
newSchemaGraph
private java.util.Map<java.lang.String,SchemaDifference.ObjectDifference>
objectDifferences
private GraphQLSchema
oldSchema
private SchemaGraph
oldSchemaGraph
private static java.util.List<EditOperation.Operation>
OPERATION_TRAVERSAL_ORDER
The order to traverse edit operations according to the operation.private java.util.Map<java.lang.String,SchemaDifference.ScalarDifference>
scalarDifferences
private static java.util.List<java.lang.String>
TYPE_TRAVERSAL_ORDER
The order to traverse edit operations according to the vertex types involved.private java.util.Map<java.lang.String,SchemaDifference.UnionDifference>
unionDifferences
-
Constructor Summary
Constructors Constructor Description EditOperationAnalyzer(GraphQLSchema oldSchema, GraphQLSchema newSchema, SchemaGraph oldSchemaGraph, SchemaGraph newSchemaGraph)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private 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)
EditOperationAnalysisResult
analyzeEdits(java.util.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, java.util.List<EditOperation> editOperations, Mapping mapping, java.util.function.Predicate<Edge> edgePredicate)
private java.lang.String
getDefaultValueFromEdgeLabel(Edge edge)
private SchemaDifference.DirectiveModification
getDirectiveModification(java.lang.String newName)
private SchemaDifference.EnumModification
getEnumModification(java.lang.String newName)
private SchemaDifference.InputObjectModification
getInputObjectModification(java.lang.String newName)
private SchemaDifference.InterfaceModification
getInterfaceModification(java.lang.String newName)
private SchemaDifference.ObjectModification
getObjectModification(java.lang.String newName)
private SchemaDifference.ScalarModification
getScalarModification(java.lang.String newName)
(package private) static java.util.List<EditOperation>
getTraversalOrder(java.util.List<EditOperation> editOperations)
The input list ofEditOperation
s does not conform to any order.private java.lang.String
getTypeFromEdgeLabel(Edge edge)
private SchemaDifference.UnionModification
getUnionModification(java.lang.String newName)
private void
handleAppliedDirectives(java.util.List<EditOperation> editOperations, Mapping mapping)
private void
handleArgumentChange(EditOperation editOperation, Mapping mapping)
private void
handleArgumentChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
private void
handleEnumValueAdded(EditOperation editOperation)
private void
handleEnumValueChanged(EditOperation editOperation)
private void
handleEnumValueDeleted(EditOperation editOperation)
private void
handleEnumValuesChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
private void
handleImplementsChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
private void
handleInputFieldChange(EditOperation editOperation)
private void
handleTypeChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
private void
handleTypeVertexChanges(java.util.List<EditOperation> editOperations)
private void
handleUnionMemberAdded(EditOperation editOperation)
private void
handleUnionMemberChanges(java.util.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, java.lang.String type)
private static boolean
isAnyVertexOfType(EditOperation edit, java.lang.String type)
private boolean
isArgumentDeletedFromExistingDirective(java.lang.String directiveName, java.lang.String argumentName)
private boolean
isArgumentDeletedFromExistingInterfaceField(java.lang.String interfaceName, java.lang.String fieldName, java.lang.String argumentName)
private boolean
isArgumentDeletedFromExistingObjectField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
private boolean
isArgumentNewForExistingDirective(java.lang.String directiveName, java.lang.String argumentName)
private boolean
isArgumentNewForExistingInterfaceField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
private boolean
isArgumentNewForExistingObjectField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
private boolean
isDirectiveAdded(java.lang.String name)
private boolean
isDirectiveDeleted(java.lang.String name)
private boolean
isEnumAdded(java.lang.String name)
private boolean
isEnumDeleted(java.lang.String name)
private boolean
isEnumValueDeletedFromExistingEnum(java.lang.String enumName, java.lang.String valueName)
private boolean
isFieldDeletedFromExistingInterface(java.lang.String interfaceName, java.lang.String fieldName)
private boolean
isFieldDeletedFromExistingObject(java.lang.String objectName, java.lang.String fieldName)
private boolean
isFieldNewForExistingInterface(java.lang.String interfaceName, java.lang.String fieldName)
private boolean
isFieldNewForExistingObject(java.lang.String objectName, java.lang.String fieldName)
private boolean
isInputFieldAdded(java.lang.String name)
private boolean
isInputFieldDeletedFromExistingInputObject(java.lang.String inputObjectName, java.lang.String fieldName)
private boolean
isInputObjectAdded(java.lang.String name)
private boolean
isInputObjectDeleted(java.lang.String name)
private boolean
isInterfaceAdded(java.lang.String name)
private boolean
isInterfaceDeleted(java.lang.String name)
private boolean
isNewEnumValueForExistingEnum(java.lang.String enumName, java.lang.String valueName)
private boolean
isNewInputFieldExistingInputObject(java.lang.String inputObjectName, java.lang.String fieldName)
private boolean
isObjectAdded(java.lang.String name)
private boolean
isObjectDeleted(java.lang.String name)
private boolean
isScalarAdded(java.lang.String name)
private boolean
isScalarDeleted(java.lang.String name)
private boolean
isTypeEdge(Edge edge)
private boolean
isUnionAdded(java.lang.String name)
private boolean
isUnionDeleted(java.lang.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, java.util.List<EditOperation> editOperations, Mapping mapping)
private void
typeEdgeInsertedForArgument(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
private void
typeEdgeInsertedForField(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
private void
typeEdgeInsertedForInputField(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
-
-
-
Field Detail
-
oldSchema
private final GraphQLSchema oldSchema
-
newSchema
private final GraphQLSchema newSchema
-
oldSchemaGraph
private final SchemaGraph oldSchemaGraph
-
newSchemaGraph
private final SchemaGraph newSchemaGraph
-
objectDifferences
private final java.util.Map<java.lang.String,SchemaDifference.ObjectDifference> objectDifferences
-
interfaceDifferences
private final java.util.Map<java.lang.String,SchemaDifference.InterfaceDifference> interfaceDifferences
-
unionDifferences
private final java.util.Map<java.lang.String,SchemaDifference.UnionDifference> unionDifferences
-
enumDifferences
private final java.util.Map<java.lang.String,SchemaDifference.EnumDifference> enumDifferences
-
inputObjectDifferences
private final java.util.Map<java.lang.String,SchemaDifference.InputObjectDifference> inputObjectDifferences
-
scalarDifferences
private final java.util.Map<java.lang.String,SchemaDifference.ScalarDifference> scalarDifferences
-
directiveDifferences
private final java.util.Map<java.lang.String,SchemaDifference.DirectiveDifference> directiveDifferences
-
OPERATION_TRAVERSAL_ORDER
private static final java.util.List<EditOperation.Operation> OPERATION_TRAVERSAL_ORDER
The order to traverse edit operations according to the operation.- See Also:
getTraversalOrder(List)
-
TYPE_TRAVERSAL_ORDER
private static final java.util.List<java.lang.String> TYPE_TRAVERSAL_ORDER
The order to traverse edit operations according to the vertex types involved.- See Also:
getTraversalOrder(List)
-
-
Constructor Detail
-
EditOperationAnalyzer
public EditOperationAnalyzer(GraphQLSchema oldSchema, GraphQLSchema newSchema, SchemaGraph oldSchemaGraph, SchemaGraph newSchemaGraph)
-
-
Method Detail
-
analyzeEdits
public EditOperationAnalysisResult analyzeEdits(java.util.List<EditOperation> editOperations, Mapping mapping)
-
handleArgumentChanges
private void handleArgumentChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
-
handleAppliedDirectives
private void handleAppliedDirectives(java.util.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(java.util.List<EditOperation> editOperations, Mapping mapping)
-
handleUnionMemberChanges
private void handleUnionMemberChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
-
handleEnumValuesChanges
private void handleEnumValuesChanges(java.util.List<EditOperation> editOperations, Mapping mapping)
-
handleInputFieldChange
private void handleInputFieldChange(EditOperation editOperation)
-
handleArgumentChange
private void handleArgumentChange(EditOperation editOperation, Mapping mapping)
-
handleImplementsChanges
private void handleImplementsChanges(java.util.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(java.util.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, java.util.List<EditOperation> editOperations, Mapping mapping)
-
typeEdgeInsertedForInputField
private void typeEdgeInsertedForInputField(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
-
typeEdgeInsertedForArgument
private void typeEdgeInsertedForArgument(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
-
typeEdgeInsertedForField
private void typeEdgeInsertedForField(EditOperation editOperation, java.util.List<EditOperation> editOperations, Mapping mapping)
-
findDeletedEdge
private EditOperation findDeletedEdge(Vertex targetVertexFrom, java.util.List<EditOperation> editOperations, Mapping mapping, java.util.function.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 java.lang.String getTypeFromEdgeLabel(Edge edge)
-
getDefaultValueFromEdgeLabel
private java.lang.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(java.lang.String name)
-
isDirectiveDeleted
private boolean isDirectiveDeleted(java.lang.String name)
-
isObjectAdded
private boolean isObjectAdded(java.lang.String name)
-
isUnionAdded
private boolean isUnionAdded(java.lang.String name)
-
isUnionDeleted
private boolean isUnionDeleted(java.lang.String name)
-
isEnumDeleted
private boolean isEnumDeleted(java.lang.String name)
-
isEnumAdded
private boolean isEnumAdded(java.lang.String name)
-
isInputObjectAdded
private boolean isInputObjectAdded(java.lang.String name)
-
isInputObjectDeleted
private boolean isInputObjectDeleted(java.lang.String name)
-
isInputFieldAdded
private boolean isInputFieldAdded(java.lang.String name)
-
isNewInputFieldExistingInputObject
private boolean isNewInputFieldExistingInputObject(java.lang.String inputObjectName, java.lang.String fieldName)
-
isInputFieldDeletedFromExistingInputObject
private boolean isInputFieldDeletedFromExistingInputObject(java.lang.String inputObjectName, java.lang.String fieldName)
-
isArgumentNewForExistingDirective
private boolean isArgumentNewForExistingDirective(java.lang.String directiveName, java.lang.String argumentName)
-
isArgumentDeletedFromExistingDirective
private boolean isArgumentDeletedFromExistingDirective(java.lang.String directiveName, java.lang.String argumentName)
-
isArgumentNewForExistingObjectField
private boolean isArgumentNewForExistingObjectField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
-
isArgumentDeletedFromExistingObjectField
private boolean isArgumentDeletedFromExistingObjectField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
-
isArgumentDeletedFromExistingInterfaceField
private boolean isArgumentDeletedFromExistingInterfaceField(java.lang.String interfaceName, java.lang.String fieldName, java.lang.String argumentName)
-
isArgumentNewForExistingInterfaceField
private boolean isArgumentNewForExistingInterfaceField(java.lang.String objectName, java.lang.String fieldName, java.lang.String argumentName)
-
isFieldNewForExistingObject
private boolean isFieldNewForExistingObject(java.lang.String objectName, java.lang.String fieldName)
-
isFieldDeletedFromExistingInterface
private boolean isFieldDeletedFromExistingInterface(java.lang.String interfaceName, java.lang.String fieldName)
-
isFieldDeletedFromExistingObject
private boolean isFieldDeletedFromExistingObject(java.lang.String objectName, java.lang.String fieldName)
-
isNewEnumValueForExistingEnum
private boolean isNewEnumValueForExistingEnum(java.lang.String enumName, java.lang.String valueName)
-
isEnumValueDeletedFromExistingEnum
private boolean isEnumValueDeletedFromExistingEnum(java.lang.String enumName, java.lang.String valueName)
-
isFieldNewForExistingInterface
private boolean isFieldNewForExistingInterface(java.lang.String interfaceName, java.lang.String fieldName)
-
isObjectDeleted
private boolean isObjectDeleted(java.lang.String name)
-
isInterfaceDeleted
private boolean isInterfaceDeleted(java.lang.String name)
-
isInterfaceAdded
private boolean isInterfaceAdded(java.lang.String name)
-
isScalarAdded
private boolean isScalarAdded(java.lang.String name)
-
isScalarDeleted
private boolean isScalarDeleted(java.lang.String name)
-
getObjectModification
private SchemaDifference.ObjectModification getObjectModification(java.lang.String newName)
-
getUnionModification
private SchemaDifference.UnionModification getUnionModification(java.lang.String newName)
-
getEnumModification
private SchemaDifference.EnumModification getEnumModification(java.lang.String newName)
-
getInputObjectModification
private SchemaDifference.InputObjectModification getInputObjectModification(java.lang.String newName)
-
getDirectiveModification
private SchemaDifference.DirectiveModification getDirectiveModification(java.lang.String newName)
-
getInterfaceModification
private SchemaDifference.InterfaceModification getInterfaceModification(java.lang.String newName)
-
getScalarModification
private SchemaDifference.ScalarModification getScalarModification(java.lang.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 java.util.List<EditOperation> getTraversalOrder(java.util.List<EditOperation> editOperations)
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
private static boolean isAnyVertexOfType(EditOperation edit, java.lang.String type)
-
isAnyVertexOfType
private static boolean isAnyVertexOfType(Edge edge, java.lang.String type)
-
-