Skip to content

Commit 69f38b0

Browse files
authored
Merge pull request #217 from sinch/fix/DEVEXP-756-conversation-fix-card-message
Fix/DEVEXP-756: conversation fix card message
2 parents acbba8e + 015c3f2 commit 69f38b0

20 files changed

Lines changed: 195 additions & 172 deletions

File tree

client/src/main/com/sinch/sdk/domains/conversation/api/v1/adapters/ConversationService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.sinch.sdk.domains.conversation.models.v1.messages.internal.ChannelSpecificMessageInternalMapper;
2525
import com.sinch.sdk.domains.conversation.models.v1.messages.internal.ContactMessageInternalMapper;
2626
import com.sinch.sdk.domains.conversation.models.v1.messages.types.carousel.CarouselMessageMapper;
27+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.internal.CardMessageMapper;
2728
import com.sinch.sdk.domains.conversation.models.v1.messages.types.internal.ChoiceMessageMapper;
2829
import com.sinch.sdk.domains.conversation.models.v1.messages.types.template.TemplateMessageMapper;
2930
import com.sinch.sdk.domains.conversation.templates.models.v2.TemplateTranslationMapper;
@@ -166,6 +167,7 @@ private LocalLazyInit() {
166167
AppEventMapper.initMapper();
167168
AppMessageMapper.initMapper();
168169
AppMessageInternalMapper.initMapper();
170+
CardMessageMapper.initMapper();
169171
CarouselMessageMapper.initMapper();
170172
ChoiceItemMapper.initMapper();
171173
ChannelSpecificContactMessageMapper.initMapper();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.sinch.sdk.domains.conversation.models.v1.messages.types.card;
2+
3+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
4+
5+
/**
6+
* Deprecated class, use
7+
*
8+
* @deprecated use {@link
9+
* com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage} instead.
10+
*/
11+
@Deprecated
12+
public interface CardMessageMedia extends MediaMessage {
13+
/**
14+
* Getting builder
15+
*
16+
* @return New Builder instance
17+
* @deprecated use {@link MediaMessage#builder()} instead.
18+
*/
19+
@Deprecated
20+
static Builder builder() {
21+
return new CardMessageMediaImpl.Builder();
22+
}
23+
24+
/**
25+
* @deprecated use {@link MediaMessage.Builder} instead.
26+
*/
27+
@Deprecated
28+
interface Builder extends MediaMessage.Builder {}
29+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.sinch.sdk.domains.conversation.models.v1.messages.types.card;
2+
3+
import com.sinch.sdk.core.models.OptionalValue;
4+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
5+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage.Builder;
6+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessageImpl;
7+
8+
@Deprecated
9+
public class CardMessageMediaImpl extends MediaMessageImpl implements CardMessageMedia {
10+
11+
protected CardMessageMediaImpl(MediaMessageImpl mediaMessage) {
12+
super(OptionalValue.of(mediaMessage.getMediaMessage()));
13+
}
14+
15+
static class Builder implements CardMessageMedia.Builder {
16+
17+
MediaMessage.Builder builder = MediaMessage.builder();
18+
19+
@Override
20+
public Builder setThumbnailUrl(String thumbnailUrl) {
21+
builder.setThumbnailUrl(thumbnailUrl);
22+
return this;
23+
}
24+
25+
@Override
26+
public Builder setUrl(String url) {
27+
builder.setUrl(url);
28+
return this;
29+
}
30+
31+
@Override
32+
public Builder setFilenameOverride(String filenameOverride) {
33+
builder.setFilenameOverride(filenameOverride);
34+
return this;
35+
}
36+
37+
public CardMessageMedia build() {
38+
39+
return new CardMessageMediaImpl((MediaMessageImpl) builder.build());
40+
}
41+
}
42+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.sinch.sdk.domains.conversation.models.v1.messages.types.internal;
2+
3+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
4+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
5+
import com.sinch.sdk.core.models.OptionalValue;
6+
import com.sinch.sdk.core.utils.databind.Mapper;
7+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.card.CardMessageImpl;
8+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
9+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessageImpl;
10+
11+
public class CardMessageMapper {
12+
13+
public static void initMapper() {
14+
15+
Mapper.getInstance()
16+
.addMixIn(CardMessageInternal.class, CardMessageMixinSerializer.class)
17+
.addMixIn(CardMessageInternalImpl.Builder.class, CardMessageBuilderMapperMixin.class);
18+
}
19+
20+
static class CardMessageMixinSerializer extends CardMessageImpl {
21+
22+
@Override
23+
@JsonSerialize(using = MediaMessageImpl.DelegatedSerializer.class)
24+
public OptionalValue<MediaMessage> media() {
25+
return super.media();
26+
}
27+
}
28+
29+
static class CardMessageBuilderMapperMixin extends CardMessageInternalImpl.Builder {
30+
31+
@Override
32+
@JsonDeserialize(using = MediaMessageImpl.DelegatedDeSerializer.class)
33+
public CardMessageInternalImpl.Builder setMedia(MediaMessage media) {
34+
return super.setMedia(media);
35+
}
36+
}
37+
}

openapi-contracts/src/main/com/sinch/sdk/domains/conversation/models/v1/messages/types/card/CardMessage.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
1414
import com.sinch.sdk.domains.conversation.models.v1.messages.types.choice.Choice;
15+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
1516
import java.util.List;
1617

1718
/** Field containing a Card Message */
@@ -46,7 +47,7 @@ public interface CardMessage
4647
*
4748
* @return media
4849
*/
49-
CardMessageMedia getMedia();
50+
MediaMessage getMedia();
5051

5152
/**
5253
* The title of the card message.
@@ -101,7 +102,7 @@ interface Builder {
101102
* @return Current builder
102103
* @see #getMedia
103104
*/
104-
Builder setMedia(CardMessageMedia media);
105+
Builder setMedia(MediaMessage media);
105106

106107
/**
107108
* see getter

openapi-contracts/src/main/com/sinch/sdk/domains/conversation/models/v1/messages/types/card/CardMessageImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.sinch.sdk.domains.conversation.models.v1.messages.types.choice.Choice;
1717
import com.sinch.sdk.domains.conversation.models.v1.messages.types.internal.CardMessageInternal;
1818
import com.sinch.sdk.domains.conversation.models.v1.messages.types.internal.CardMessageInternalImpl;
19+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
1920
import java.io.IOException;
2021
import java.util.List;
2122
import java.util.Objects;
@@ -100,14 +101,14 @@ public OptionalValue<CardHeight> height() {
100101
}
101102

102103
@JsonIgnore
103-
public CardMessageMedia getMedia() {
104+
public MediaMessage getMedia() {
104105
if (null == cardMessage || !cardMessage.isPresent() || null == cardMessage.get().getMedia()) {
105106
return null;
106107
}
107108
return cardMessage.get().getMedia();
108109
}
109110

110-
public OptionalValue<CardMessageMedia> media() {
111+
public OptionalValue<MediaMessage> media() {
111112
return null != cardMessage && cardMessage.isPresent()
112113
? cardMessage.map(f -> ((CardMessageInternalImpl) f).media()).orElse(OptionalValue.empty())
113114
: OptionalValue.empty();
@@ -195,7 +196,7 @@ public Builder setHeight(CardHeight height) {
195196
}
196197

197198
@JsonIgnore
198-
public Builder setMedia(CardMessageMedia media) {
199+
public Builder setMedia(MediaMessage media) {
199200
getDelegatedBuilder().setMedia(media);
200201
return this;
201202
}

openapi-contracts/src/main/com/sinch/sdk/domains/conversation/models/v1/messages/types/card/CardMessageMedia.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

openapi-contracts/src/main/com/sinch/sdk/domains/conversation/models/v1/messages/types/card/CardMessageMediaImpl.java

Lines changed: 0 additions & 90 deletions
This file was deleted.

openapi-contracts/src/main/com/sinch/sdk/domains/conversation/models/v1/messages/types/internal/CardMessageInternal.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
1414
import com.sinch.sdk.domains.conversation.models.v1.messages.types.card.CardHeight;
15-
import com.sinch.sdk.domains.conversation.models.v1.messages.types.card.CardMessageMedia;
1615
import com.sinch.sdk.domains.conversation.models.v1.messages.types.choice.Choice;
16+
import com.sinch.sdk.domains.conversation.models.v1.messages.types.media.MediaMessage;
1717
import java.util.List;
1818

1919
/** Message containing text, media and choices. */
@@ -46,7 +46,7 @@ public interface CardMessageInternal {
4646
*
4747
* @return media
4848
*/
49-
CardMessageMedia getMedia();
49+
MediaMessage getMedia();
5050

5151
/**
5252
* The title of the card message.
@@ -101,7 +101,7 @@ interface Builder {
101101
* @return Current builder
102102
* @see #getMedia
103103
*/
104-
Builder setMedia(CardMessageMedia media);
104+
Builder setMedia(MediaMessage media);
105105

106106
/**
107107
* see getter

0 commit comments

Comments
 (0)