Skip to content

Commit dbbdc10

Browse files
chore(deps): Update dependency versions to align with Spring Boot 3.3.2 managed dependencies (#487)
* --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> * Resolve breaking changes * Update hibernate.version to 6.5.2.Final * Update hibernate.version to 6.4.6.Final * Update hibernate.version to 6.5.2.Final * Update activiti-cloud.version to 8.6.0 --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Igor Dianov <[email protected]>
1 parent 405ea8b commit dbbdc10

File tree

10 files changed

+52
-88
lines changed

10 files changed

+52
-88
lines changed

autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package com.introproventures.graphql.jpa.query.autoconfigure;
1717

18+
import com.introproventures.graphql.jpa.query.schema.JavaScalarsWiringPostProcessor;
1819
import graphql.GraphQL;
1920
import graphql.execution.instrumentation.Instrumentation;
2021
import graphql.schema.GraphQLSchema;
22+
import java.util.List;
2123
import java.util.function.Consumer;
2224
import org.springframework.beans.factory.ListableBeanFactory;
2325
import org.springframework.beans.factory.ObjectProvider;
@@ -113,4 +115,12 @@ public GraphQlSource graphQlSource(
113115
public JavaScalarsRuntimeWiringConfigurer javaScalarsRuntimeWiringConfigurer() {
114116
return new JavaScalarsRuntimeWiringConfigurer();
115117
}
118+
119+
@Bean
120+
@ConditionalOnMissingBean
121+
public GraphQlSourceBuilderCustomizer javaScalarGraphQlSourceBuilderCustomizer() {
122+
return customizer -> {
123+
customizer.typeVisitorsToTransformSchema(List.of(new JavaScalarsWiringPostProcessor.Visitor()));
124+
};
125+
}
116126
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.introproventures.graphql.jpa.query.autoconfigure;
22

33
import com.introproventures.graphql.jpa.query.schema.JavaScalars;
4-
import com.introproventures.graphql.jpa.query.schema.JavaScalarsWiringPostProcessor;
54
import graphql.schema.idl.RuntimeWiring;
65
import org.springframework.graphql.execution.RuntimeWiringConfigurer;
76

@@ -10,7 +9,5 @@ public class JavaScalarsRuntimeWiringConfigurer implements RuntimeWiringConfigur
109
@Override
1110
public void configure(RuntimeWiring.Builder wiringBuilder) {
1211
JavaScalars.scalars().forEach(wiringBuilder::scalar);
13-
14-
wiringBuilder.transformer(new JavaScalarsWiringPostProcessor());
1512
}
1613
}

autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -363,10 +363,12 @@ public void configure(GraphQLShemaRegistration registry) {
363363
.coercing(new JavaScalars.GraphQLObjectCoercing())
364364
.build()
365365
)
366-
.scalar(ExtendedScalars.GraphQLLong)
367-
.transformer(new JavaScalarsWiringPostProcessor());
366+
.scalar(ExtendedScalars.GraphQLLong);
368367

369-
registry.register(new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring.build()));
368+
registry.register(
369+
new JavaScalarsWiringPostProcessor()
370+
.process(new SchemaGenerator().makeExecutableSchema(typeRegistry, wiring.build()))
371+
);
370372
}
371373
}
372374
}

dependencies/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
</description>
1515

1616
<properties>
17-
<spring-boot.version>3.2.3</spring-boot.version>
18-
<graphql-java.version>21.4</graphql-java.version>
17+
<spring-boot.version>3.3.2</spring-boot.version>
18+
<graphql-java.version>22.1</graphql-java.version>
1919
<evo-inflector.version>1.3</evo-inflector.version>
2020
<joda-time.version>2.12.7</joda-time.version>
21-
<graphql-java-extended-scalars.version>21.0</graphql-java-extended-scalars.version>
21+
<graphql-java-extended-scalars.version>22.0</graphql-java-extended-scalars.version>
2222
<jakarta.persistence-api.version>3.1.0</jakarta.persistence-api.version>
23-
<hibernate.version>6.4.6.Final</hibernate.version>
23+
<hibernate.version>6.5.2.Final</hibernate.version>
2424
</properties>
2525

2626
<dependencyManagement>

