Skip to content

Commit 87a589b

Browse files
committed
Merge branch 'main' into gen-sdk-updates
2 parents fd73713 + ca21932 commit 87a589b

File tree

18 files changed

+342
-23
lines changed

18 files changed

+342
-23
lines changed

api-java-mixin.raml

+13
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ annotationTypes:
2020
java-implements:
2121
type: string
2222
allowedTargets: TypeDeclaration
23+
java-impl-mixin:
24+
type: string
25+
allowedTargets: TypeDeclaration
2326

2427
types:
2528
BaseAddress:
@@ -1393,7 +1396,17 @@ types:
13931396
(java-extends): 'com.commercetools.api.models.Identifiable<AssociateRole>'
13941397
AssociateRoleUpdateAction:
13951398
(java-extends): 'com.commercetools.api.models.ResourceUpdateAction<AssociateRoleUpdateAction>'
1399+
MessageDeliveryPayload:
1400+
(java-extends): MessageDeliveryPayloadMixin
1401+
(java-impl-mixin): |
1402+
private MessagePayload messagePayload;
13961403
1404+
@Override
1405+
public MessagePayload getMessagePayload() {
1406+
return messagePayload;
1407+
}
1408+
MessagePayload:
1409+
(java-extends): MessagePayloadMixin
13971410
/{projectKey}:
13981411
/categories:
13991412
(java-implements): 'ByProjectKeyCategoriesRequestBuilderMixin'

commercetools/commercetools-sdk-java-api/src/main/java-generated/com/commercetools/api/models/message/MessagePayload.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import javax.annotation.Nullable;
99
import javax.validation.constraints.NotNull;
1010

11+
import com.commercetools.api.models.subscription.MessagePayloadMixin;
1112
import com.fasterxml.jackson.annotation.*;
1213
import com.fasterxml.jackson.databind.annotation.*;
1314

