aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/traccar/BaseProtocol.java4
-rw-r--r--src/main/java/org/traccar/api/resource/NotificationResource.java4
-rw-r--r--src/main/java/org/traccar/database/CommandsManager.java2
-rw-r--r--src/main/java/org/traccar/database/NotificationManager.java13
-rw-r--r--src/main/java/org/traccar/notificators/Notificator.java19
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorFirebase.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorMail.java4
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorNull.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorPushover.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorSms.java18
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorTelegram.java9
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorWeb.java4
-rw-r--r--src/main/java/org/traccar/sms/HttpSmsClient.java32
-rw-r--r--src/main/java/org/traccar/sms/SmsManager.java7
-rw-r--r--src/main/java/org/traccar/sms/SnsSmsClient.java9
15 files changed, 43 insertions, 109 deletions
diff --git a/src/main/java/org/traccar/BaseProtocol.java b/src/main/java/org/traccar/BaseProtocol.java
index 52d34dc44..ec1933dc8 100644
--- a/src/main/java/org/traccar/BaseProtocol.java
+++ b/src/main/java/org/traccar/BaseProtocol.java
@@ -113,11 +113,11 @@ public abstract class BaseProtocol implements Protocol {
public void sendTextCommand(String destAddress, Command command) throws Exception {
if (Context.getSmsManager() != null) {
if (command.getType().equals(Command.TYPE_CUSTOM)) {
- Context.getSmsManager().sendMessageSync(destAddress, command.getString(Command.KEY_DATA), true);
+ Context.getSmsManager().sendMessage(destAddress, command.getString(Command.KEY_DATA), true);
} else if (supportedTextCommands.contains(command.getType()) && textCommandEncoder != null) {
String encodedCommand = (String) textCommandEncoder.encodeCommand(command);
if (encodedCommand != null) {
- Context.getSmsManager().sendMessageSync(destAddress, encodedCommand, true);
+ Context.getSmsManager().sendMessage(destAddress, encodedCommand, true);
} else {
throw new RuntimeException("Failed to encode command");
}
diff --git a/src/main/java/org/traccar/api/resource/NotificationResource.java b/src/main/java/org/traccar/api/resource/NotificationResource.java
index 2fc103e20..9ea811473 100644
--- a/src/main/java/org/traccar/api/resource/NotificationResource.java
+++ b/src/main/java/org/traccar/api/resource/NotificationResource.java
@@ -62,7 +62,7 @@ public class NotificationResource extends ExtendedObjectResource<Notification> {
User user = permissionsService.getUser(getUserId());
for (Typed method : Context.getNotificatorManager().getAllNotificatorTypes()) {
Context.getNotificatorManager()
- .getNotificator(method.getType()).sendSync(user, new Event("test", 0), null);
+ .getNotificator(method.getType()).send(user, new Event("test", 0), null);
}
return Response.noContent().build();
}
@@ -72,7 +72,7 @@ public class NotificationResource extends ExtendedObjectResource<Notification> {
public Response testMessage(@PathParam("notificator") String notificator)
throws MessageException, InterruptedException, StorageException {
User user = permissionsService.getUser(getUserId());
- Context.getNotificatorManager().getNotificator(notificator).sendSync(user, new Event("test", 0), null);
+ Context.getNotificatorManager().getNotificator(notificator).send(user, new Event("test", 0), null);
return Response.noContent().build();
}
diff --git a/src/main/java/org/traccar/database/CommandsManager.java b/src/main/java/org/traccar/database/CommandsManager.java
index d440755f7..8dd2ba8b7 100644
--- a/src/main/java/org/traccar/database/CommandsManager.java
+++ b/src/main/java/org/traccar/database/CommandsManager.java
@@ -79,7 +79,7 @@ public class CommandsManager {
BaseProtocol protocol = serverManager.getProtocol(position.getProtocol());
protocol.sendTextCommand(device.getPhone(), command);
} else if (command.getType().equals(Command.TYPE_CUSTOM)) {
- smsManager.sendMessageSync(device.getPhone(), command.getString(Command.KEY_DATA), true);
+ smsManager.sendMessage(device.getPhone(), command.getString(Command.KEY_DATA), true);
} else {
throw new RuntimeException("Command " + command.getType() + " is not supported");
}
diff --git a/src/main/java/org/traccar/database/NotificationManager.java b/src/main/java/org/traccar/database/NotificationManager.java
index f88b3b18c..2f912fff1 100644
--- a/src/main/java/org/traccar/database/NotificationManager.java
+++ b/src/main/java/org/traccar/database/NotificationManager.java
@@ -36,6 +36,7 @@ import org.traccar.model.Notification;
import org.traccar.model.Position;
import org.traccar.model.Typed;
import org.traccar.model.User;
+import org.traccar.notification.MessageException;
import org.traccar.storage.StorageException;
public class NotificationManager extends ExtendedObjectManager<Notification> {
@@ -108,9 +109,15 @@ public class NotificationManager extends ExtendedObjectManager<Notification> {
}
User user = Context.getUsersManager().getById(userId);
- for (String notificator : notificators) {
- Context.getNotificatorManager().getNotificator(notificator).sendAsync(user, event, position);
- }
+ new Thread(() -> {
+ for (String notificator : notificators) {
+ try {
+ Context.getNotificatorManager().getNotificator(notificator).send(user, event, position);
+ } catch (MessageException | InterruptedException exception) {
+ LOGGER.warn("Notification failed", exception);
+ }
+ }
+ }).start();
}
if (Context.getEventForwarder() != null) {
Context.getEventForwarder().forwardEvent(event, position, usersToForward);
diff --git a/src/main/java/org/traccar/notificators/Notificator.java b/src/main/java/org/traccar/notificators/Notificator.java
index 3903f3008..052365c7a 100644
--- a/src/main/java/org/traccar/notificators/Notificator.java
+++ b/src/main/java/org/traccar/notificators/Notificator.java
@@ -16,28 +16,13 @@
*/
package org.traccar.notificators;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.traccar.model.Event;
import org.traccar.model.Position;
import org.traccar.model.User;
import org.traccar.notification.MessageException;
-public abstract class Notificator {
+public interface Notificator {
- private static final Logger LOGGER = LoggerFactory.getLogger(Notificator.class);
-
- public void sendAsync(User user, Event event, Position position) {
- new Thread(() -> {
- try {
- sendSync(user, event, position);
- } catch (MessageException | InterruptedException error) {
- LOGGER.warn("Event send error", error);
- }
- }).start();
- }
-
- public abstract void sendSync(User user, Event event, Position position)
- throws MessageException, InterruptedException;
+ void send(User user, Event event, Position position) throws MessageException, InterruptedException;
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorFirebase.java b/src/main/java/org/traccar/notificators/NotificatorFirebase.java
index ee22b3a22..cafd2237d 100644
--- a/src/main/java/org/traccar/notificators/NotificatorFirebase.java
+++ b/src/main/java/org/traccar/notificators/NotificatorFirebase.java
@@ -32,7 +32,7 @@ import org.traccar.session.cache.CacheManager;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.InvocationCallback;
-public class NotificatorFirebase extends Notificator {
+public class NotificatorFirebase implements Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorFirebase.class);
@@ -67,7 +67,7 @@ public class NotificatorFirebase extends Notificator {
}
@Override
- public void sendSync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) {
if (user.getAttributes().containsKey("notificationTokens")) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
@@ -97,9 +97,4 @@ public class NotificatorFirebase extends Notificator {
}
}
- @Override
- public void sendAsync(User user, Event event, Position position) {
- sendSync(user, event, position);
- }
-
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorMail.java b/src/main/java/org/traccar/notificators/NotificatorMail.java
index 7b85254be..fd7cae7c3 100644
--- a/src/main/java/org/traccar/notificators/NotificatorMail.java
+++ b/src/main/java/org/traccar/notificators/NotificatorMail.java
@@ -28,10 +28,10 @@ import org.traccar.session.cache.CacheManager;
import javax.mail.MessagingException;
-public final class NotificatorMail extends Notificator {
+public final class NotificatorMail implements Notificator {
@Override
- public void sendSync(User user, Event event, Position position) throws MessageException {
+ public void send(User user, Event event, Position position) throws MessageException {
try {
NotificationMessage fullMessage = NotificationFormatter.formatMessage(
Main.getInjector().getInstance(CacheManager.class), user, event, position, "full");
diff --git a/src/main/java/org/traccar/notificators/NotificatorNull.java b/src/main/java/org/traccar/notificators/NotificatorNull.java
index a03a6e2c9..ba9ade9c6 100644
--- a/src/main/java/org/traccar/notificators/NotificatorNull.java
+++ b/src/main/java/org/traccar/notificators/NotificatorNull.java
@@ -22,17 +22,12 @@ import org.traccar.model.Event;
import org.traccar.model.Position;
import org.traccar.model.User;
-public final class NotificatorNull extends Notificator {
+public class NotificatorNull implements Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorNull.class);
@Override
- public void sendAsync(User user, Event event, Position position) {
- LOGGER.warn("You are using null notificatior, please check your configuration, notification not sent");
- }
-
- @Override
- public void sendSync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) {
LOGGER.warn("You are using null notificatior, please check your configuration, notification not sent");
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorPushover.java b/src/main/java/org/traccar/notificators/NotificatorPushover.java
index ffd9b426f..70c1a6cdc 100644
--- a/src/main/java/org/traccar/notificators/NotificatorPushover.java
+++ b/src/main/java/org/traccar/notificators/NotificatorPushover.java
@@ -31,7 +31,7 @@ import org.traccar.session.cache.CacheManager;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.InvocationCallback;
-public class NotificatorPushover extends Notificator {
+public class NotificatorPushover implements Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorPushover.class);
@@ -59,7 +59,7 @@ public class NotificatorPushover extends Notificator {
}
@Override
- public void sendSync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) {
String device = "";
@@ -100,9 +100,4 @@ public class NotificatorPushover extends Notificator {
});
}
- @Override
- public void sendAsync(User user, Event event, Position position) {
- sendSync(user, event, position);
- }
-
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorSms.java b/src/main/java/org/traccar/notificators/NotificatorSms.java
index ae409c558..f35b797cd 100644
--- a/src/main/java/org/traccar/notificators/NotificatorSms.java
+++ b/src/main/java/org/traccar/notificators/NotificatorSms.java
@@ -27,27 +27,15 @@ import org.traccar.notification.NotificationFormatter;
import org.traccar.notification.NotificationMessage;
import org.traccar.session.cache.CacheManager;
-public final class NotificatorSms extends Notificator {
+public final class NotificatorSms implements Notificator {
@Override
- public void sendAsync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) throws MessageException, InterruptedException {
if (user.getPhone() != null) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
Main.getInjector().getInstance(StatisticsManager.class).registerSms();
- Context.getSmsManager().sendMessageAsync(user.getPhone(),
- shortMessage.getBody(), false);
- }
- }
-
- @Override
- public void sendSync(User user, Event event, Position position) throws MessageException, InterruptedException {
- if (user.getPhone() != null) {
- NotificationMessage shortMessage = NotificationFormatter.formatMessage(
- Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
- Main.getInjector().getInstance(StatisticsManager.class).registerSms();
- Context.getSmsManager().sendMessageSync(user.getPhone(),
- shortMessage.getBody(), false);
+ Context.getSmsManager().sendMessage(user.getPhone(), shortMessage.getBody(), false);
}
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorTelegram.java b/src/main/java/org/traccar/notificators/NotificatorTelegram.java
index 46e29559d..0ed53ac4c 100644
--- a/src/main/java/org/traccar/notificators/NotificatorTelegram.java
+++ b/src/main/java/org/traccar/notificators/NotificatorTelegram.java
@@ -32,7 +32,7 @@ import org.traccar.session.cache.CacheManager;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.InvocationCallback;
-public class NotificatorTelegram extends Notificator {
+public class NotificatorTelegram implements Notificator {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorTelegram.class);
@@ -99,7 +99,7 @@ public class NotificatorTelegram extends Notificator {
}
@Override
- public void sendSync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) {
NotificationMessage shortMessage = NotificationFormatter.formatMessage(
Main.getInjector().getInstance(CacheManager.class), user, event, position, "short");
@@ -115,9 +115,4 @@ public class NotificatorTelegram extends Notificator {
}
}
- @Override
- public void sendAsync(User user, Event event, Position position) {
- sendSync(user, event, position);
- }
-
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorWeb.java b/src/main/java/org/traccar/notificators/NotificatorWeb.java
index c9ab93b6d..023cb04af 100644
--- a/src/main/java/org/traccar/notificators/NotificatorWeb.java
+++ b/src/main/java/org/traccar/notificators/NotificatorWeb.java
@@ -21,10 +21,10 @@ import org.traccar.model.Event;
import org.traccar.model.Position;
import org.traccar.model.User;
-public final class NotificatorWeb extends Notificator {
+public final class NotificatorWeb implements Notificator {
@Override
- public void sendSync(User user, Event event, Position position) {
+ public void send(User user, Event event, Position position) {
Context.getConnectionManager().updateEvent(user.getId(), event);
}
diff --git a/src/main/java/org/traccar/sms/HttpSmsClient.java b/src/main/java/org/traccar/sms/HttpSmsClient.java
index 6234eabb8..5c3cef747 100644
--- a/src/main/java/org/traccar/sms/HttpSmsClient.java
+++ b/src/main/java/org/traccar/sms/HttpSmsClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 - 2020 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,8 +16,6 @@
*/
package org.traccar.sms;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.traccar.Context;
import org.traccar.config.Keys;
import org.traccar.helper.DataConverter;
@@ -25,7 +23,6 @@ import org.traccar.notification.MessageException;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.InvocationCallback;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.UnsupportedEncodingException;
@@ -34,8 +31,6 @@ import java.nio.charset.StandardCharsets;
public class HttpSmsClient implements SmsManager {
- private static final Logger LOGGER = LoggerFactory.getLogger(HttpSmsClient.class);
-
private final String url;
private final String authorizationHeader;
private final String authorization;
@@ -91,26 +86,13 @@ public class HttpSmsClient implements SmsManager {
}
@Override
- public void sendMessageSync(String destAddress, String message, boolean command) throws MessageException {
- Response response = getRequestBuilder().post(Entity.entity(preparePayload(destAddress, message), mediaType));
- if (response.getStatus() / 100 != 2) {
- throw new MessageException(response.readEntity(String.class));
- }
- }
-
- @Override
- public void sendMessageAsync(final String destAddress, final String message, final boolean command) {
- getRequestBuilder().async().post(
- Entity.entity(preparePayload(destAddress, message), mediaType), new InvocationCallback<String>() {
- @Override
- public void completed(String s) {
- }
-
- @Override
- public void failed(Throwable throwable) {
- LOGGER.warn("SMS send failed", throwable);
+ public void sendMessage(String destAddress, String message, boolean command) throws MessageException {
+ try (Response response = getRequestBuilder()
+ .post(Entity.entity(preparePayload(destAddress, message), mediaType))) {
+ if (response.getStatus() / 100 != 2) {
+ throw new MessageException(response.readEntity(String.class));
}
- });
+ }
}
}
diff --git a/src/main/java/org/traccar/sms/SmsManager.java b/src/main/java/org/traccar/sms/SmsManager.java
index 3b0cbda7f..9ab25d9cb 100644
--- a/src/main/java/org/traccar/sms/SmsManager.java
+++ b/src/main/java/org/traccar/sms/SmsManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 Anton Tananaev (anton@traccar.org)
+ * Copyright 2018 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2018 Andrey Kunitsyn (andrey@traccar.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,10 +20,7 @@ import org.traccar.notification.MessageException;
public interface SmsManager {
- void sendMessageSync(
+ void sendMessage(
String destAddress, String message, boolean command) throws InterruptedException, MessageException;
- void sendMessageAsync(
- String destAddress, String message, boolean command);
-
}
diff --git a/src/main/java/org/traccar/sms/SnsSmsClient.java b/src/main/java/org/traccar/sms/SnsSmsClient.java
index bdd4104f5..49889ac89 100644
--- a/src/main/java/org/traccar/sms/SnsSmsClient.java
+++ b/src/main/java/org/traccar/sms/SnsSmsClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Anton Tananaev (anton@traccar.org)
+ * Copyright 2021 - 2022 Anton Tananaev (anton@traccar.org)
* Copyright 2021 Subodh Ranadive (subodhranadive3103@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -54,7 +54,7 @@ public class SnsSmsClient implements SmsManager {
}
@Override
- public void sendMessageSync(String destAddress, String message, boolean command) {
+ public void sendMessage(String destAddress, String message, boolean command) {
Map<String, MessageAttributeValue> smsAttributes = new HashMap<>();
smsAttributes.put("AWS.SNS.SMS.SenderID",
new MessageAttributeValue().withStringValue("SNS").withDataType("String"));
@@ -74,9 +74,4 @@ public class SnsSmsClient implements SmsManager {
}
});
}
-
- @Override
- public void sendMessageAsync(String destAddress, String message, boolean command) {
- sendMessageSync(destAddress, message, command);
- }
}