scalars/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalarsWiringPostProcessor.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,22 @@
99
import graphql.schema.GraphQLSchemaElement;
1010
import graphql.schema.GraphQLTypeVisitorStub;
1111
import graphql.schema.SchemaTransformer;
12-
import graphql.schema.idl.SchemaGeneratorPostProcessing;
1312
import graphql.util.TraversalControl;
1413
import graphql.util.TraverserContext;
1514
import graphql.util.TreeTransformerUtil;
1615
import java.util.function.Function;
1716

18-
public class JavaScalarsWiringPostProcessor implements SchemaGeneratorPostProcessing {
17+
public class JavaScalarsWiringPostProcessor {
1918

2019
public JavaScalarsWiringPostProcessor() {}
2120

22-
@Override
2321
public GraphQLSchema process(GraphQLSchema originalSchema) {
2422
Visitor visitor = new Visitor();
2523

2624
return SchemaTransformer.transformSchema(originalSchema, visitor);
2725
}
2826

29-
class Visitor extends GraphQLTypeVisitorStub {
27+
public static class Visitor extends GraphQLTypeVisitorStub {
3028

3129
private boolean schemaChanged = false;
3230

schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
import graphql.execution.ExecutionStrategy;
2525
import graphql.execution.instrumentation.ChainedInstrumentation;
2626
import graphql.execution.instrumentation.Instrumentation;
27-
import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation;
28-
import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions;
2927
import graphql.schema.GraphQLCodeRegistry;
3028
import graphql.schema.GraphQLSchema;
3129
import graphql.schema.visibility.GraphqlFieldVisibility;
@@ -45,7 +43,6 @@ public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
4543
private final Supplier<GraphqlFieldVisibility> graphqlFieldVisibility;
4644
private final Supplier<Instrumentation> instrumentation;
4745
private final Supplier<GraphQLContext> graphqlContext;
48-
private final Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions;
4946
private final Supplier<DataLoaderRegistry> dataLoaderRegistry;
5047
private final Supplier<ExecutionStrategy> queryExecutionStrategy;
5148
private final Supplier<ExecutionStrategy> mutationExecutionStrategy;
@@ -57,7 +54,6 @@ private GraphQLJpaExecutorContext(Builder builder) {
5754
this.graphqlFieldVisibility = builder.graphqlFieldVisibility;
5855
this.instrumentation = builder.instrumentation;
5956
this.graphqlContext = builder.graphqlContext;
60-
this.dataLoaderDispatcherInstrumentationOptions = builder.dataLoaderDispatcherInstrumentationOptions;
6157
this.dataLoaderRegistry = builder.dataLoaderRegistry;
6258
this.queryExecutionStrategy = builder.queryExecutionStrategy;
6359
this.mutationExecutionStrategy = builder.mutationExecutionStrategy;
@@ -93,13 +89,7 @@ public DataLoaderRegistry newDataLoaderRegistry() {
9389
}
9490

9591
public Instrumentation newIstrumentation() {
96-
DataLoaderDispatcherInstrumentationOptions options = dataLoaderDispatcherInstrumentationOptions.get();
97-
98-
DataLoaderDispatcherInstrumentation dispatcherInstrumentation = new DataLoaderDispatcherInstrumentation(
99-
options
100-
);
101-
102-
List<Instrumentation> list = Arrays.asList(dispatcherInstrumentation, instrumentation.get());
92+
List<Instrumentation> list = Arrays.asList(instrumentation.get());
10393

10494
return new ChainedInstrumentation(list);
10595
}
@@ -126,27 +116,23 @@ public interface IGraphQLSchemaStage {
126116
}
127117

128118
public interface IBuildStage {
129-
public IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);
119+
IBuildStage executionInputFactory(GraphQLExecutionInputFactory executionInputFactory);
130120

131-
public IBuildStage graphqlFieldVisibility(Supplier<GraphqlFieldVisibility> graphqlFieldVisibility);
121+
IBuildStage graphqlFieldVisibility(Supplier<GraphqlFieldVisibility> graphqlFieldVisibility);
132122

133-
public IBuildStage instrumentation(Supplier<Instrumentation> instrumentation);
123+
IBuildStage instrumentation(Supplier<Instrumentation> instrumentation);
134124

135-
public IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext);
125+
IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext);
136126

137-
public IBuildStage dataLoaderDispatcherInstrumentationOptions(
138-
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
139-
);
127+
IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry);
140128

141-
public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry);
129+
IBuildStage queryExecutionStrategy(Supplier<ExecutionStrategy> queryExecutionStrategy);
142130

143-
public IBuildStage queryExecutionStrategy(Supplier<ExecutionStrategy> queryExecutionStrategy);
131+
IBuildStage mutationExecutionStrategy(Supplier<ExecutionStrategy> mutationExecutionStrategy);
144132

145-
public IBuildStage mutationExecutionStrategy(Supplier<ExecutionStrategy> mutationExecutionStrategy);
133+
IBuildStage subscriptionExecutionStrategy(Supplier<ExecutionStrategy> subscriptionExecutionStrategy);
146134

147-
public IBuildStage subscriptionExecutionStrategy(Supplier<ExecutionStrategy> subscriptionExecutionStrategy);
148-
149-
public GraphQLJpaExecutorContext build();
135+
GraphQLJpaExecutorContext build();
150136
}
151137

