diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java index 626c4260d..d5550aee3 100644 --- a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java @@ -30,4 +30,6 @@ public interface MattermostAnnouncer extends Announcer { String getMessage(); String getMessageTemplate(); + + boolean isStructuredMessage(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java index c5e3d0978..c26281691 100644 --- a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java @@ -29,4 +29,6 @@ public interface WebhookAnnouncer extends Announcer { String getMessageProperty(); String getMessageTemplate(); + + boolean isStructuredMessage(); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java index b19d5b11b..5efcd75bc 100644 --- a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java @@ -45,6 +45,7 @@ public final class MattermostAnnouncer extends AbstractAnnouncer props) { props.put("webhook", isNotBlank(webhook) ? HIDE : UNSET); props.put("message", message); props.put("messageTemplate", messageTemplate); + props.put("structuredMessage", isStructuredMessage()); } } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java index 9313c007c..3d8304322 100644 --- a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java @@ -45,6 +45,7 @@ public final class WebhookAnnouncer extends AbstractAnnouncer props) { props.put("webhook", isNotBlank(webhook) ? HIDE : UNSET); props.put("message", message); props.put("messageProperty", messageProperty); props.put("messageTemplate", messageTemplate); + props.put("structuredMessage", isStructuredMessage()); } } diff --git a/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java index 87b47e470..37a07605c 100644 --- a/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java +++ b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java @@ -34,7 +34,8 @@ * @since 0.4.0 */ @org.jreleaser.infra.nativeimage.annotations.NativeImage -public class MattermostAnnouncer implements Announcer { +public class +MattermostAnnouncer implements Announcer { private final JReleaserContext context; private final org.jreleaser.model.internal.announce.MattermostAnnouncer mattermost; @@ -70,14 +71,15 @@ public void announce() throws AnnounceException { message = mattermost.getResolvedMessageTemplate(context, props); } - context.getLogger().info("message: {}", message); + Object msg = mattermost.isStructuredMessage() ? Message.of(message) : message; + context.getLogger().info("message: {}", msg); if (!context.isDryrun()) { ClientUtils.webhook(context.getLogger(), mattermost.getWebhook(), mattermost.getConnectTimeout(), mattermost.getReadTimeout(), - Message.of(message)); + msg); } } } diff --git a/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java index a3ff089b3..4200fea59 100644 --- a/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java +++ b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java @@ -88,18 +88,20 @@ public void announce(WebhookAnnouncer webhook) throws AnnounceException { String message = ""; if (isNotBlank(webhook.getMessage())) { message = webhook.getResolvedMessage(context); + } else { + Map props = new LinkedHashMap<>(); + props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); + message = webhook.getResolvedMessageTemplate(context, props); + } + if (webhook.isStructuredMessage() && isNotBlank(webhook.getMessageProperty())) { ObjectMapper objectMapper = new ObjectMapper(); try { message = objectMapper.writeValueAsString(CollectionUtils.mapOf(webhook.getMessageProperty(), message)); } catch (JsonProcessingException e) { throw new AnnounceException(RB.$("ERROR_unexpected_json_format"), e); } - } else { - Map props = new LinkedHashMap<>(); - props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); - message = webhook.getResolvedMessageTemplate(context, props); } context.getLogger().info("message: {}", message);