From 2216ad54cdac06485b24eb0f4ce2f478770e5465 Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Sun, 3 Aug 2025 11:57:25 +0200 Subject: [PATCH 1/5] add cart dep to example --- examples/split-packages/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/examples/split-packages/pom.xml b/examples/split-packages/pom.xml index 7c22e09935..30902b4ce0 100644 --- a/examples/split-packages/pom.xml +++ b/examples/split-packages/pom.xml @@ -40,6 +40,11 @@ commercetools-sdk-java-api-models_customer ${commercetools.version} + + com.commercetools.sdk + commercetools-sdk-java-api-models_cart + ${commercetools.version} + com.commercetools.sdk commercetools-http-client From c6b44210839764bd64744d8ebcc19832f46b5161 Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Sun, 3 Aug 2025 12:11:46 +0200 Subject: [PATCH 2/5] fix maven examples --- examples/maven-okhttp3/pom.xml | 5 +++-- .../{GettingStarted.java => GettingStartedTests.java} | 2 +- examples/maven-okhttp4/pom.xml | 5 +++-- .../{GettingStarted.java => GettingStartedTests.java} | 2 +- examples/split-packages/pom.xml | 5 +++-- .../{GettingStarted.java => GettingStartedTests.java} | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) rename examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/{GettingStarted.java => GettingStartedTests.java} (96%) rename examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/{GettingStarted.java => GettingStartedTests.java} (96%) rename examples/split-packages/src/test/java/com/commercetools/sdk/examples/{GettingStarted.java => GettingStartedTests.java} (96%) diff --git a/examples/maven-okhttp3/pom.xml b/examples/maven-okhttp3/pom.xml index d80a7b75ce..2723affb38 100644 --- a/examples/maven-okhttp3/pom.xml +++ b/examples/maven-okhttp3/pom.xml @@ -11,9 +11,10 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 - 8 - 8 + 11 + 11 diff --git a/examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStarted.java b/examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java similarity index 96% rename from examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStarted.java rename to examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java index 72130149ed..8f436b99d9 100644 --- a/examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStarted.java +++ b/examples/maven-okhttp3/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java @@ -10,7 +10,7 @@ import java.util.Optional; -public class GettingStarted { +public class GettingStartedTests { @Test public void project() { diff --git a/examples/maven-okhttp4/pom.xml b/examples/maven-okhttp4/pom.xml index 73cce4d2d5..01e74995e3 100644 --- a/examples/maven-okhttp4/pom.xml +++ b/examples/maven-okhttp4/pom.xml @@ -11,9 +11,10 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 - 8 - 8 + 11 + 11 diff --git a/examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStarted.java b/examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java similarity index 96% rename from examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStarted.java rename to examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java index 72130149ed..8f436b99d9 100644 --- a/examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStarted.java +++ b/examples/maven-okhttp4/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java @@ -10,7 +10,7 @@ import java.util.Optional; -public class GettingStarted { +public class GettingStartedTests { @Test public void project() { diff --git a/examples/split-packages/pom.xml b/examples/split-packages/pom.xml index 30902b4ce0..888135f364 100644 --- a/examples/split-packages/pom.xml +++ b/examples/split-packages/pom.xml @@ -11,9 +11,10 @@ org.apache.maven.plugins maven-compiler-plugin + 3.13.0 - 8 - 8 + 11 + 11 diff --git a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStarted.java b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java similarity index 96% rename from examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStarted.java rename to examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java index 72130149ed..8f436b99d9 100644 --- a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStarted.java +++ b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java @@ -10,7 +10,7 @@ import java.util.Optional; -public class GettingStarted { +public class GettingStartedTests { @Test public void project() { From 89f42172c30f36057a4a2a7cd90d2d67a95478be Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Sun, 3 Aug 2025 12:26:42 +0200 Subject: [PATCH 3/5] add test for category query --- examples/split-packages/pom.xml | 10 ++++++++++ .../sdk/examples/GettingStartedTests.java | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/examples/split-packages/pom.xml b/examples/split-packages/pom.xml index 888135f364..5acbc35ca7 100644 --- a/examples/split-packages/pom.xml +++ b/examples/split-packages/pom.xml @@ -46,6 +46,16 @@ commercetools-sdk-java-api-models_cart ${commercetools.version} + + com.commercetools.sdk + commercetools-sdk-java-api-models_category + ${commercetools.version} + + + com.commercetools.sdk + commercetools-sdk-java-api-predicates + ${commercetools.version} + com.commercetools.sdk commercetools-http-client diff --git a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java index 8f436b99d9..70261be4fd 100644 --- a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java +++ b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java @@ -3,6 +3,7 @@ import com.commercetools.api.client.ProjectApiRoot; import com.commercetools.api.defaultconfig.ApiRootBuilder; import com.commercetools.api.defaultconfig.ServiceRegion; +import com.commercetools.api.models.category.CategoryPagedQueryResponse; import com.commercetools.api.models.project.Project; import io.vrap.rmf.base.client.oauth2.ClientCredentials; import org.junit.jupiter.api.Assertions; @@ -26,4 +27,21 @@ public void project() { Assertions.assertEquals(System.getenv("CTP_PROJECT_KEY"), response.getKey()); } + + @Test + public void category() { + ProjectApiRoot apiRoot = ApiRootBuilder.of().defaultClient( + ClientCredentials.of().withClientId(System.getenv("CTP_CLIENT_ID")) + .withClientSecret(System.getenv("CTP_CLIENT_SECRET")) + .build(), + ServiceRegion.valueOf(Optional.ofNullable(System.getenv("CTP_SERVICE_REGION")).orElse("GCP_EUROPE_WEST1"))).build(System.getenv("CTP_PROJECT_KEY")); + + CategoryPagedQueryResponse response = apiRoot + .categories() + .get() + .addLimit(500) + .executeBlocking().getBody(); + + Assertions.assertNotNull(response); + } } From 949d6b0ce46d73118dc349066ede281ccafc5514 Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Sun, 3 Aug 2025 13:28:05 +0200 Subject: [PATCH 4/5] fix package split for references --- .../commercetools-sdk-java-api/build.gradle | 21 +++++++++--- ...rojectKeyCustomersRequestBuilderMixin.java | 7 +++- .../api/defaultconfig/ApiRootBuilder.java | 7 +++- .../api/json/AttributeDeserializer.java | 4 ++- .../api/json/CustomFieldDeserializer.java | 5 ++- .../custom_object/GenericCustomObject.java | 5 ++- .../api/models/order/OrderLike.java | 19 +++++++++-- examples/split-packages/pom.xml | 10 ++++++ .../sdk/examples/GettingStartedTests.java | 34 ++++++++++++++++++- 9 files changed, 99 insertions(+), 13 deletions(-) diff --git a/commercetools/commercetools-sdk-java-api/build.gradle b/commercetools/commercetools-sdk-java-api/build.gradle index d24e003003..56f54ab9a7 100644 --- a/commercetools/commercetools-sdk-java-api/build.gradle +++ b/commercetools/commercetools-sdk-java-api/build.gradle @@ -21,14 +21,25 @@ sourceSets.main.java.srcDirs += "src/main/java-generated" sourceSets.main.java.srcDirs += "src/main/java-predicates-generated" sourceSets.test.java.srcDirs += "src/test/java-generated" - projectDir.toPath().resolve("src/main/java-generated/com/commercetools/api/models/").eachDir { dir -> def dirname = dir.toFile().name - def modelTask = tasks.register("models_${dirname}Jar", Jar) { - from sourceSets.main.output - include "**/models/$dirname/**" - archiveBaseName = project.name + "-models-$dirname" + def modelTask + if (dirname != "common") { + modelTask = tasks.register("models_${dirname}Jar", Jar) { + from sourceSets.main.output + + include "**/models/$dirname/**" + exclude "**/models/**/*ReferenceBuilder*", "**/models/**/*ResourceIdentifierBuilder*" + archiveBaseName = project.name + "-models-$dirname" + } + } else { + modelTask = tasks.register("models_${dirname}Jar", Jar) { + from sourceSets.main.output + + include "**/models/$dirname/**", "**/models/**/*ReferenceBuilder*", "**/models/**/*ResourceIdentifierBuilder*" + archiveBaseName = project.name + "-models-$dirname" + } } def modelSourcesTask = tasks.register("sources_${dirname}Jar", Jar) { archiveClassifier = 'sources' diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/client/ByProjectKeyCustomersRequestBuilderMixin.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/client/ByProjectKeyCustomersRequestBuilderMixin.java index f688f10fbe..bc96490213 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/client/ByProjectKeyCustomersRequestBuilderMixin.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/client/ByProjectKeyCustomersRequestBuilderMixin.java @@ -5,7 +5,12 @@ import java.util.function.UnaryOperator; import com.commercetools.api.models.Versioned; -import com.commercetools.api.models.customer.*; +import com.commercetools.api.models.customer.Customer; +import com.commercetools.api.models.customer.CustomerDraft; +import com.commercetools.api.models.customer.CustomerDraftBuilder; +import com.commercetools.api.models.customer.CustomerUpdate; +import com.commercetools.api.models.customer.CustomerUpdateAction; +import com.commercetools.api.models.customer.CustomerUpdateActionBuilder; public interface ByProjectKeyCustomersRequestBuilderMixin { public ByProjectKeyCustomersByIDRequestBuilder withId(String ID); diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/defaultconfig/ApiRootBuilder.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/defaultconfig/ApiRootBuilder.java index 286ea2779d..7a63789d13 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/defaultconfig/ApiRootBuilder.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/defaultconfig/ApiRootBuilder.java @@ -13,7 +13,12 @@ import javax.annotation.Nullable; -import com.commercetools.api.client.*; +import com.commercetools.api.client.ApiCorrelationIdProvider; +import com.commercetools.api.client.ApiInternalLoggerFactory; +import com.commercetools.api.client.ApiRoot; +import com.commercetools.api.client.ByProjectKeyRequestBuilder; +import com.commercetools.api.client.ConcurrentModificationMiddleware; +import com.commercetools.api.client.ProjectApiRoot; import com.commercetools.api.client.error.ApiHttpExceptionFactory; import io.vrap.rmf.base.client.*; diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/AttributeDeserializer.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/AttributeDeserializer.java index e1e7551197..9073fa0d9a 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/AttributeDeserializer.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/AttributeDeserializer.java @@ -12,7 +12,9 @@ import com.commercetools.api.models.common.LocalizedString; import com.commercetools.api.models.common.Reference; import com.commercetools.api.models.common.TypedMoney; -import com.commercetools.api.models.product.*; +import com.commercetools.api.models.product.Attribute; +import com.commercetools.api.models.product.AttributeBuilder; +import com.commercetools.api.models.product.AttributeImpl; import com.commercetools.api.models.product_type.AttributeLocalizedEnumValue; import com.commercetools.api.models.product_type.AttributePlainEnumValue; import com.fasterxml.jackson.core.JsonParser; diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/CustomFieldDeserializer.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/CustomFieldDeserializer.java index a33554402e..e134a7adcd 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/CustomFieldDeserializer.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/CustomFieldDeserializer.java @@ -12,7 +12,10 @@ import com.commercetools.api.models.common.LocalizedString; import com.commercetools.api.models.common.Reference; import com.commercetools.api.models.common.TypedMoney; -import com.commercetools.api.models.type.*; +import com.commercetools.api.models.type.CustomFieldEnumValue; +import com.commercetools.api.models.type.CustomFieldLocalizedEnumValue; +import com.commercetools.api.models.type.FieldContainerBuilder; +import com.commercetools.api.models.type.FieldContainerImpl; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationContext; diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/custom_object/GenericCustomObject.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/custom_object/GenericCustomObject.java index 6c0b8dde1e..22422efd14 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/custom_object/GenericCustomObject.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/custom_object/GenericCustomObject.java @@ -7,7 +7,10 @@ import javax.annotation.Nullable; import com.commercetools.api.models.Referencable; -import com.commercetools.api.models.common.*; +import com.commercetools.api.models.common.BaseResource; +import com.commercetools.api.models.common.CreatedBy; +import com.commercetools.api.models.common.LastModifiedBy; +import com.commercetools.api.models.common.Reference; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/order/OrderLike.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/order/OrderLike.java index 73d9363800..c11cc4f54b 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/order/OrderLike.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/order/OrderLike.java @@ -9,9 +9,24 @@ import javax.money.MonetaryAmount; -import com.commercetools.api.models.cart.*; +import com.commercetools.api.models.cart.CartOrigin; +import com.commercetools.api.models.cart.CustomLineItem; +import com.commercetools.api.models.cart.DiscountCodeInfo; +import com.commercetools.api.models.cart.InventoryMode; +import com.commercetools.api.models.cart.LineItem; +import com.commercetools.api.models.cart.RoundingMode; +import com.commercetools.api.models.cart.ShippingInfo; +import com.commercetools.api.models.cart.ShippingRateInput; +import com.commercetools.api.models.cart.TaxCalculationMode; +import com.commercetools.api.models.cart.TaxMode; +import com.commercetools.api.models.cart.TaxedPrice; import com.commercetools.api.models.cart_discount.CartDiscountReference; -import com.commercetools.api.models.common.*; +import com.commercetools.api.models.common.Address; +import com.commercetools.api.models.common.CreatedBy; +import com.commercetools.api.models.common.LastModifiedBy; +import com.commercetools.api.models.common.MonetaryAmountConvertable; +import com.commercetools.api.models.common.Money; +import com.commercetools.api.models.common.TypedMoney; import com.commercetools.api.models.customer_group.CustomerGroupReference; import com.commercetools.api.models.store.StoreKeyReference; import com.commercetools.api.models.type.CustomFields; diff --git a/examples/split-packages/pom.xml b/examples/split-packages/pom.xml index 5acbc35ca7..72ed56efb2 100644 --- a/examples/split-packages/pom.xml +++ b/examples/split-packages/pom.xml @@ -51,6 +51,16 @@ commercetools-sdk-java-api-models_category ${commercetools.version} + + com.commercetools.sdk + commercetools-sdk-java-api-models_common + ${commercetools.version} + + + com.commercetools.sdk + commercetools-sdk-java-api-models_error + ${commercetools.version} + com.commercetools.sdk commercetools-sdk-java-api-predicates diff --git a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java index 70261be4fd..78b5ef162f 100644 --- a/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java +++ b/examples/split-packages/src/test/java/com/commercetools/sdk/examples/GettingStartedTests.java @@ -3,13 +3,19 @@ import com.commercetools.api.client.ProjectApiRoot; import com.commercetools.api.defaultconfig.ApiRootBuilder; import com.commercetools.api.defaultconfig.ServiceRegion; +import com.commercetools.api.models.category.Category; import com.commercetools.api.models.category.CategoryPagedQueryResponse; import com.commercetools.api.models.project.Project; +import com.commercetools.api.models.common.LocalizedString; import io.vrap.rmf.base.client.oauth2.ClientCredentials; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.List; import java.util.Optional; +import java.util.Random; +import java.util.UUID; +import java.util.stream.Collectors; public class GettingStartedTests { @@ -34,14 +40,40 @@ public void category() { ClientCredentials.of().withClientId(System.getenv("CTP_CLIENT_ID")) .withClientSecret(System.getenv("CTP_CLIENT_SECRET")) .build(), - ServiceRegion.valueOf(Optional.ofNullable(System.getenv("CTP_SERVICE_REGION")).orElse("GCP_EUROPE_WEST1"))).build(System.getenv("CTP_PROJECT_KEY")); + ServiceRegion.valueOf(Optional.ofNullable(System.getenv("CTP_SERVICE_REGION")).orElse("GCP_EUROPE_WEST1"))) + .addNotFoundExceptionMiddleware() + .build(System.getenv("CTP_PROJECT_KEY")); + + Category cat1 = apiRoot.categories().withKey("cat1").get().executeBlocking().getBody(); + if (cat1 == null) { + cat1 = apiRoot.categories().create(b -> b + .key("cat1") + .name(LocalizedString.ofEnglish("cat1")) + .slug(LocalizedString.ofEnglish("cat1" + UUID.randomUUID().toString())) + ).executeBlocking().getBody(); + } + Category cat2 = apiRoot.categories().withKey("cat2").get().executeBlocking().getBody(); + if (cat2 == null) { + Category finalCat1 = cat1; + apiRoot.categories().create(b -> b + .key("cat2") + .name(LocalizedString.ofEnglish("cat2")) + .slug(LocalizedString.ofEnglish("cat2" + UUID.randomUUID().toString())) + .parent(finalCat1.toResourceIdentifier()) + ).executeBlocking(); + } CategoryPagedQueryResponse response = apiRoot .categories() .get() .addLimit(500) + .withWhere("key = \"cat1\" or key = \"cat2\"") .executeBlocking().getBody(); Assertions.assertNotNull(response); + + List categories = response.getResults().stream().map(Category::getKey).collect(Collectors.toList()); + Assertions.assertTrue(categories.contains("cat1")); + Assertions.assertTrue(categories.contains("cat2")); } } From 1a0d2cd7aadbbbf43f2d50e19776de8d2e2be7c9 Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Sun, 3 Aug 2025 13:30:29 +0200 Subject: [PATCH 5/5] add env variables to examples in GH CI workflow --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72cc2ff46a..9e04bbc4c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -136,6 +136,10 @@ jobs: cd examples/maven-okhttp3 && mvn verify --no-transfer-progress cd ../maven-okhttp4 && mvn verify --no-transfer-progress cd ../split-packages && mvn verify --no-transfer-progress + env: + CTP_CLIENT_ID: ${{ secrets.CTP_CLIENT_ID }} + CTP_CLIENT_SECRET: ${{ secrets.CTP_CLIENT_SECRET }} + CTP_PROJECT_KEY: ${{ secrets.CTP_PROJECT_KEY }} - name: Collect code coverage run: ./gradlew codeCoverageReport