first try to generate messages from events

todo:

- add subject function to Event interface
- implement interface on derived event classes
- make events translatable

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-13 00:23:46 +01:00
parent 674a80ef09
commit ce5bff6a17
8 changed files with 63 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
description = "Umbrella : Message subsystem"
dependencies{
implementation(project(":bus"))
implementation(project(":core"))
implementation("com.sun.mail:jakarta.mail:2.0.1")
implementation("org.bitbucket.b_c:jose4j:0.9.6")

View File

@@ -6,7 +6,9 @@ import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingConfigException;
import static de.srsoftware.umbrella.message.Constants.*;
import static de.srsoftware.umbrella.messagebus.MessageBus.messageBus;
import static java.lang.System.Logger.Level.*;
import static java.text.MessageFormat.format;
import de.srsoftware.configuration.Configuration;
import de.srsoftware.umbrella.core.ModuleRegistry;
@@ -16,6 +18,8 @@ import de.srsoftware.umbrella.core.model.Envelope;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import de.srsoftware.umbrella.core.model.User;
import de.srsoftware.umbrella.message.model.CombinedMessage;
import de.srsoftware.umbrella.messagebus.EventListener;
import de.srsoftware.umbrella.messagebus.events.Event;
import jakarta.activation.DataHandler;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
@@ -29,7 +33,7 @@ import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.BiFunction;
public class MessageSystem implements PostBox {
public class MessageSystem implements PostBox, EventListener {
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());
private final Timer timer = new Timer();
@@ -59,9 +63,6 @@ public class MessageSystem implements PostBox {
timer.schedule(this,date.getTime());
LOG.log(INFO,"Scheduled {0} at {1}",getClass().getSimpleName(),date.getTime());
}
}
private final String from,host,user,pass;
private final int port;
@@ -88,8 +89,26 @@ public class MessageSystem implements PostBox {
new SubmissionTask(16).schedule();
new SubmissionTask(18).schedule();
new SubmissionTask(20).schedule();
messageBus().register(this);
}
@Override
public void onEvent(Event<?> event) {
for (var user : event.audience()){
if (!"s.richter@srsoftware.de".equals(user.email().toString())) continue;
var verb = switch (event.eventType()){
case UPDATE -> "updated";
case CREATE -> "created";
case DELETE -> "deleted";
};
var title = format("{0} {1} {2} {3}",event.initiator().name(),verb,event.module(), event.payload());
var message = new de.srsoftware.umbrella.core.model.Message(event.initiator(),title,event.describe(),null,null);
var envelope = new Envelope(message,user);
send(envelope);
}
}
@Override
public void send(Envelope envelope) {
queue.add(envelope);
@@ -187,8 +206,6 @@ public class MessageSystem implements PostBox {
}
}
LOG.log(TRACE, "Message to {0} is ready…", receiver);
Transport.send(msg,user,pass);
LOG.log(DEBUG, "Sent message to {0}.", receiver);