@@ -245,7 +246,7 @@
245246
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = MessagePayloadImpl.class, visible = true)
246247
@JsonDeserialize(as = MessagePayloadImpl.class)
247248
@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
248-
public interface MessagePayload {
249+
public interface MessagePayload extends MessagePayloadMixin {
249250

250251
/**
251252
*

commercetools/commercetools-sdk-java-api/src/main/java-generated/com/commercetools/api/models/subscription/MessageDeliveryPayload.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
3939
@JsonDeserialize(as = MessageDeliveryPayloadImpl.class)
40-
public interface MessageDeliveryPayload extends DeliveryPayload {
40+
public interface MessageDeliveryPayload extends DeliveryPayload, MessageDeliveryPayloadMixin {
4141

4242
/**
4343
* discriminator value for MessageDeliveryPayload

commercetools/commercetools-sdk-java-api/src/main/java-generated/com/commercetools/api/models/subscription/MessageDeliveryPayloadImpl.java

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.time.*;
55
import java.util.*;
66

7+
import com.commercetools.api.models.message.MessagePayload;
78
import com.fasterxml.jackson.annotation.JsonCreator;
89
import com.fasterxml.jackson.annotation.JsonProperty;
910
import com.fasterxml.jackson.databind.annotation.*;
@@ -42,6 +43,13 @@ public class MessageDeliveryPayloadImpl implements MessageDeliveryPayload, Model
4243

4344
private com.commercetools.api.models.subscription.PayloadNotIncluded payloadNotIncluded;
4445

46+
private MessagePayload messagePayload;
47+
48+
@Override
49+
public MessagePayload getMessagePayload() {
50+
return messagePayload;
51+
}
52+
4553
/**
4654
* create instance with all properties
4755
*/

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ApiModule.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,26 @@ public ApiModule(ModuleOptions options) {
2828
boolean customFieldAsJsonNode = Boolean.parseBoolean(
2929
Optional.ofNullable(options.getOption(ApiModuleOptions.DESERIALIZE_CUSTOM_FIELD_AS_JSON_NODE))
3030
.orElse(System.getProperty(ApiModuleOptions.DESERIALIZE_CUSTOM_FIELD_AS_JSON_NODE)));
31+
boolean attributeNumberAsDouble = Boolean.parseBoolean(
32+
Optional.ofNullable(options.getOption(ApiModuleOptions.DESERIALIZE_ATTRIBUTE_NUMBER_AS_DOUBLE))
33+
.orElse(System.getProperty(ApiModuleOptions.DESERIALIZE_ATTRIBUTE_NUMBER_AS_DOUBLE)));
34+
boolean customFieldNumberAsDouble = Boolean.parseBoolean(
35+
Optional.ofNullable(options.getOption(ApiModuleOptions.DESERIALIZE_CUSTOM_FIELD_NUMBER_AS_DOUBLE))
36+
.orElse(System.getProperty(ApiModuleOptions.DESERIALIZE_CUSTOM_FIELD_NUMBER_AS_DOUBLE)));
3137

3238
if (attributeAsJsonNode) {
3339
setMixInAnnotation(AttributeImpl.class, AttributeJsonNodeMixin.class);
3440
}
3541
else {
36-
addDeserializer(AttributeImpl.class, new AtrributeDeserializer(attributeAsDateString));
42+
addDeserializer(AttributeImpl.class,
43+
new AtrributeDeserializer(attributeAsDateString, attributeNumberAsDouble));
3744
}
3845
if (customFieldAsJsonNode) {
3946
addDeserializer(FieldContainerImpl.class, new CustomFieldJsonNodeDeserializer());
4047
}
4148
else {
42-
addDeserializer(FieldContainerImpl.class, new CustomFieldDeserializer(customFieldAsDateString));
49+
addDeserializer(FieldContainerImpl.class,
50+
new CustomFieldDeserializer(customFieldAsDateString, customFieldNumberAsDouble));
4351
}
4452
}
4553
}

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ApiModuleOptions.java

+41-5
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,37 @@ public class ApiModuleOptions implements ModuleOptions {
1111

1212
public static final String DESERIALIZE_CUSTOM_FIELD_AS_JSON_NODE = "commercetools.deserializeCustomFieldAsJsonNode";
1313

14+
public static final String DESERIALIZE_CUSTOM_FIELD_NUMBER_AS_DOUBLE = "commercetools.deserializeCustomFieldNumberAsDouble";
15+
16+
public static final String DESERIALIZE_ATTRIBUTE_NUMBER_AS_DOUBLE = "commercetools.deserializeAttributeNumberAsDouble";
17+
1418
private final Boolean dateAttributeAsString;
1519
private final Boolean dateCustomFieldAsString;
1620

1721
private final Boolean attributeAsJsonNode;
1822
private final Boolean customFieldAsJsonNode;
1923

24+
private final Boolean attributeNumberAsDouble;
25+
private final Boolean customFieldNumberAsDouble;
26+
2027
private ApiModuleOptions() {
2128
this.dateAttributeAsString = false;
2229
this.dateCustomFieldAsString = false;
2330
this.attributeAsJsonNode = false;
2431
this.customFieldAsJsonNode = false;
32+
this.attributeNumberAsDouble = false;
33+
this.customFieldNumberAsDouble = false;
2534
}
2635

2736
private ApiModuleOptions(final Boolean dateAttributeAsString, final Boolean dateCustomFieldAsString,
28-
final Boolean attributeAsJsonNode, final Boolean customFieldAsJsonNode) {
37+
final Boolean attributeAsJsonNode, final Boolean customFieldAsJsonNode,
38+
final Boolean attributeNumberAsDouble, final Boolean customFieldNumberAsDouble) {
2939
this.dateAttributeAsString = dateAttributeAsString;
3040
this.dateCustomFieldAsString = dateCustomFieldAsString;
3141
this.attributeAsJsonNode = attributeAsJsonNode;
3242
this.customFieldAsJsonNode = customFieldAsJsonNode;
43+
this.attributeNumberAsDouble = attributeNumberAsDouble;
44+
this.customFieldNumberAsDouble = customFieldNumberAsDouble;
3345
}
3446

3547
public static ApiModuleOptions of() {
@@ -52,24 +64,42 @@ public Boolean getCustomFieldAsJsonNode() {
5264
return customFieldAsJsonNode;
5365
}
5466

67+
public Boolean getAttributeNumberAsDouble() {
68+
return attributeNumberAsDouble;
69+
}
70+
71+
public Boolean getCustomFieldNumberAsDouble() {
72+
return customFieldNumberAsDouble;
73+
}
74+
5575
public ApiModuleOptions withDateCustomFieldAsString(Boolean dateCustomFieldAsString) {
5676
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
57-
customFieldAsJsonNode);
77+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
5878
}
5979

6080
public ApiModuleOptions withDateAttributeAsString(Boolean dateAttributeAsString) {
6181
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
62-
customFieldAsJsonNode);
82+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
6383
}
6484

6585
public ApiModuleOptions withAttributeAsJsonNode(Boolean attributeAsJsonNode) {
6686
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
67-
customFieldAsJsonNode);
87+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
6888
}
6989

