aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/traccar/Context.java12
-rw-r--r--src/main/java/org/traccar/api/resource/NotificationResource.java14
-rw-r--r--src/main/java/org/traccar/database/NotificationManager.java8
-rw-r--r--src/main/java/org/traccar/notification/NotificatorManager.java13
4 files changed, 28 insertions, 19 deletions
diff --git a/src/main/java/org/traccar/Context.java b/src/main/java/org/traccar/Context.java
index 5011764c6..42a92f436 100644
--- a/src/main/java/org/traccar/Context.java
+++ b/src/main/java/org/traccar/Context.java
@@ -126,12 +126,6 @@ public final class Context {
return notificationManager;
}
- private static NotificatorManager notificatorManager;
-
- public static NotificatorManager getNotificatorManager() {
- return notificatorManager;
- }
-
private static VelocityEngine velocityEngine;
public static VelocityEngine getVelocityEngine() {
@@ -208,8 +202,10 @@ public final class Context {
private static void initEventsModule() {
- notificationManager = new NotificationManager(dataManager, Main.getInjector().getInstance(CacheManager.class));
- notificatorManager = new NotificatorManager();
+ notificationManager = new NotificationManager(
+ dataManager,
+ Main.getInjector().getInstance(CacheManager.class),
+ Main.getInjector().getInstance(NotificatorManager.class));
Properties velocityProperties = new Properties();
velocityProperties.setProperty("file.resource.loader.path",
Context.getConfig().getString("templates.rootPath", "templates") + "/");
diff --git a/src/main/java/org/traccar/api/resource/NotificationResource.java b/src/main/java/org/traccar/api/resource/NotificationResource.java
index 9ea811473..0a95b257a 100644
--- a/src/main/java/org/traccar/api/resource/NotificationResource.java
+++ b/src/main/java/org/traccar/api/resource/NotificationResource.java
@@ -17,6 +17,7 @@ package org.traccar.api.resource;
import java.util.Collection;
+import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
@@ -33,6 +34,7 @@ import org.traccar.model.Notification;
import org.traccar.model.Typed;
import org.traccar.model.User;
import org.traccar.notification.MessageException;
+import org.traccar.notification.NotificatorManager;
import org.traccar.storage.StorageException;
@Path("notifications")
@@ -40,6 +42,9 @@ import org.traccar.storage.StorageException;
@Consumes(MediaType.APPLICATION_JSON)
public class NotificationResource extends ExtendedObjectResource<Notification> {
+ @Inject
+ private NotificatorManager notificatorManager;
+
public NotificationResource() {
super(Notification.class);
}
@@ -53,16 +58,15 @@ public class NotificationResource extends ExtendedObjectResource<Notification> {
@GET
@Path("notificators")
public Collection<Typed> getNotificators() {
- return Context.getNotificatorManager().getAllNotificatorTypes();
+ return notificatorManager.getAllNotificatorTypes();
}
@POST
@Path("test")
public Response testMessage() throws MessageException, InterruptedException, StorageException {
User user = permissionsService.getUser(getUserId());
- for (Typed method : Context.getNotificatorManager().getAllNotificatorTypes()) {
- Context.getNotificatorManager()
- .getNotificator(method.getType()).send(user, new Event("test", 0), null);
+ for (Typed method : notificatorManager.getAllNotificatorTypes()) {
+ notificatorManager.getNotificator(method.getType()).send(user, new Event("test", 0), null);
}
return Response.noContent().build();
}
@@ -72,7 +76,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).send(user, new Event("test", 0), null);
+ notificatorManager.getNotificator(notificator).send(user, new Event("test", 0), null);
return Response.noContent().build();
}
diff --git a/src/main/java/org/traccar/database/NotificationManager.java b/src/main/java/org/traccar/database/NotificationManager.java
index fcefb54f0..eddd7e2b4 100644
--- a/src/main/java/org/traccar/database/NotificationManager.java
+++ b/src/main/java/org/traccar/database/NotificationManager.java
@@ -37,6 +37,7 @@ import org.traccar.model.Position;
import org.traccar.model.Typed;
import org.traccar.model.User;
import org.traccar.notification.MessageException;
+import org.traccar.notification.NotificatorManager;
import org.traccar.session.cache.CacheManager;
import org.traccar.storage.StorageException;
@@ -45,12 +46,15 @@ public class NotificationManager extends ExtendedObjectManager<Notification> {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificationManager.class);
private final CacheManager cacheManager;
+ private final NotificatorManager notificatorManager;
private final boolean geocodeOnRequest;
- public NotificationManager(DataManager dataManager, CacheManager cacheManager) {
+ public NotificationManager(
+ DataManager dataManager, CacheManager cacheManager, NotificatorManager notificatorManager) {
super(dataManager, Notification.class);
this.cacheManager = cacheManager;
+ this.notificatorManager = notificatorManager;
geocodeOnRequest = Context.getConfig().getBoolean(Keys.GEOCODER_ON_REQUEST);
}
@@ -116,7 +120,7 @@ public class NotificationManager extends ExtendedObjectManager<Notification> {
new Thread(() -> {
for (String notificator : notificators) {
try {
- Context.getNotificatorManager().getNotificator(notificator).send(user, event, position);
+ notificatorManager.getNotificator(notificator).send(user, event, position);
} catch (MessageException | InterruptedException exception) {
LOGGER.warn("Notification failed", exception);
}
diff --git a/src/main/java/org/traccar/notification/NotificatorManager.java b/src/main/java/org/traccar/notification/NotificatorManager.java
index 9705377b4..d6ebb2c4a 100644
--- a/src/main/java/org/traccar/notification/NotificatorManager.java
+++ b/src/main/java/org/traccar/notification/NotificatorManager.java
@@ -23,8 +23,8 @@ import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Context;
import org.traccar.Main;
+import org.traccar.config.Config;
import org.traccar.config.Keys;
import org.traccar.model.Typed;
import org.traccar.notificators.NotificatorFirebase;
@@ -37,7 +37,11 @@ import org.traccar.notificators.NotificatorWeb;
import org.traccar.notificators.NotificatorTelegram;
import org.traccar.notificators.NotificatorPushover;
-public final class NotificatorManager {
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+@Singleton
+public class NotificatorManager {
private static final Logger LOGGER = LoggerFactory.getLogger(NotificatorManager.class);
@@ -52,8 +56,9 @@ public final class NotificatorManager {
private final Map<String, Notificator> notificators = new HashMap<>();
- public NotificatorManager() {
- String types = Context.getConfig().getString(Keys.NOTIFICATOR_TYPES);
+ @Inject
+ public NotificatorManager(Config config) {
+ String types = config.getString(Keys.NOTIFICATOR_TYPES);
if (types != null) {
for (String type : types.split(",")) {
var notificatorClass = NOTIFICATORS_ALL.get(type);