Browse Source

Rename WebSocket delivery method to push-notification; refactoring

pull/7925/head
ViacheslavKlimov 4 years ago
parent
commit
1317a8aca9
  1. 2
      application/src/main/java/org/thingsboard/server/controller/NotificationTargetController.java
  2. 2
      application/src/main/java/org/thingsboard/server/controller/NotificationTemplateController.java
  3. 5
      application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java
  4. 1
      application/src/main/java/org/thingsboard/server/service/notification/channels/SlackNotificationChannel.java
  5. 2
      application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java
  6. 9
      application/src/test/java/org/thingsboard/server/service/notification/NotificationApiTest.java
  7. 2
      application/src/test/java/org/thingsboard/server/service/notification/NotificationRuleApiTest.java
  8. 2
      common/data/src/main/java/org/thingsboard/server/common/data/notification/NotificationDeliveryMethod.java
  9. 2
      common/data/src/main/java/org/thingsboard/server/common/data/notification/template/EmailDeliveryMethodNotificationTemplate.java
  10. 2
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/notification/TbNotificationNodeConfiguration.java

2
application/src/main/java/org/thingsboard/server/controller/NotificationTargetController.java

@ -60,8 +60,6 @@ public class NotificationTargetController extends BaseController {
@ApiOperation(value = "Save notification target (saveNotificationTarget)",
notes = "Create or update notification target.\n\n" +
"Examples with different configuration types:\n" +
"- SINGLE_USER:\n" +
"```\n{\n \"name\": \"Me\",\n \"configuration\": {\n \"type\": \"SINGLE_USER\",\n \"userId\": \"ea31a460-3d85-11ed-9200-77fc04fa14fa\"\n }\n}\n```\n" +
"- USER_LIST:\n" +
"```\n{\n \"name\": \"Special users\",\n \"configuration\": {\n \"type\": \"USER_LIST\",\n \"usersIds\": [\n \"ea31a460-3d85-11ed-9200-77fc04fa14fa\",\n \"86f7b260-3d88-11ed-ad72-ad2ee0f70ba1\"\n ]\n }\n}\n```\n" +
"- CUSTOMER_USERS (not accessible to system administrator):\n" +

2
application/src/main/java/org/thingsboard/server/controller/NotificationTemplateController.java

@ -69,7 +69,7 @@ public class NotificationTemplateController extends BaseController {
" \"configuration\": {\n" +
" \"defaultTextTemplate\": \"Hello everyone\", # required if any of the templates' bodies is not set\n" +
" \"templates\": {\n" +
" \"WEBSOCKET\": {\n \"method\": \"WEBSOCKET\",\n \"body\": null # defaultTextTemplate will be used if body is not set\n },\n" +
" \"PUSH\": {\n \"method\": \"PUSH\",\n \"body\": null # defaultTextTemplate will be used if body is not set\n },\n" +
" \"SMS\": {\n \"method\": \"SMS\",\n \"body\": null\n },\n" +
" \"EMAIL\": {\n \"method\": \"EMAIL\",\n \"body\": \"Non-default value for email notification: <body>Hello everyone</body>\",\n \"subject\": \"Message from administrator\"\n },\n" +
" \"SLACK\": {\n \"method\": \"SLACK\",\n \"body\": null,\n \"conversationType\": \"PUBLIC_CHANNEL\",\n \"conversationId\": \"U02LD7BJOU2\" # received from listSlackConversations API method\n }\n" +

5
application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java

@ -70,7 +70,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@Service
@ -331,7 +330,7 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
@Override
public NotificationDeliveryMethod getDeliveryMethod() {
return NotificationDeliveryMethod.WEBSOCKET;
return NotificationDeliveryMethod.PUSH;
}
@Override
@ -342,7 +341,7 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple
@Autowired
public void setChannels(List<NotificationChannel> channels, NotificationCenter websocketNotificationChannel) {
this.channels = channels.stream().collect(Collectors.toMap(NotificationChannel::getDeliveryMethod, c -> c));
this.channels.put(NotificationDeliveryMethod.WEBSOCKET, (NotificationChannel) websocketNotificationChannel);
this.channels.put(NotificationDeliveryMethod.PUSH, (NotificationChannel) websocketNotificationChannel);
}
}

1
application/src/main/java/org/thingsboard/server/service/notification/channels/SlackNotificationChannel.java

@ -32,7 +32,6 @@ import org.thingsboard.server.service.notification.NotificationProcessingContext
@Component
@RequiredArgsConstructor
@SuppressWarnings("UnstableApiUsage")
public class SlackNotificationChannel implements NotificationChannel {
private final SlackService slackService;

2
application/src/test/java/org/thingsboard/server/service/notification/AbstractNotificationApiTest.java

@ -89,7 +89,7 @@ public abstract class AbstractNotificationApiTest extends AbstractControllerTest
protected NotificationRequest submitNotificationRequest(List<NotificationTargetId> targets, String text, int delayInSec, NotificationDeliveryMethod... deliveryMethods) {
if (deliveryMethods.length == 0) {
deliveryMethods = new NotificationDeliveryMethod[]{NotificationDeliveryMethod.WEBSOCKET};
deliveryMethods = new NotificationDeliveryMethod[]{NotificationDeliveryMethod.PUSH};
}
NotificationTemplate notificationTemplate = createNotificationTemplate(DEFAULT_NOTIFICATION_TYPE, DEFAULT_NOTIFICATION_SUBJECT, text, deliveryMethods);
NotificationRequestConfig config = new NotificationRequestConfig();

9
application/src/test/java/org/thingsboard/server/service/notification/NotificationApiTest.java

@ -31,7 +31,6 @@ import org.thingsboard.server.common.data.notification.NotificationRequest;
import org.thingsboard.server.common.data.notification.NotificationRequestStats;
import org.thingsboard.server.common.data.notification.NotificationRequestStatus;
import org.thingsboard.server.common.data.notification.targets.NotificationTarget;
import org.thingsboard.server.common.data.notification.targets.UserListNotificationTargetConfig;
import org.thingsboard.server.common.data.security.Authority;
import org.thingsboard.server.dao.service.DaoSqlTest;
import org.thingsboard.server.service.ws.notification.cmd.UnreadNotificationsCountUpdate;
@ -278,7 +277,7 @@ public class NotificationApiTest extends AbstractNotificationApiTest {
sessions.forEach((user, wsClient) -> wsClient.registerWaitForUpdate(2));
NotificationRequest notificationRequest = submitNotificationRequest(targets, "Hello, ${email}", 0,
NotificationDeliveryMethod.WEBSOCKET, NotificationDeliveryMethod.EMAIL);
NotificationDeliveryMethod.PUSH, NotificationDeliveryMethod.EMAIL);
await().atMost(20, TimeUnit.SECONDS)
.pollDelay(1, TimeUnit.SECONDS).pollInterval(500, TimeUnit.MILLISECONDS)
.until(() -> {
@ -304,7 +303,7 @@ public class NotificationApiTest extends AbstractNotificationApiTest {
await().atMost(2, TimeUnit.SECONDS)
.until(() -> findNotificationRequest(notificationRequest.getId()).getStats() != null);
NotificationRequestStats stats = findNotificationRequest(notificationRequest.getId()).getStats();
assertThat(stats.getSent().get(NotificationDeliveryMethod.WEBSOCKET))
assertThat(stats.getSent().get(NotificationDeliveryMethod.PUSH))
.containsAll(sessions.keySet().stream().map(User::getEmail).collect(Collectors.toSet()));
assertThat(stats.getSent().get(NotificationDeliveryMethod.EMAIL))
.containsAll(sessions.keySet().stream().map(User::getEmail).collect(Collectors.toSet()));
@ -329,14 +328,14 @@ public class NotificationApiTest extends AbstractNotificationApiTest {
wsClient.registerWaitForUpdate();
NotificationTarget notificationTarget = createNotificationTarget(customerUserId);
NotificationRequest notificationRequest = submitNotificationRequest(notificationTarget.getId(), "Test :)",
NotificationDeliveryMethod.WEBSOCKET, NotificationDeliveryMethod.EMAIL, NotificationDeliveryMethod.SMS);
NotificationDeliveryMethod.PUSH, NotificationDeliveryMethod.EMAIL, NotificationDeliveryMethod.SMS);
wsClient.waitForUpdate();
await().atMost(2, TimeUnit.SECONDS)
.until(() -> findNotificationRequest(notificationRequest.getId()).getStats() != null);
NotificationRequestStats stats = findNotificationRequest(notificationRequest.getId()).getStats();
assertThat(stats.getSent().get(NotificationDeliveryMethod.WEBSOCKET)).containsOnly(CUSTOMER_USER_EMAIL);
assertThat(stats.getSent().get(NotificationDeliveryMethod.PUSH)).containsOnly(CUSTOMER_USER_EMAIL);
assertThat(stats.getSent().get(NotificationDeliveryMethod.EMAIL)).containsOnly(CUSTOMER_USER_EMAIL);
assertThat(stats.getErrors().get(NotificationDeliveryMethod.SMS)).size().isOne();
}

2
application/src/test/java/org/thingsboard/server/service/notification/NotificationRuleApiTest.java

@ -80,7 +80,7 @@ public class NotificationRuleApiTest extends AbstractNotificationApiTest {
@Test
public void testNotificationRuleProcessing() throws Exception {
NotificationDeliveryMethod[] deliveryMethods = {NotificationDeliveryMethod.WEBSOCKET, NotificationDeliveryMethod.EMAIL};
NotificationDeliveryMethod[] deliveryMethods = {NotificationDeliveryMethod.PUSH, NotificationDeliveryMethod.EMAIL};
NotificationTemplate notificationTemplate = createNotificationTemplate(NotificationType.ALARM, "New alarm", "NEW ALARM ${alarmType}", deliveryMethods);
NotificationRule notificationRule = new NotificationRule();

2
common/data/src/main/java/org/thingsboard/server/common/data/notification/NotificationDeliveryMethod.java

@ -16,5 +16,5 @@
package org.thingsboard.server.common.data.notification;
public enum NotificationDeliveryMethod {
WEBSOCKET, SMS, EMAIL, SLACK
PUSH, SMS, EMAIL, SLACK
}

2
common/data/src/main/java/org/thingsboard/server/common/data/notification/template/EmailDeliveryMethodNotificationTemplate.java

@ -18,8 +18,6 @@ package org.thingsboard.server.common.data.notification.template;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
@Data
@EqualsAndHashCode(callSuper = true)
public class EmailDeliveryMethodNotificationTemplate extends DeliveryMethodNotificationTemplate {

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/notification/TbNotificationNodeConfiguration.java

@ -40,7 +40,7 @@ public class TbNotificationNodeConfiguration implements NodeConfiguration<TbNoti
@Override
public TbNotificationNodeConfiguration defaultConfiguration() {
TbNotificationNodeConfiguration config = new TbNotificationNodeConfiguration();
config.setDeliveryMethods(List.of(NotificationDeliveryMethod.WEBSOCKET));
config.setDeliveryMethods(List.of(NotificationDeliveryMethod.PUSH));
config.setAdditionalConfig(new NotificationRequestConfig());
return config;
}

Loading…
Cancel
Save