diff --git a/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfiguration.java b/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfiguration.java
index 29b56b0bb..3e33b86eb 100644
--- a/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfiguration.java
+++ b/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfiguration.java
@@ -15,9 +15,11 @@
*/
package com.introproventures.graphql.jpa.query.autoconfigure;
+import com.introproventures.graphql.jpa.query.schema.JavaScalarsWiringPostProcessor;
import graphql.GraphQL;
import graphql.execution.instrumentation.Instrumentation;
import graphql.schema.GraphQLSchema;
+import java.util.List;
import java.util.function.Consumer;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.ObjectProvider;
@@ -113,4 +115,12 @@ public GraphQlSource graphQlSource(
public JavaScalarsRuntimeWiringConfigurer javaScalarsRuntimeWiringConfigurer() {
return new JavaScalarsRuntimeWiringConfigurer();
}
+
+ @Bean
+ @ConditionalOnMissingBean
+ public GraphQlSourceBuilderCustomizer javaScalarGraphQlSourceBuilderCustomizer() {
+ return customizer -> {
+ customizer.typeVisitorsToTransformSchema(List.of(new JavaScalarsWiringPostProcessor.Visitor()));
+ };
+ }
}
diff --git a/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/JavaScalarsRuntimeWiringConfigurer.java b/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/JavaScalarsRuntimeWiringConfigurer.java
index 422e0194f..0cc7fa61d 100644
--- a/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/JavaScalarsRuntimeWiringConfigurer.java
+++ b/autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/JavaScalarsRuntimeWiringConfigurer.java
@@ -1,7 +1,6 @@
package com.introproventures.graphql.jpa.query.autoconfigure;
import com.introproventures.graphql.jpa.query.schema.JavaScalars;
-import com.introproventures.graphql.jpa.query.schema.JavaScalarsWiringPostProcessor;
import graphql.schema.idl.RuntimeWiring;
import org.springframework.graphql.execution.RuntimeWiringConfigurer;
@@ -10,7 +9,5 @@ public class JavaScalarsRuntimeWiringConfigurer implements RuntimeWiringConfigur
@Override
public void configure(RuntimeWiring.Builder wiringBuilder) {
JavaScalars.scalars().forEach(wiringBuilder::scalar);
-
- wiringBuilder.transformer(new JavaScalarsWiringPostProcessor());
}
}
diff --git a/autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java b/autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
index 6e730afec..e2f674575 100644
--- a/autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
+++ b/autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java
@@ -363,10 +363,12 @@ public void configure(GraphQLShemaRegistration registry) {
.coercing(new JavaScalars.GraphQLObjectCoercing())
.build()
)
- .scalar(ExtendedScalars.GraphQLLong)
- .transformer(new JavaScalarsWiringPostProcessor());
+ .scalar(ExtendedScalars.GraphQLLong);
- registry.register(new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring.build()));
+ registry.register(
+ new JavaScalarsWiringPostProcessor()
+ .process(new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring.build()))
+ );
}
}
}
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index 16162f795..5f6de94d0 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -14,13 +14,13 @@
- 3.2.3
- 21.4
+ 3.3.2
+ 22.1
1.3
2.12.7
- 21.0
+ 22.0
3.1.0
- 6.4.6.Final
+ 6.5.2.Final
diff --git a/scalars/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalarsWiringPostProcessor.java b/scalars/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalarsWiringPostProcessor.java
index ed9c52abd..3bfe7a06c 100644
--- a/scalars/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalarsWiringPostProcessor.java
+++ b/scalars/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalarsWiringPostProcessor.java
@@ -9,24 +9,22 @@
import graphql.schema.GraphQLSchemaElement;
import graphql.schema.GraphQLTypeVisitorStub;
import graphql.schema.SchemaTransformer;
-import graphql.schema.idl.SchemaGeneratorPostProcessing;
import graphql.util.TraversalControl;
import graphql.util.TraverserContext;
import graphql.util.TreeTransformerUtil;
import java.util.function.Function;
-public class JavaScalarsWiringPostProcessor implements SchemaGeneratorPostProcessing {
+public class JavaScalarsWiringPostProcessor {
public JavaScalarsWiringPostProcessor() {}
- @Override
public GraphQLSchema process(GraphQLSchema originalSchema) {
Visitor visitor = new Visitor();
return SchemaTransformer.transformSchema(originalSchema, visitor);
}
- class Visitor extends GraphQLTypeVisitorStub {
+ public static class Visitor extends GraphQLTypeVisitorStub {
private boolean schemaChanged = false;
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java
index 29e5cbd04..243fb9d27 100644
--- a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java
+++ b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java
@@ -24,8 +24,6 @@
import graphql.execution.ExecutionStrategy;
import graphql.execution.instrumentation.ChainedInstrumentation;
import graphql.execution.instrumentation.Instrumentation;
-import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation;
-import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions;
import graphql.schema.GraphQLCodeRegistry;
import graphql.schema.GraphQLSchema;
import graphql.schema.visibility.GraphqlFieldVisibility;
@@ -45,7 +43,6 @@ public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
private final Supplier graphqlFieldVisibility;
private final Supplier instrumentation;
private final Supplier graphqlContext;
- private final Supplier dataLoaderDispatcherInstrumentationOptions;
private final Supplier dataLoaderRegistry;
private final Supplier queryExecutionStrategy;
private final Supplier mutationExecutionStrategy;
@@ -57,7 +54,6 @@ private GraphQLJpaExecutorContext(Builder builder) {
this.graphqlFieldVisibility = builder.graphqlFieldVisibility;
this.instrumentation = builder.instrumentation;
this.graphqlContext = builder.graphqlContext;
- this.dataLoaderDispatcherInstrumentationOptions = builder.dataLoaderDispatcherInstrumentationOptions;
this.dataLoaderRegistry = builder.dataLoaderRegistry;
this.queryExecutionStrategy = builder.queryExecutionStrategy;
this.mutationExecutionStrategy = builder.mutationExecutionStrategy;
@@ -93,13 +89,7 @@ public DataLoaderRegistry newDataLoaderRegistry() {
}
public Instrumentation newIstrumentation() {
- DataLoaderDispatcherInstrumentationOptions options = dataLoaderDispatcherInstrumentationOptions.get();
-
- DataLoaderDispatcherInstrumentation dispatcherInstrumentation = new DataLoaderDispatcherInstrumentation(
- options
- );
-
- List list = Arrays.asList(dispatcherInstrumentation, instrumentation.get());
+ List list = Arrays.asList(instrumentation.get());
return new ChainedInstrumentation(list);
}
@@ -126,27 +116,23 @@ public interface IGraphQLSchemaStage {
}
public interface IBuildStage {
- public IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);
+ IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);
- public IBuildStage graphqlFieldVisibility(Supplier graphqlFieldVisibility);
+ IBuildStage graphqlFieldVisibility(Supplier graphqlFieldVisibility);
- public IBuildStage instrumentation(Supplier instrumentation);
+ IBuildStage instrumentation(Supplier instrumentation);
- public IBuildStage graphqlContext(Supplier graphqlContext);
+ IBuildStage graphqlContext(Supplier graphqlContext);
- public IBuildStage dataLoaderDispatcherInstrumentationOptions(
- Supplier dataLoaderDispatcherInstrumentationOptions
- );
+ IBuildStage dataLoaderRegistry(Supplier dataLoaderRegistry);
- public IBuildStage dataLoaderRegistry(Supplier dataLoaderRegistry);
+ IBuildStage queryExecutionStrategy(Supplier queryExecutionStrategy);
- public IBuildStage queryExecutionStrategy(Supplier queryExecutionStrategy);
+ IBuildStage mutationExecutionStrategy(Supplier mutationExecutionStrategy);
- public IBuildStage mutationExecutionStrategy(Supplier mutationExecutionStrategy);
+ IBuildStage subscriptionExecutionStrategy(Supplier subscriptionExecutionStrategy);
- public IBuildStage subscriptionExecutionStrategy(Supplier subscriptionExecutionStrategy);
-
- public GraphQLJpaExecutorContext build();
+ GraphQLJpaExecutorContext build();
}
/**
@@ -159,7 +145,6 @@ public static final class Builder implements IGraphQLSchemaStage, IBuildStage {
private Supplier graphqlFieldVisibility;
private Supplier instrumentation;
private Supplier graphqlContext;
- private Supplier dataLoaderDispatcherInstrumentationOptions;
private Supplier dataLoaderRegistry;
private Supplier queryExecutionStrategy;
private Supplier mutationExecutionStrategy;
@@ -197,15 +182,6 @@ public IBuildStage graphqlContext(Supplier graphqlContext) {
return this;
}
- @Override
- public IBuildStage dataLoaderDispatcherInstrumentationOptions(
- Supplier dataLoaderDispatcherInstrumentationOptions
- ) {
- this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;
-
- return this;
- }
-
@Override
public IBuildStage dataLoaderRegistry(Supplier dataLoaderRegistry) {
this.dataLoaderRegistry = dataLoaderRegistry;
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactory.java b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactory.java
index 2702d83fe..51e930526 100644
--- a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactory.java
+++ b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactory.java
@@ -26,7 +26,6 @@
import graphql.execution.SubscriptionExecutionStrategy;
import graphql.execution.instrumentation.Instrumentation;
import graphql.execution.instrumentation.SimpleInstrumentation;
-import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions;
import graphql.schema.GraphQLSchema;
import graphql.schema.visibility.DefaultGraphqlFieldVisibility;
import graphql.schema.visibility.GraphqlFieldVisibility;
@@ -45,11 +44,6 @@ public class GraphQLJpaExecutorContextFactory implements GraphQLExecutorContextF
DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY;
private Supplier instrumentation = () -> new SimpleInstrumentation();
private Supplier graphqlContext = () -> GraphQLContext.newContext().build();
- private Supplier dataLoaderDispatcherInstrumentationOptions = () -> {
- DataLoaderDispatcherInstrumentationOptions options = DataLoaderDispatcherInstrumentationOptions.newOptions();
-
- return logger.isDebugEnabled() ? options.includeStatistics(true) : options;
- };
private Supplier dataLoaderOptions = () -> DataLoaderOptions.newOptions();
@@ -74,7 +68,6 @@ public GraphQLExecutorContext newExecutorContext(GraphQLSchema graphQLSchema) {
.graphqlFieldVisibility(graphqlFieldVisibility)
.instrumentation(instrumentation)
.graphqlContext(graphqlContext)
- .dataLoaderDispatcherInstrumentationOptions(dataLoaderDispatcherInstrumentationOptions)
.dataLoaderRegistry(dataLoaderRegistry)
.queryExecutionStrategy(queryExecutionStrategy)
.mutationExecutionStrategy(mutationExecutionStrategy)
@@ -106,13 +99,6 @@ public GraphQLJpaExecutorContextFactory withGraphqlContext(Supplier dataLoaderDispatcherInstrumentationOptions
- ) {
- this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;
- return this;
- }
-
public GraphQLJpaExecutorContextFactory withQueryExecutionStrategy(
Supplier queryExecutionStrategy
) {
@@ -149,8 +135,4 @@ public Supplier getInstrumentation() {
public Supplier getGraphqlContext() {
return graphqlContext;
}
-
- public Supplier getDataLoaderDispatcherInstrumentationOptions() {
- return dataLoaderDispatcherInstrumentationOptions;
- }
}
diff --git a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java
index 83f8322df..7e63c1652 100644
--- a/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java
+++ b/schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java
@@ -1306,7 +1306,16 @@ protected Predicate getObjectFieldPredicate(
new Field(objectField.getName())
);
- if (Arrays.asList(Logical.EXISTS, Logical.NOT_EXISTS).contains(logical)) {
+ List