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:
@@ -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")
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user