Skip to content

Commit 914ab2a

Browse files
committed
add docs for subscription deserialization
1 parent c39cce9 commit 914ab2a

File tree

5 files changed

+113
-0
lines changed

5 files changed

+113
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
package com.commercetools.docs.meta;
3+
4+
/**
5+
* {@include.toc}
6+
<h2 id="subscriptions">Subscriptions</h2>
7+
8+
<h3 id="delivery-payloads">Delivery Payloads</h3>
9+
<p>The SDK provides the JsonUtils class which can be used to deserialize the delivery payload sent
10+
by a subscription. Using the {@link com.commercetools.api.models.subscription.DeliveryPayload} class
11+
it will deserialize it correctly to a {@link com.commercetools.api.models.subscription.MessageDeliveryPayload},
12+
{@link com.commercetools.api.models.subscription.ResourceCreatedDeliveryPayload},
13+
{@link com.commercetools.api.models.subscription.ResourceUpdatedDeliveryPayload}, or
14+
{@link com.commercetools.api.models.subscription.ResourceDeletedDeliveryPayload}</p>
15+
16+
{@include.example example.SerializationTest#deliveryPayloads()}
17+
18+
<h4 id="message-payloads">Message Payloads</h4>
19+
<p>The {@link com.commercetools.api.models.subscription.MessageDeliveryPayload} include a helper method to
20+
cast to the inner message delivery and return the wrapped message.</p>
21+
22+
{@include.example example.SerializationTest#messageDeliveryPayloads()}
23+
24+
<h4 id="change-payloads">Change Payloads</h4>
25+
<p></p>
26+
27+
{@include.example example.SerializationTest#changeDeliveryPayloads()}
28+
29+
*/
30+
public final class Subscriptions {
31+
private Subscriptions() {
32+
}
33+
}

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import static com.commercetools.TestUtils.*;
55
import static org.assertj.core.api.Assertions.assertThat;
6+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
67

78
import java.time.LocalDate;
89
import java.time.LocalTime;
@@ -13,9 +14,14 @@
1314
import com.commercetools.api.defaultconfig.ApiRootBuilder;
1415
import com.commercetools.api.defaultconfig.ServiceRegion;
1516
import com.commercetools.api.json.ApiModuleOptions;
17+
import com.commercetools.api.models.message.CustomerFirstNameSetMessagePayload;
18+
import com.commercetools.api.models.message.CustomerLastNameSetMessagePayload;
1619
import com.commercetools.api.models.product.Attribute;
1720
import com.commercetools.api.models.product.AttributeAccessor;
1821
import com.commercetools.api.models.product.ProductVariant;
22+
import com.commercetools.api.models.subscription.DeliveryPayload;
23+
import com.commercetools.api.models.subscription.MessageDeliveryPayload;
24+
import com.commercetools.api.models.subscription.ResourceCreatedDeliveryPayload;
1925
import com.fasterxml.jackson.core.JsonProcessingException;
2026
import com.fasterxml.jackson.databind.ObjectMapper;
2127

@@ -91,4 +97,38 @@ public void attributesNumberAsDouble() throws JsonProcessingException {
9197
assertThat(variant.getAttribute("integer").getValue()).isEqualTo(10.0);
9298
}
9399

100+
@Test
101+
public void deliveryPayloads() {
102+
DeliveryPayload delivery = JsonUtils.fromJsonString(stringFromResource("messagedeliverypayload.json"),
103+
DeliveryPayload.class);
104+
assertThat(delivery).isInstanceOf(DeliveryPayload.class);
105+
assertThat(delivery).isInstanceOf(MessageDeliveryPayload.class);
106+
}
107+
108+
@Test
109+
public void messageDeliveryPayloads() {
110+
DeliveryPayload delivery = JsonUtils.fromJsonString(stringFromResource("messagedeliverypayload.json"),
111+
DeliveryPayload.class);
112+
113+
assertThat(delivery).isInstanceOf(MessageDeliveryPayload.class);
114+
MessageDeliveryPayload messageDelivery = (MessageDeliveryPayload) delivery;
115+
116+
assertThat(messageDelivery.getMessagePayload()).isInstanceOf(CustomerLastNameSetMessagePayload.class);
117+
118+
assertThat(messageDelivery.getMessagePayload().as(CustomerLastNameSetMessagePayload.class))
119+
.isInstanceOf(CustomerLastNameSetMessagePayload.class);
120+
121+
assertThat(messageDelivery.hasCompleteMessage()).isTrue();
122+
123+
assertThatThrownBy(() -> messageDelivery.getMessagePayload().as(CustomerFirstNameSetMessagePayload.class))
124+
.isInstanceOf(IllegalArgumentException.class);
125+
}
126+
127+
@Test
128+
public void changeDeliveryPayloads() {
129+
DeliveryPayload delivery = JsonUtils.fromJsonString(stringFromResource("changedeliverypayload.json"),
130+
DeliveryPayload.class);
131+
132+
assertThat(delivery).isInstanceOf(ResourceCreatedDeliveryPayload.class);
133+
}
94134
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"notificationType": "ResourceCreated",
3+
"projectKey": "<project_key>",
4+
"resource": {
5+
"typeId": "product",
6+
"id": "<product_id>"
7+
},
8+
"resourceUserProvidedIdentifiers": {
9+
"key": "example-product-key",
10+
"slug": {
11+
"en": "example-slug"
12+
}
13+
},
14+
"version": 1,
15+
"modifiedAt": "2022-10-25T13:23:05.384Z"
16+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"notificationType": "Message",
3+
"projectKey": "<project_key>",
4+
"id": "<message_id>",
5+
"version": 1,
6+
"sequenceNumber": 2,
7+
"resource": {
8+
"typeId": "customer",
9+
"id": "<customer_id>"
10+
},
11+
"resourceVersion": 2,
12+
"resourceUserProvidedIdentifiers": {},
13+
"type": "CustomerLastNameSet",
14+
"lastName": "Doe",
15+
"createdAt": "2022-10-25T13:30:09.760Z",
16+
"lastModifiedAt": "2022-10-25T13:30:09.760Z"
17+
}

src/main/javadoc/overview.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ <h2>Products and ProductTypes</h2>
4949
{@include.toc com.commercetools.docs.meta.ProductAttributeDocumentation}
5050
</li>
5151
</ol>
52+
<h2>Subscriptions</h2>
53+
<ol>
54+
<li>
55+
{@link com.commercetools.docs.meta.Subscriptions Subscriptions}
56+
{@include.toc com.commercetools.docs.meta.Subscriptions}
57+
</li>
58+
</ol>
5259
<h2>Preparing for the worst</h2>
5360
<ol>
5461
<li>

0 commit comments

Comments
 (0)