diff --git a/symphony-bdk-core/build.gradle b/symphony-bdk-core/build.gradle index 9709a1507..e11156de7 100644 --- a/symphony-bdk-core/build.gradle +++ b/symphony-bdk-core/build.gradle @@ -72,7 +72,7 @@ dependencies { } // OpenAPI code generation -def apiBaseUrl = "https://raw.githubusercontent.com/finos/symphony-api-spec/136b530512eea112de73591906051871d034750a" +def apiBaseUrl = "https://raw.githubusercontent.com/finos/symphony-api-spec/46abc03ad7225ebc32439c06920019c9d0fb0814" def generatedFolder = "$buildDir/generated/openapi" def apisToGenerate = [ Agent: 'agent/agent-api-public-deprecated.yaml', diff --git a/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/MessageService.java b/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/MessageService.java index ca08c6595..080b94329 100644 --- a/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/MessageService.java +++ b/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/MessageService.java @@ -364,6 +364,7 @@ private Map getForm(Message message) { form.put("message", message.getContent()); form.put("data", message.getData()); form.put("version", message.getVersion()); + form.put("silent", message.getSilent()); form.put("attachment", toApiClientBodyParts(message.getAttachments())); form.put("preview", toApiClientBodyParts(message.getPreviews())); return form; diff --git a/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/model/Message.java b/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/model/Message.java index 5003b0271..93b5c4fa9 100644 --- a/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/model/Message.java +++ b/symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/message/model/Message.java @@ -52,6 +52,12 @@ public class Message { * Optional message version in the format "major.minor". If empty, defaults to the latest supported version. */ private final String version; + /** + * Optional boolean flag. Used in message update api only. + * If true, the message is updated as read already, otherwise it is unread. The default value is true. + * @since Agent 20.14 + */ + private final Boolean silent; Message(final MessageBuilder builder) { this.content = builder.content(); @@ -59,6 +65,7 @@ public class Message { this.data = builder.data(); this.attachments = builder.attachments(); this.previews = builder.previews(); + this.silent = builder.silent(); } /** @@ -86,6 +93,7 @@ public static class MessageBuilder { private String version = "2.0"; private String content; private String data; + private Boolean silent = Boolean.TRUE; private List attachments = new ArrayList<>(); @Setter(value = AccessLevel.PRIVATE) private List previews = new ArrayList<>(); @@ -136,6 +144,11 @@ public MessageBuilder data(@Nonnull Object data) { } } + public MessageBuilder silent(@Nonnull Boolean silent) { + this.silent = silent; + return this; + } + /** * Add attachment to the message. * @param content Attachment content. diff --git a/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/MessageServiceTest.java b/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/MessageServiceTest.java index 0ef205631..ea81628a6 100644 --- a/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/MessageServiceTest.java +++ b/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/MessageServiceTest.java @@ -344,6 +344,19 @@ void testMessageUpdate() throws IOException { assertEquals(1599659432867L, updateMessage.getInitialTimestamp()); } + @Test + void testMessageSilentUpdate() throws IOException { + mockApiClient.onPost(V4_STREAM_MESSAGE_UPDATE.replace("{sid}", STREAM_ID).replace("{mid}", MESSAGE_ID), + JsonHelper.readFromClasspath("/message/update_message.json")); + + final V4Message messageToUpdate = new V4Message().stream(new V4Stream().streamId(STREAM_ID)).messageId(MESSAGE_ID); + final Message content = Message.builder().content("This is a message update with silent flag as false").silent(false).build(); + final V4Message updateMessage = this.messageService.update(messageToUpdate, content); + + assertEquals(MESSAGE_ID, updateMessage.getMessageId()); + assertEquals(false, updateMessage.getSilent()); + } + @Test void testGetAttachment() throws ApiException { final String attachmentId = "attachmentId"; diff --git a/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/model/MessageTest.java b/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/model/MessageTest.java index 84a8b6564..6db5f026c 100644 --- a/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/model/MessageTest.java +++ b/symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/message/model/MessageTest.java @@ -28,4 +28,14 @@ void checkMessageMLAppendedToContentIfNotSet() { void checkMessageMLNotAppendedToContentIfSet() { assertEquals("hello", Message.builder().content("hello").build().getContent()); } + + @Test + void checkMessageSilentValueIfSet() { + assertEquals(Boolean.FALSE, Message.builder().content("hello").silent(Boolean.FALSE).build().getSilent()); + } + + @Test + void checkMessageSilentDefaultValue() { + assertEquals(Boolean.TRUE, Message.builder().content("hello").build().getSilent()); + } } diff --git a/symphony-bdk-core/src/test/resources/message/update_message.json b/symphony-bdk-core/src/test/resources/message/update_message.json index 7d946c7b7..730222594 100644 --- a/symphony-bdk-core/src/test/resources/message/update_message.json +++ b/symphony-bdk-core/src/test/resources/message/update_message.json @@ -29,5 +29,6 @@ "sid": "6ca2b92d-f198-4059-9073-9701c26ab5f3", "initialMessageId": "vanscOQk6IJXm-6XAN3B33___oiRvNNKdA", "initialTimestamp": 1599659432867, + "silent": false, "replacing": "j7-VAoCY_1pGAYSye_MtI3___oPXo8VHbQ" } diff --git a/symphony-bdk-examples/bdk-core-examples/src/main/java/com/symphony/bdk/examples/MessageUpdateExampleMain.java b/symphony-bdk-examples/bdk-core-examples/src/main/java/com/symphony/bdk/examples/MessageUpdateExampleMain.java index ea8ea08cd..c464ab5c4 100644 --- a/symphony-bdk-examples/bdk-core-examples/src/main/java/com/symphony/bdk/examples/MessageUpdateExampleMain.java +++ b/symphony-bdk-examples/bdk-core-examples/src/main/java/com/symphony/bdk/examples/MessageUpdateExampleMain.java @@ -43,7 +43,7 @@ private static void startTheShow(SymphonyBdk bdk, String streamId) { for (int i = 0; i < 10; i++) { Thread.sleep((long) (Math.random() * (5000L - 500L))); String mml = "

Update #" + (i + 1) + ""; - previousMessage = bdk.messages().update(previousMessage, Message.builder().content(mml).build()); + previousMessage = bdk.messages().update(previousMessage, Message.builder().content(mml).silent(false).build()); } }