152138
/**
@@ -159,7 +145,6 @@ public static final class Builder implements IGraphQLSchemaStage, IBuildStage {
159145
private Supplier<GraphqlFieldVisibility> graphqlFieldVisibility;
160146
private Supplier<Instrumentation> instrumentation;
161147
private Supplier<GraphQLContext> graphqlContext;
162-
private Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions;
163148
private Supplier<DataLoaderRegistry> dataLoaderRegistry;
164149
private Supplier<ExecutionStrategy> queryExecutionStrategy;
165150
private Supplier<ExecutionStrategy> mutationExecutionStrategy;
@@ -197,15 +182,6 @@ public IBuildStage graphqlContext(Supplier<GraphQLContext> graphqlContext) {
197182
return this;
198183
}
199184

200-
@Override
201-
public IBuildStage dataLoaderDispatcherInstrumentationOptions(
202-
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
203-
) {
204-
this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;
205-
206-
return this;
207-
}
208-
209185
@Override
210186
public IBuildStage dataLoaderRegistry(Supplier<DataLoaderRegistry> dataLoaderRegistry) {
211187
this.dataLoaderRegistry = dataLoaderRegistry;

schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactory.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import graphql.execution.SubscriptionExecutionStrategy;
2727
import graphql.execution.instrumentation.Instrumentation;
2828
import graphql.execution.instrumentation.SimpleInstrumentation;
29-
import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions;
3029
import graphql.schema.GraphQLSchema;
3130
import graphql.schema.visibility.DefaultGraphqlFieldVisibility;
3231
import graphql.schema.visibility.GraphqlFieldVisibility;
@@ -45,11 +44,6 @@ public class GraphQLJpaExecutorContextFactory implements GraphQLExecutorContextF
4544
DefaultGraphqlFieldVisibility.DEFAULT_FIELD_VISIBILITY;
4645
private Supplier<Instrumentation> instrumentation = () -> new SimpleInstrumentation();
4746
private Supplier<GraphQLContext> graphqlContext = () -> GraphQLContext.newContext().build();
48-
private Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions = () -> {
49-
DataLoaderDispatcherInstrumentationOptions options = DataLoaderDispatcherInstrumentationOptions.newOptions();
50-
51-
return logger.isDebugEnabled() ? options.includeStatistics(true) : options;
52-
};
5347

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

@@ -74,7 +68,6 @@ public GraphQLExecutorContext newExecutorContext(GraphQLSchema graphQLSchema) {
7468
.graphqlFieldVisibility(graphqlFieldVisibility)
7569
.instrumentation(instrumentation)
7670
.graphqlContext(graphqlContext)
77-
.dataLoaderDispatcherInstrumentationOptions(dataLoaderDispatcherInstrumentationOptions)
7871
.dataLoaderRegistry(dataLoaderRegistry)
7972
.queryExecutionStrategy(queryExecutionStrategy)
8073
.mutationExecutionStrategy(mutationExecutionStrategy)
@@ -106,13 +99,6 @@ public GraphQLJpaExecutorContextFactory withGraphqlContext(Supplier<GraphQLConte
10699
return this;
107100
}
108101

109-
public GraphQLJpaExecutorContextFactory withDataLoaderDispatcherInstrumentationOptions(
110-
Supplier<DataLoaderDispatcherInstrumentationOptions> dataLoaderDispatcherInstrumentationOptions
111-
) {
112-
this.dataLoaderDispatcherInstrumentationOptions = dataLoaderDispatcherInstrumentationOptions;
113-
return this;
114-
}
115-
116102
public GraphQLJpaExecutorContextFactory withQueryExecutionStrategy(
117103
Supplier<ExecutionStrategy> queryExecutionStrategy
118104
) {
@@ -149,8 +135,4 @@ public Supplier<Instrumentation> getInstrumentation() {
149135
public Supplier<GraphQLContext> getGraphqlContext() {
150136
return graphqlContext;
151137
}
152-
153-
public Supplier<DataLoaderDispatcherInstrumentationOptions> getDataLoaderDispatcherInstrumentationOptions() {
154-
return dataLoaderDispatcherInstrumentationOptions;
155-
}
156138
}

schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaQueryFactory.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,16 @@ protected Predicate getObjectFieldPredicate(
13061306
new Field(objectField.getName())
13071307
);
13081308

1309-
if (Arrays.asList(Logical.EXISTS, Logical.NOT_EXISTS).contains(logical)) {
1309+
List<Map<String, Object>> logicalArguments = Optional
1310+
.ofNullable(environment.getArgument(logical.name()))
1311+
.filter(List.class::isInstance)
1312+
.map(List.class::cast)
1313+
.orElseGet(List::of);
1314+
1315+
final var isMultipleLogical =
1316+
logicalArguments.stream().filter(it -> it.containsKey(objectField.getName())).count() >= 1;
1317+
1318+
if (Arrays.asList(Logical.EXISTS, Logical.NOT_EXISTS).contains(logical) || isMultipleLogical) {
13101319
AbstractQuery<?> query = environment.getRoot();
13111320
Subquery<?> subquery = query.subquery(attribute.getJavaType());
13121321
From<?, ?> correlation = Root.class.isInstance(from)
@@ -1329,28 +1338,17 @@ protected Predicate getObjectFieldPredicate(
13291338

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

1332-
return logical == Logical.EXISTS ? exists : cb.not(exists);
1341+
return logical == Logical.NOT_EXISTS ? cb.not(exists) : exists;
13331342
}
13341343

1335-
AbstractQuery<?> query = environment.getRoot();
1336-
Boolean isFetch = environment.getLocalContext();
1337-
boolean isOptional = isOptionalAttribute(attribute);
1338-
List<Map<String, Object>> logicalArguments = Optional
1339-
.ofNullable(environment.getArgument(logical.name()))
1340-
.filter(List.class::isInstance)
1341-
.map(List.class::cast)
1342-
.orElseGet(List::of);
1344+
final AbstractQuery<?> query = environment.getRoot();
1345+
final Boolean isFetch = environment.getLocalContext();
1346+
final boolean isOptional = isOptionalAttribute(attribute);
1347+
1348+
final From<?, ?> context = (isSubquery(query) || isCountQuery(query) || !isFetch)
1349+
? reuseJoin(from, objectField.getName(), isOptional)
1350+
: reuseFetch(from, objectField.getName(), isOptional);
13431351

1344-
From<?, ?> context;
1345-
if (logicalArguments.stream().filter(it -> it.containsKey(objectField.getName())).count() >= 1) {
1346-
context =
1347-
isOptional ? from.join(objectField.getName(), JoinType.LEFT) : from.join(objectField.getName());
1348-
} else {
1349-
context =
1350-
(isSubquery(query) || isCountQuery(query) || !isFetch)
1351-
? reuseJoin(from, objectField.getName(), isOptional)
1352-
: reuseFetch(from, objectField.getName(), isOptional);
1353-
}
13541352
return getArgumentPredicate(
13551353
cb,
13561354
context,

schema/src/test/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContextFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,6 @@ public void testInstrumentationDisabled() {
192192
ExecutionResult result = executor.execute(query);
193193

194194
// then
195-
assertThat(result.getExtensions().get("tracing")).isNull();
195+
assertThat(result.getExtensions()).isNull();
196196
}
197197
}

tests/gatling/pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212

1313
<properties>
1414
<java.version>21</java.version>
15-
<activiti-cloud.version>8.4.0</activiti-cloud.version>
15+
<activiti-cloud.version>8.6.0</activiti-cloud.version>
1616
<gatling.version>3.10.5</gatling.version>
1717
<gatling-maven-plugin.version>4.8.2</gatling-maven-plugin.version>
18+
<hibernate.version>6.4.10.Final</hibernate.version>
1819
</properties>
1920

2021
<dependencies>

0 commit comments

Comments
 (0)