working on messagesystem, password reset form

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-07-08 00:06:35 +02:00
parent 9d83008a62
commit 3e91565fb6
15 changed files with 337 additions and 67 deletions
@@ -1,53 +0,0 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.message.model;
import de.srsoftware.umbrella.user.model.User;
import java.util.*;
/**
* This maps recipient email addresses to the pending messages of that recipient
*/
public class MailQueue extends ArrayList<Envelope>{
private record Receiver(User user, Message message){}
private final HashMap<Receiver,List<Exception>> exceptions = new HashMap<>();
public interface Listener{
public void messagesAdded();
public void setQueue(MailQueue queue);
}
private final Set<Listener> listeners = new HashSet<>();
public void addListener(Listener listener) {
listeners.add(listener);
listener.setQueue(this);
}
public void commit() {
listeners.forEach(Listener::messagesAdded);
}
public List<Envelope> envelopesFor(User recv) {
return stream().filter(env -> env.isFor(recv)).toList();
}
public void failedAt(User receiver, CombinedMessage combined, Exception ex) {
for (var message : combined.messages()) exceptions.computeIfAbsent(new Receiver(receiver,message), k -> new ArrayList<>()).add(ex);
}
/**
* return the email addresses of the recipients of all messages in the queue
*
* @return a list of email addresses
*/
public List<User> receivers() {
return stream().map(Envelope::receivers)
.flatMap(Set::stream)
.filter(Objects::nonNull)
.distinct()
.toList();
}
}
@@ -0,0 +1,6 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.message.model;
public interface PostBox {
public void send(Envelope envelope);
}