aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2022-06-10 07:06:43 -0700
committerAnton Tananaev <anton@traccar.org>2022-06-10 07:06:43 -0700
commitc03b4a2ace925e6a0d7c43ce59e14ddb9cbf18a9 (patch)
tree148e1946041f4dad429cb4575b8ebfba7a3a4d85 /src
parent336d6c4353fd77ad268aaf5cfe9c0296edfb0201 (diff)
downloadtrackermap-server-c03b4a2ace925e6a0d7c43ce59e14ddb9cbf18a9.tar.gz
trackermap-server-c03b4a2ace925e6a0d7c43ce59e14ddb9cbf18a9.tar.bz2
trackermap-server-c03b4a2ace925e6a0d7c43ce59e14ddb9cbf18a9.zip
Inject mail manager
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/traccar/Context.java9
-rw-r--r--src/main/java/org/traccar/api/resource/PasswordResource.java7
-rw-r--r--src/main/java/org/traccar/api/resource/ReportResource.java8
-rw-r--r--src/main/java/org/traccar/api/resource/ServerResource.java8
-rw-r--r--src/main/java/org/traccar/database/MailManager.java16
-rw-r--r--src/main/java/org/traccar/model/Server.java10
-rw-r--r--src/main/java/org/traccar/notificators/NotificatorMail.java19
7 files changed, 52 insertions, 25 deletions
diff --git a/src/main/java/org/traccar/Context.java b/src/main/java/org/traccar/Context.java
index 42a92f436..cba4c0a58 100644
--- a/src/main/java/org/traccar/Context.java
+++ b/src/main/java/org/traccar/Context.java
@@ -27,7 +27,6 @@ import org.traccar.database.DataManager;
import org.traccar.database.DeviceManager;
import org.traccar.database.GroupsManager;
import org.traccar.database.IdentityManager;
-import org.traccar.database.MailManager;
import org.traccar.database.NotificationManager;
import org.traccar.database.PermissionsManager;
import org.traccar.database.UsersManager;
@@ -80,12 +79,6 @@ public final class Context {
return dataManager;
}
- private static MailManager mailManager;
-
- public static MailManager getMailManager() {
- return mailManager;
- }
-
private static UsersManager usersManager;
public static UsersManager getUsersManager() {
@@ -178,8 +171,6 @@ public final class Context {
dataManager = new DataManager(config);
}
- mailManager = new MailManager();
-
if (dataManager != null) {
usersManager = new UsersManager(dataManager);
groupsManager = new GroupsManager(dataManager);
diff --git a/src/main/java/org/traccar/api/resource/PasswordResource.java b/src/main/java/org/traccar/api/resource/PasswordResource.java
index 91d994153..7df25c264 100644
--- a/src/main/java/org/traccar/api/resource/PasswordResource.java
+++ b/src/main/java/org/traccar/api/resource/PasswordResource.java
@@ -18,12 +18,14 @@ package org.traccar.api.resource;
import org.apache.velocity.VelocityContext;
import org.traccar.Context;
import org.traccar.api.BaseResource;
+import org.traccar.database.MailManager;
import org.traccar.model.User;
import org.traccar.notification.NotificationMessage;
import org.traccar.notification.TextTemplateFormatter;
import org.traccar.storage.StorageException;
import javax.annotation.security.PermitAll;
+import javax.inject.Inject;
import javax.mail.MessagingException;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
@@ -41,6 +43,9 @@ public class PasswordResource extends BaseResource {
private static final String PASSWORD_RESET_TOKEN = "passwordToken";
+ @Inject
+ private MailManager mailManager;
+
@Path("reset")
@PermitAll
@POST
@@ -56,7 +61,7 @@ public class PasswordResource extends BaseResource {
velocityContext.put("token", token);
NotificationMessage fullMessage =
TextTemplateFormatter.formatMessage(velocityContext, "passwordReset", "full");
- Context.getMailManager().sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
+ mailManager.sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
break;
}
}
diff --git a/src/main/java/org/traccar/api/resource/ReportResource.java b/src/main/java/org/traccar/api/resource/ReportResource.java
index 3c1b8f715..3955f1d20 100644
--- a/src/main/java/org/traccar/api/resource/ReportResource.java
+++ b/src/main/java/org/traccar/api/resource/ReportResource.java
@@ -38,8 +38,8 @@ import javax.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Context;
import org.traccar.api.BaseResource;
+import org.traccar.database.MailManager;
import org.traccar.helper.LogAction;
import org.traccar.model.Event;
import org.traccar.model.Position;
@@ -80,6 +80,9 @@ public class ReportResource extends BaseResource {
@Inject
private TripsReportProvider tripsReportProvider;
+ @Inject
+ private MailManager mailManager;
+
private interface ReportExecutor {
void execute(ByteArrayOutputStream stream) throws StorageException, IOException;
}
@@ -99,8 +102,7 @@ public class ReportResource extends BaseResource {
stream.toByteArray(), "application/octet-stream")));
User user = permissionsService.getUser(userId);
- Context.getMailManager().sendMessage(
- user, "Report", "The report is in the attachment.", attachment);
+ mailManager.sendMessage(user, "Report", "The report is in the attachment.", attachment);
} catch (StorageException | IOException | MessagingException e) {
LOGGER.warn("Report failed", e);
}
diff --git a/src/main/java/org/traccar/api/resource/ServerResource.java b/src/main/java/org/traccar/api/resource/ServerResource.java
index f238e8905..51a26825b 100644
--- a/src/main/java/org/traccar/api/resource/ServerResource.java
+++ b/src/main/java/org/traccar/api/resource/ServerResource.java
@@ -17,6 +17,7 @@ package org.traccar.api.resource;
import org.traccar.Context;
import org.traccar.api.BaseResource;
+import org.traccar.database.MailManager;
import org.traccar.helper.LogAction;
import org.traccar.model.Server;
import org.traccar.storage.Storage;
@@ -46,10 +47,15 @@ public class ServerResource extends BaseResource {
@Inject
private Storage storage;
+ @Inject
+ private MailManager mailManager;
+
@PermitAll
@GET
public Server get() throws StorageException {
- return storage.getObject(Server.class, new Request(new Columns.All()));
+ Server server = storage.getObject(Server.class, new Request(new Columns.All()));
+ server.setEmailEnabled(mailManager.getEmailEnabled());
+ return server;
}
@PUT
diff --git a/src/main/java/org/traccar/database/MailManager.java b/src/main/java/org/traccar/database/MailManager.java
index 21fee5ee7..54f617d5f 100644
--- a/src/main/java/org/traccar/database/MailManager.java
+++ b/src/main/java/org/traccar/database/MailManager.java
@@ -18,11 +18,12 @@ package org.traccar.database;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.traccar.Context;
import org.traccar.Main;
+import org.traccar.config.Config;
import org.traccar.model.User;
import org.traccar.notification.PropertiesProvider;
+import javax.inject.Inject;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
@@ -40,6 +41,13 @@ public final class MailManager {
private static final Logger LOGGER = LoggerFactory.getLogger(MailManager.class);
+ private final Config config;
+
+ @Inject
+ public MailManager(Config config) {
+ this.config = config;
+ }
+
private static Properties getProperties(PropertiesProvider provider) {
Properties properties = new Properties();
String host = provider.getString("mail.smtp.host");
@@ -88,7 +96,7 @@ public final class MailManager {
}
public boolean getEmailEnabled() {
- return Context.getConfig().hasKey("mail.smtp.host");
+ return config.hasKey("mail.smtp.host");
}
public void sendMessage(
@@ -99,11 +107,11 @@ public final class MailManager {
public void sendMessage(
User user, String subject, String body, MimeBodyPart attachment) throws MessagingException {
Properties properties = null;
- if (!Context.getConfig().getBoolean("mail.smtp.ignoreUserConfig")) {
+ if (!config.getBoolean("mail.smtp.ignoreUserConfig")) {
properties = getProperties(new PropertiesProvider(user));
}
if (properties == null || !properties.containsKey("mail.smtp.host")) {
- properties = getProperties(new PropertiesProvider(Context.getConfig()));
+ properties = getProperties(new PropertiesProvider(config));
}
if (!properties.containsKey("mail.smtp.host")) {
LOGGER.warn("No SMTP configuration found");
diff --git a/src/main/java/org/traccar/model/Server.java b/src/main/java/org/traccar/model/Server.java
index 7cffd7eac..c5640fb97 100644
--- a/src/main/java/org/traccar/model/Server.java
+++ b/src/main/java/org/traccar/model/Server.java
@@ -16,7 +16,6 @@
package org.traccar.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import org.traccar.Context;
import org.traccar.storage.QueryIgnore;
import org.traccar.storage.StorageName;
@@ -193,9 +192,16 @@ public class Server extends ExtendedModel implements UserRestrictions {
return getClass().getPackage().getImplementationVersion();
}
+ private boolean emailEnabled;
+
+ @QueryIgnore
+ public void setEmailEnabled(boolean emailEnabled) {
+ this.emailEnabled = emailEnabled;
+ }
+
@QueryIgnore
public Boolean getEmailEnabled() {
- return Context.getMailManager().getEmailEnabled();
+ return emailEnabled;
}
}
diff --git a/src/main/java/org/traccar/notificators/NotificatorMail.java b/src/main/java/org/traccar/notificators/NotificatorMail.java
index fd7cae7c3..fe8d69af2 100644
--- a/src/main/java/org/traccar/notificators/NotificatorMail.java
+++ b/src/main/java/org/traccar/notificators/NotificatorMail.java
@@ -16,8 +16,7 @@
*/
package org.traccar.notificators;
-import org.traccar.Context;
-import org.traccar.Main;
+import org.traccar.database.MailManager;
import org.traccar.model.Event;
import org.traccar.model.Position;
import org.traccar.model.User;
@@ -26,16 +25,26 @@ import org.traccar.notification.MessageException;
import org.traccar.notification.NotificationFormatter;
import org.traccar.session.cache.CacheManager;
+import javax.inject.Inject;
import javax.mail.MessagingException;
-public final class NotificatorMail implements Notificator {
+public class NotificatorMail implements Notificator {
+
+ private final MailManager mailManager;
+ private final CacheManager cacheManager;
+
+ @Inject
+ public NotificatorMail(MailManager mailManager, CacheManager cacheManager) {
+ this.mailManager = mailManager;
+ this.cacheManager = cacheManager;
+ }
@Override
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");
- Context.getMailManager().sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
+ cacheManager, user, event, position, "full");
+ mailManager.sendMessage(user, fullMessage.getSubject(), fullMessage.getBody());
} catch (MessagingException e) {
throw new MessageException(e);
}