From e887ca117fcd1ae990ac5929367a584eee7216a0 Mon Sep 17 00:00:00 2001 From: Franklin Wang Date: Mon, 11 Mar 2024 14:43:31 +1100 Subject: [PATCH 1/2] Return empty singleton DirectivesHolder if directives are empty --- src/main/java/graphql/DirectivesUtil.java | 10 ++++++++-- src/main/java/graphql/schema/GraphQLArgument.java | 2 +- src/main/java/graphql/schema/GraphQLEnumType.java | 2 +- .../graphql/schema/GraphQLEnumValueDefinition.java | 2 +- .../java/graphql/schema/GraphQLFieldDefinition.java | 2 +- .../java/graphql/schema/GraphQLInputObjectField.java | 2 +- .../java/graphql/schema/GraphQLInputObjectType.java | 2 +- src/main/java/graphql/schema/GraphQLInterfaceType.java | 2 +- src/main/java/graphql/schema/GraphQLObjectType.java | 2 +- src/main/java/graphql/schema/GraphQLScalarType.java | 2 +- src/main/java/graphql/schema/GraphQLUnionType.java | 2 +- 11 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/main/java/graphql/DirectivesUtil.java b/src/main/java/graphql/DirectivesUtil.java index 0a560f7233..c539cfcd89 100644 --- a/src/main/java/graphql/DirectivesUtil.java +++ b/src/main/java/graphql/DirectivesUtil.java @@ -91,7 +91,6 @@ public static GraphQLDirective getFirstDirective(String name, Map toAppliedDirectives(GraphQLDirectiveContainer directiveContainer) { @@ -104,7 +103,6 @@ public static List toAppliedDirectives(GraphQLDirective * * @param appliedDirectives the applied directives to use * @param directives the legacy directives to use - * * @return a combined list unique by name */ public static List toAppliedDirectives(Collection appliedDirectives, Collection directives) { @@ -127,6 +125,7 @@ public static List toAppliedDirectives(Collection> allDirectivesByName; private final ImmutableMap nonRepeatableDirectivesByName; @@ -145,7 +144,14 @@ public DirectivesHolder(Collection allDirectives, Collection directives, List appliedDirectives) { + if (directives.isEmpty() && appliedDirectives.isEmpty()) { + return EMPTY_HOLDER; + } + return new DirectivesHolder(directives, appliedDirectives); } public ImmutableMap> getAllDirectivesByName() { diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 99919b48b2..5f52f294cb 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -82,7 +82,7 @@ private GraphQLArgument(String name, this.value = value; this.definition = definition; this.deprecationReason = deprecationReason; - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); } diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index 00ced1b451..0e9d739500 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -66,7 +66,7 @@ private GraphQLEnumType(String name, this.description = description; this.definition = definition; this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.valueDefinitionMap = buildMap(values); } diff --git a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java index 4d34417773..4aba114c7b 100644 --- a/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java +++ b/src/main/java/graphql/schema/GraphQLEnumValueDefinition.java @@ -48,7 +48,7 @@ private GraphQLEnumValueDefinition(String name, this.description = description; this.value = value; this.deprecationReason = deprecationReason; - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.definition = definition; } diff --git a/src/main/java/graphql/schema/GraphQLFieldDefinition.java b/src/main/java/graphql/schema/GraphQLFieldDefinition.java index c717c929a2..8a06406439 100644 --- a/src/main/java/graphql/schema/GraphQLFieldDefinition.java +++ b/src/main/java/graphql/schema/GraphQLFieldDefinition.java @@ -66,7 +66,7 @@ private GraphQLFieldDefinition(String name, this.originalType = type; this.dataFetcherFactory = dataFetcherFactory; this.arguments = ImmutableList.copyOf(arguments); - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.deprecationReason = deprecationReason; this.definition = definition; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index 9a9aa0a85f..60e680fb30 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -62,7 +62,7 @@ private GraphQLInputObjectField( this.originalType = type; this.defaultValue = defaultValue; this.description = description; - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.definition = definition; this.deprecationReason = deprecationReason; } diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index 81b0d63160..9929f93493 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -61,7 +61,7 @@ private GraphQLInputObjectType(String name, this.description = description; this.definition = definition; this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); - this.directives = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directives = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.fieldMap = buildDefinitionMap(fields); this.isOneOf = hasOneOf(directives, appliedDirectives); } diff --git a/src/main/java/graphql/schema/GraphQLInterfaceType.java b/src/main/java/graphql/schema/GraphQLInterfaceType.java index e0159a5ee0..765d4bfadc 100644 --- a/src/main/java/graphql/schema/GraphQLInterfaceType.java +++ b/src/main/java/graphql/schema/GraphQLInterfaceType.java @@ -77,7 +77,7 @@ private GraphQLInterfaceType(String name, this.interfaceComparator = interfaceComparator; this.originalInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.fieldDefinitionsByName = buildDefinitionMap(fieldDefinitions); } diff --git a/src/main/java/graphql/schema/GraphQLObjectType.java b/src/main/java/graphql/schema/GraphQLObjectType.java index b687215a68..4aa0a17003 100644 --- a/src/main/java/graphql/schema/GraphQLObjectType.java +++ b/src/main/java/graphql/schema/GraphQLObjectType.java @@ -74,7 +74,7 @@ private GraphQLObjectType(String name, this.originalInterfaces = ImmutableList.copyOf(sortTypes(interfaceComparator, interfaces)); this.definition = definition; this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.fieldDefinitionsByName = buildDefinitionMap(fieldDefinitions); } diff --git a/src/main/java/graphql/schema/GraphQLScalarType.java b/src/main/java/graphql/schema/GraphQLScalarType.java index 137a6047c0..fccfb0013b 100644 --- a/src/main/java/graphql/schema/GraphQLScalarType.java +++ b/src/main/java/graphql/schema/GraphQLScalarType.java @@ -64,7 +64,7 @@ private GraphQLScalarType(String name, this.description = description; this.coercing = coercing; this.definition = definition; - this.directivesHolder = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directivesHolder = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); this.specifiedByUrl = specifiedByUrl; } diff --git a/src/main/java/graphql/schema/GraphQLUnionType.java b/src/main/java/graphql/schema/GraphQLUnionType.java index 6c5fffce39..9af647c6c4 100644 --- a/src/main/java/graphql/schema/GraphQLUnionType.java +++ b/src/main/java/graphql/schema/GraphQLUnionType.java @@ -69,7 +69,7 @@ private GraphQLUnionType(String name, this.typeResolver = typeResolver; this.definition = definition; this.extensionDefinitions = ImmutableList.copyOf(extensionDefinitions); - this.directives = new DirectivesUtil.DirectivesHolder(directives, appliedDirectives); + this.directives = DirectivesUtil.DirectivesHolder.create(directives, appliedDirectives); } void replaceTypes(List types) { From 9d41e986c7caf086c85d84d9cf35e5c293f9a53a Mon Sep 17 00:00:00 2001 From: Franklin Wang Date: Mon, 11 Mar 2024 15:52:47 +1100 Subject: [PATCH 2/2] Fix build --- src/main/java/graphql/DirectivesUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/DirectivesUtil.java b/src/main/java/graphql/DirectivesUtil.java index c539cfcd89..e4a3d45d90 100644 --- a/src/main/java/graphql/DirectivesUtil.java +++ b/src/main/java/graphql/DirectivesUtil.java @@ -9,6 +9,7 @@ import graphql.util.FpKit; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -125,7 +126,7 @@ public static List toAppliedDirectives(Collection> allDirectivesByName; private final ImmutableMap nonRepeatableDirectivesByName;