Skip to content

chore(deps): Update dependency versions to align with Spring Boot 3.3.2 managed dependencies #487

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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()));
};
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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()))
);
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions dependencies/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
</description>

<properties>
<spring-boot.version>3.2.3</spring-boot.version>
<graphql-java.version>21.4</graphql-java.version>
<spring-boot.version>3.3.2</spring-boot.version>
<graphql-java.version>22.1</graphql-java.version>
<evo-inflector.version>1.3</evo-inflector.version>
<joda-time.version>2.12.7</joda-time.version>
<graphql-java-extended-scalars.version>21.0</graphql-java-extended-scalars.version>
<graphql-java-extended-scalars.version>22.0</graphql-java-extended-scalars.version>
<jakarta.persistence-api.version>3.1.0</jakarta.persistence-api.version>
<hibernate.version>6.4.6.Final</hibernate.version>
<hibernate.version>6.5.2.Final</hibernate.version>
</properties>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -45,7 +43,6 @@ public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
private final Supplier<GraphqlFieldVisibility> graphqlFieldVisibility;
private final Supplier<Instrumentation> instrumentation;
private final Supplier<GraphQLContext> graphqlContext;
private final Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions;
private final Supplier<DataLoaderRegistry> dataLoaderRegistry;
private final Supplier<ExecutionStrategy> queryExecutionStrategy;
private final Supplier<ExecutionStrategy> mutationExecutionStrategy;
Expand All @@ -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;
Expand Down Expand Up @@ -93,13 +89,7 @@ public DataLoaderRegistry newDataLoaderRegistry() {
}

public Instrumentation newIstrumentation() {
DataLoaderDispatcherInstrumentationOptions options = dataLoaderDispatcherInstrumentationOptions.get();

DataLoaderDispatcherInstrumentation dispatcherInstrumentation = new DataLoaderDispatcherInstrumentation(
options
);

List<Instrumentation> list = Arrays.asList(dispatcherInstrumentation, instrumentation.get());
List<Instrumentation> list = Arrays.asList(instrumentation.get());

return new ChainedInstrumentation(list);
}
Expand All @@ -126,27 +116,23 @@ public interface IGraphQLSchemaStage {
}

public interface IBuildStage {
public IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);
IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);

public IBuildStage graphqlFieldVisibility(Supplier<GraphqlFieldVisibility> graphqlFieldVisibility);
IBuildStage graphqlFieldVisibility(Supplier<GraphqlFieldVisibility> graphqlFieldVisibility);

public IBuildStage instrumentation(Supplier<Instrumentation> instrumentation);
IBuildStage instrumentation(Supplier<Instrumentation> instrumentation);

public IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext);
IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext);

public IBuildStage dataLoaderDispatcherInstrumentationOptions(
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
);
IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry);

public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry);
IBuildStage queryExecutionStrategy(Supplier<ExecutionStrategy> queryExecutionStrategy);

public IBuildStage queryExecutionStrategy(Supplier<ExecutionStrategy> queryExecutionStrategy);
IBuildStage mutationExecutionStrategy(Supplier<ExecutionStrategy> mutationExecutionStrategy);

public IBuildStage mutationExecutionStrategy(Supplier<ExecutionStrategy> mutationExecutionStrategy);
IBuildStage subscriptionExecutionStrategy(Supplier<ExecutionStrategy> subscriptionExecutionStrategy);

public IBuildStage subscriptionExecutionStrategy(Supplier<ExecutionStrategy> subscriptionExecutionStrategy);

public GraphQLJpaExecutorContext build();
GraphQLJpaExecutorContext build();
}