7090
public ApiModuleOptions withCustomFieldAsJsonNode(Boolean customFieldAsJsonNode) {
7191
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
72-
customFieldAsJsonNode);
92+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
93+
}
94+
95+
public ApiModuleOptions withCustomFieldNumberAsDouble(Boolean customFieldNumberAsDouble) {
96+
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
97+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
98+
}
99+
100+
public ApiModuleOptions withAttributeNumberAsDouble(Boolean attributeNumberAsDouble) {
101+
return new ApiModuleOptions(dateAttributeAsString, dateCustomFieldAsString, attributeAsJsonNode,
102+
customFieldAsJsonNode, attributeNumberAsDouble, customFieldNumberAsDouble);
73103
}
74104

75105
@Override
@@ -86,6 +116,12 @@ public String getOption(String name) {
86116
if (name.equals(DESERIALIZE_CUSTOM_FIELD_AS_JSON_NODE)) {
87117
return customFieldAsJsonNode.toString();
88118
}
119+
if (name.equals(DESERIALIZE_ATTRIBUTE_NUMBER_AS_DOUBLE)) {
120+
return attributeNumberAsDouble.toString();
121+
}
122+
if (name.equals(DESERIALIZE_CUSTOM_FIELD_NUMBER_AS_DOUBLE)) {
123+
return customFieldNumberAsDouble.toString();
124+
}
89125
return null;
90126
}
91127
}

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/AtrributeDeserializer.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,21 @@ public class AtrributeDeserializer extends JsonDeserializer<AttributeImpl> {
3131

3232
private final boolean deserializeAsDate;
3333

34+
private final boolean deserializeNumberAsDouble;
35+
3436
public AtrributeDeserializer(boolean deserializeAsDateString) {
3537
this.deserializeAsDate = !deserializeAsDateString;
38+
this.deserializeNumberAsDouble = false;
39+
}
40+
41+
public AtrributeDeserializer(boolean deserializeAsDateString, boolean deserializeNumberAsDouble) {
42+
this.deserializeAsDate = !deserializeAsDateString;
43+
this.deserializeNumberAsDouble = deserializeNumberAsDouble;
3644
}
3745

3846
public AtrributeDeserializer() {
3947
this.deserializeAsDate = true;
48+
this.deserializeNumberAsDouble = false;
4049
}
4150

4251
@Override
@@ -59,7 +68,7 @@ private TypeReference<?> typeRef(JsonNode valueNode) {
5968
return new TypeReference<Boolean>() {
6069
};
6170
case NUMBER:
62-
if (valueNode.isInt() || valueNode.isLong()) {
71+
if (!deserializeNumberAsDouble && (valueNode.isInt() || valueNode.isLong())) {
6372
return new TypeReference<Long>() {
6473
};
6574
}
@@ -189,7 +198,7 @@ private ElemType elemType(JsonNode valueNode) {
189198
}
190199
return ElemType.LOCALIZED_STRING;
191200
case NUMBER:
192-
if (valueNode.isInt() || valueNode.isLong()) {
201+
if (!deserializeNumberAsDouble && (valueNode.isInt() || valueNode.isLong())) {
193202
return ElemType.LONG;
194203
}
195204
return ElemType.NUMBER;

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/CustomFieldDeserializer.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,21 @@ public class CustomFieldDeserializer extends JsonDeserializer<FieldContainerImpl
2828
private static Pattern time = Pattern.compile("^[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,6})?");
2929

3030
private final boolean deserializeAsDate;
31+
private final boolean deserializeNumberAsDouble;
3132

3233
public CustomFieldDeserializer(boolean deserializeAsDateString) {
3334
this.deserializeAsDate = !deserializeAsDateString;
35+
this.deserializeNumberAsDouble = false;
36+
}
37+
38+
public CustomFieldDeserializer(boolean deserializeAsDateString, boolean deserializeNumberAsDouble) {
39+
this.deserializeAsDate = !deserializeAsDateString;
40+
this.deserializeNumberAsDouble = deserializeNumberAsDouble;
3441
}
3542

3643
public CustomFieldDeserializer() {
3744
this.deserializeAsDate = true;
45+
this.deserializeNumberAsDouble = false;
3846
}
3947

4048
@Override
@@ -66,7 +74,7 @@ private TypeReference<?> typeRef(JsonNode valueNode) {
6674
return new TypeReference<Boolean>() {
6775
};
6876
case NUMBER:
69-
if (valueNode.isInt() || valueNode.isLong()) {
77+
if (!deserializeNumberAsDouble && (valueNode.isInt() || valueNode.isLong())) {
7078
return new TypeReference<Long>() {
7179
};
7280
}
@@ -183,7 +191,7 @@ private ElemType elemType(JsonNode valueNode) {
183191
}
184192
return ElemType.LOCALIZED_STRING;
185193
case NUMBER:
186-
if (valueNode.isInt() || valueNode.isLong()) {
194+
if (!deserializeNumberAsDouble && (valueNode.isInt() || valueNode.isLong())) {
187195
return ElemType.LONG;
188196
}
189197
return ElemType.NUMBER;

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/product/AttributeAccessor.java

+6
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ public static Double asDouble(final Attribute attribute) {
108108
if (attribute.getValue() instanceof Double) {
109109
return (Double) attribute.getValue();
110110
}
111+
if (attribute.getValue() instanceof Number) {
112+
return ((Number) attribute.getValue()).doubleValue();
113+
}
111114
if (attribute.getValue() instanceof JsonNode) {
112115
return ((JsonNode) attribute.getValue()).asDouble();
113116
}
@@ -148,6 +151,9 @@ public static Long asLong(final Attribute attribute) {
148151
if (attribute.getValue() instanceof Long) {
149152
return (Long) attribute.getValue();
150153
}
154+
if (attribute.getValue() instanceof Number) {
155+
return ((Number) attribute.getValue()).longValue();
156+
}
151157
if (attribute.getValue() instanceof JsonNode) {
152158
return ((JsonNode) attribute.getValue()).asLong();
153159
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
package com.commercetools.api.models.subscription;
3+
4+
import com.commercetools.api.models.message.MessagePayload;
5+
import com.fasterxml.jackson.annotation.JsonIgnore;
6+
import com.fasterxml.jackson.annotation.JsonUnwrapped;
7+
8+
public interface MessageDeliveryPayloadMixin {
9+
@JsonUnwrapped
10+
MessagePayload getMessagePayload();
11+
12+
/**
13+
* Returns true if this payload contains a complete message.
14+
*
15+
* @return true if this payload contains a complete message
16+
* @see #getMessagePayload()
17+
*/
18+
@JsonIgnore
19+
default boolean hasCompleteMessage() {
20+
return getMessagePayload().getType() != null;
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
package com.commercetools.api.models.subscription;
3+
4+
import com.commercetools.api.models.message.MessagePayload;
5+
6+
public interface MessagePayloadMixin {
7+
@SuppressWarnings("unchecked")
8+
default <M extends MessagePayload> M as(Class<M> clazz) {
9+
if (clazz.isInstance(this)) {
10+
return (M) this;
11+
}
12+
throw new IllegalArgumentException("message type mismatch");
13+
}
14+
}

0 commit comments

Comments
 (0)