Skip to content

Commit 2fc70ed

Browse files
authored
Merge pull request #1015 from commercetools/DEVX-714-How-to-queryAll-with-GraphQL-in-Java-SDK
Devx 714 how to query all with graph ql in java sdk
2 parents 5232863 + 577b1cc commit 2fc70ed

File tree

4 files changed

+64
-3
lines changed

4 files changed

+64
-3
lines changed

.git-blame-ignore-revs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ fcdaa3d6735d2382a44d066a6ce051a2c5e6469f
2020
3addaca346bcdfd555fca0340e40c7e5518c5185
2121
165a4da6a015267909adf7e7d5f3edc16a56dda6
2222
c4e2bf407aa0b7a3d34605134791013ba8a2d376
23+
9232c8f806b5eebeff35c09b1616b6598f3f5e73
24+
062fb57831db2e3e25afc1bd63cf8b09d46ffa67

commercetools/commercetools-graphql-api/build.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import com.commercetools.sdk.plugins.GraphQLPlugin
22

33
plugins {
44
id "com.netflix.dgs.codegen" version "8.1.0"
5+
id 'java'
56
}
67

78
apply plugin:'com.netflix.dgs.codegen'
@@ -13,6 +14,19 @@ java {
1314
}
1415
}
1516

17+
tasks.register('integrationTestJar', Jar) {
18+
archiveClassifier = 'test-utils'
19+
from sourceSets.integrationTest.output
20+
}
21+
22+
configurations {
23+
integrationTestArtifacts
24+
}
25+
26+
artifacts {
27+
integrationTestArtifacts integrationTestJar
28+
}
29+
1630
dependencies {
1731
api project(':commercetools:commercetools-sdk-java-api')
1832
testImplementation project(':commercetools:commercetools-http-client')

commercetools/internal-docs/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
dependencies {
2+
testImplementation 'org.junit.jupiter:junit-jupiter:5.x.x'
23
implementation project(":commercetools:commercetools-sdk-java-api")
34
implementation project(":commercetools:commercetools-sdk-java-importapi")
45
implementation project(":commercetools:commercetools-sdk-java-history")
@@ -10,9 +11,8 @@ dependencies {
1011
implementation project(":commercetools:commercetools-graphql-api")
1112
implementation project(":commercetools:commercetools-monitoring-newrelic")
1213
implementation project(":commercetools:commercetools-monitoring-datadog")
13-
14-
testImplementation ctsdkv1.client version ctsdkv1.version
15-
implementation ctsdkv1.models version ctsdkv1.version
14+
testImplementation project(path: ':commercetools:commercetools-graphql-api', configuration: 'integrationTestArtifacts')
15+
testImplementation 'com.commercetools.sdk.jvm.core:commercetools-models:2.16.0'
1616
testImplementation project(":commercetools:commercetools-javanet-client")
1717

1818
testImplementation commons.io version commons.io_version

commercetools/internal-docs/src/test/java/example/ExamplesTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,19 @@
2828
import com.commercetools.api.models.common.LocalizedStringBuilder;
2929
import com.commercetools.api.models.customer.*;
3030
import com.commercetools.api.models.customer_group.*;
31+
import com.commercetools.api.models.graph_ql.GraphQLVariablesMap;
3132
import com.commercetools.api.models.product.AttributesAccessor;
3233
import com.commercetools.api.models.product.ProductProjection;
3334
import com.commercetools.api.models.product.ProductVariant;
3435
import com.commercetools.api.models.product.ProductVariantBuilder;
3536
import com.commercetools.api.models.product_type.AttributeLocalizedEnumValue;
3637
import com.commercetools.api.models.project.Project;
3738
import com.commercetools.api.models.tax_category.TaxCategoryPagedQueryResponse;
39+
import com.commercetools.graphql.CommercetoolsTestUtils;
40+
import com.commercetools.graphql.api.GraphQL;
41+
import com.commercetools.graphql.api.GraphQLData;
42+
import com.commercetools.graphql.api.GraphQLRequestBuilder;
43+
import com.commercetools.graphql.api.types.OrderQueryResult;
3844
import com.commercetools.http.apachehttp.CtApacheHttpClient;
3945
import com.commercetools.http.javanet.CtJavaNetHttpClient;
4046
import com.commercetools.http.netty.CtNettyHttpClient;
@@ -379,6 +385,45 @@ public void queryAll() {
379385
.join();
380386
}
381387

388+
public void graphQLAllOrders() {
389+
final ProjectApiRoot projectRoot = CommercetoolsTestUtils.getProjectApiRoot();
390+
boolean limitNotReached = true;
391+
int limit = 10, total_length = 0;
392+
String lastId = null;
393+
while (limitNotReached) {
394+
GraphQLRequestBuilder<OrderQueryResult> orderBuilder = GraphQL.query("""
395+
query Orders($where: String, $limit: Int!) {
396+
orders(where: $where, sort: "id asc", limit: $limit) {
397+
results {
398+
id
399+
version
400+
}
401+
}
402+
}""").dataMapper(GraphQLData::getOrders);
403+
404+
var variables = GraphQLVariablesMap.builder().addValue("limit", limit);
405+
if (lastId != null) {
406+
String whereQuery = "id > \"%s\"".formatted(lastId);
407+
variables.addValue("where", whereQuery);
408+
}
409+
orderBuilder.variables(variables.build());
410+
411+
var result = projectRoot.graphql().query(orderBuilder.build()).executeBlocking();
412+
var orders = result.getBody().getData().getResults();
413+
414+
orders.forEach(order -> {
415+
Assertions.assertThat(order.getId()).isNotNull();
416+
Assertions.assertThat(order.getVersion()).isNotNull();
417+
});
418+
419+
var length = orders.size();
420+
total_length += length;
421+
lastId = result.getBody().getData().getResults().get(length - 1).getId();
422+
423+
limitNotReached = length == limit;
424+
}
425+
}
426+
382427
public void middleware() {
383428
ProjectApiRoot apiRoot = ApiRootBuilder.of()
384429
.defaultClient(ClientCredentials.of()

0 commit comments

Comments
 (0)