/**
Expand All @@ -159,7 +145,6 @@ public static final class Builder implements IGraphQLSchemaStage, IBuildStage {
private Supplier<GraphqlFieldVisibility> graphqlFieldVisibility;
private Supplier<Instrumentation> instrumentation;
private Supplier<GraphQLContext> graphqlContext;
private Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions;
private Supplier<DataLoaderRegistry> dataLoaderRegistry;
private Supplier<ExecutionStrategy> queryExecutionStrategy;
private Supplier<ExecutionStrategy> mutationExecutionStrategy;
Expand Down Expand Up @@ -197,15 +182,6 @@ public IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext) {
return this;
}

@Override
public IBuildStage dataLoaderDispatcherInstrumentationOptions(
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
) {
this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;

return this;
}

@Override
public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry) {
this.dataLoaderRegistry = dataLoaderRegistry;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -45,11 +44,6 @@ public class GraphQLJpaExecutorContextFactory implements GraphQLExecutorContextF
DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY;
private Supplier<Instrumentation> instrumentation = () -> new SimpleInstrumentation();
private Supplier<GraphQLContext> graphqlContext = () -> GraphQLContext.newContext().build();
private Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions = () -> {
DataLoaderDispatcherInstrumentationOptions options = DataLoaderDispatcherInstrumentationOptions.newOptions();

return logger.isDebugEnabled() ? options.includeStatistics(true) : options;
};

private Supplier<DataLoaderOptions> dataLoaderOptions = () -> DataLoaderOptions.newOptions();

Expand All @@ -74,7 +68,6 @@ public GraphQLExecutorContext newExecutorContext(GraphQLSchema graphQLSchema) {
.graphqlFieldVisibility(graphqlFieldVisibility)
.instrumentation(instrumentation)
.graphqlContext(graphqlContext)
.dataLoaderDispatcherInstrumentationOptions(dataLoaderDispatcherInstrumentationOptions)
.dataLoaderRegistry(dataLoaderRegistry)
.queryExecutionStrategy(queryExecutionStrategy)
.mutationExecutionStrategy(mutationExecutionStrategy)
Expand Down Expand Up @@ -106,13 +99,6 @@ public GraphQLJpaExecutorContextFactory withGraphqlContext(Supplier<GraphQLConte
return this;
}

public GraphQLJpaExecutorContextFactory withDataLoaderDispatcherInstrumentationOptions(
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
) {
this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;
return this;
}

public GraphQLJpaExecutorContextFactory withQueryExecutionStrategy(
Supplier<ExecutionStrategy> queryExecutionStrategy
) {
Expand Down Expand Up @@ -149,8 +135,4 @@ public Supplier<Instrumentation> getInstrumentation() {
public Supplier<GraphQLContext> getGraphqlContext() {
return graphqlContext;
}

public Supplier<DataLoaderDispatcherInstrumentationOptions> getDataLoaderDispatcherInstrumentationOptions() {
return dataLoaderDispatcherInstrumentationOptions;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1306,7 +1306,16 @@ protected Predicate getObjectFieldPredicate(
new Field(objectField.getName())
);

if (Arrays.asList(Logical.EXISTS, Logical.NOT_EXISTS).contains(logical)) {
List<Map<String, Object>> logicalArguments = Optional
.ofNullable(environment.getArgument(logical.name()))
.filter(List.class::isInstance)
.map(List.class::cast)
.orElseGet(List::of);

final var isMultipleLogical =
logicalArguments.stream().filter(it -> it.containsKey(objectField.getName())).count() >= 1;

if (Arrays.asList(Logical.EXISTS, Logical.NOT_EXISTS).contains(logical) || isMultipleLogical) {
AbstractQuery<?> query = environment.getRoot();
Subquery<?> subquery = query.subquery(attribute.getJavaType());
From<?, ?> correlation = Root.class.isInstance(from)
Expand All @@ -1329,28 +1338,17 @@ protected Predicate getObjectFieldPredicate(

Predicate exists = cb.exists(subquery.select((Join) correlationJoin).where(restriction));

return logical == Logical.EXISTS ? exists : cb.not(exists);
return logical == Logical.NOT_EXISTS ? cb.not(exists) : exists;
}

AbstractQuery<?> query = environment.getRoot();
Boolean isFetch = environment.getLocalContext();
boolean isOptional = isOptionalAttribute(attribute);
List<Map<String, Object>> logicalArguments = Optional
.ofNullable(environment.getArgument(logical.name()))
.filter(List.class::isInstance)
.map(List.class::cast)
.orElseGet(List::of);
final AbstractQuery<?> query = environment.getRoot();
final Boolean isFetch = environment.getLocalContext();
final boolean isOptional = isOptionalAttribute(attribute);

final From<?, ?> context = (isSubquery(query) || isCountQuery(query) || !isFetch)
? reuseJoin(from, objectField.getName(), isOptional)
: reuseFetch(from, objectField.getName(), isOptional);

From<?, ?> context;
if (logicalArguments.stream().filter(it -> it.containsKey(objectField.getName())).count() >= 1) {
context =
isOptional ? from.join(objectField.getName(), JoinType.LEFT) : from.join(objectField.getName());
} else {
context =
(isSubquery(query) || isCountQuery(query) || !isFetch)
? reuseJoin(from, objectField.getName(), isOptional)
: reuseFetch(from, objectField.getName(), isOptional);
}
return getArgumentPredicate(
cb,
context,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,6 @@ public void testInstrumentationDisabled() {
ExecutionResult result = executor.execute(query);

// then
assertThat(result.getExtensions().get("tracing")).isNull();
assertThat(result.getExtensions()).isNull();
}
}
3 changes: 2 additions & 1 deletion tests/gatling/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@

<properties>
<java.version>21</java.version>
<activiti-cloud.version>8.4.0</activiti-cloud.version>
<activiti-cloud.version>8.6.0</activiti-cloud.version>
<gatling.version>3.10.5</gatling.version>
<gatling-maven-plugin.version>4.8.2</gatling-maven-plugin.version>
<hibernate.version>6.4.10.Final</hibernate.version>
</properties>

<dependencies>
Expand Down
Loading