[Fix] Fixed bug when removing single message

This commit is contained in:
Robert von Burg 2022-06-22 12:36:51 +02:00
parent fe4b66dead
commit 095b98c2a4
Signed by: eitch
GPG Key ID: 75DB9C85C74331F7
1 changed files with 16 additions and 5 deletions

View File

@ -105,8 +105,11 @@ public class OperationsLog extends StrolchComponent {
String realmName = message.getRealm(); String realmName = message.getRealm();
LinkedHashMap<Locator, LinkedHashSet<LogMessage>> byLocator = this.logMessagesByLocator.get(realmName); LinkedHashMap<Locator, LinkedHashSet<LogMessage>> byLocator = this.logMessagesByLocator.get(realmName);
if (byLocator != null) if (byLocator != null) {
byLocator.remove(message.getLocator()); LinkedHashSet<LogMessage> messages = byLocator.get(message.getLocator());
if (messages != null)
messages.remove(message);
}
LinkedHashSet<LogMessage> messages = this.logMessagesByRealmAndId.get(realmName); LinkedHashSet<LogMessage> messages = this.logMessagesByRealmAndId.get(realmName);
if (messages != null) { if (messages != null) {
@ -127,8 +130,13 @@ public class OperationsLog extends StrolchComponent {
messagesByRealm.forEach((realmName, messages) -> { messagesByRealm.forEach((realmName, messages) -> {
LinkedHashMap<Locator, LinkedHashSet<LogMessage>> byLocator = this.logMessagesByLocator.get(realmName); LinkedHashMap<Locator, LinkedHashSet<LogMessage>> byLocator = this.logMessagesByLocator.get(realmName);
if (byLocator != null) if (byLocator != null) {
messages.forEach(logMessage -> byLocator.remove(logMessage.getLocator())); messages.forEach(logMessage -> {
LinkedHashSet<LogMessage> tmp = byLocator.get(logMessage.getLocator());
if (tmp != null)
tmp.remove(logMessage);
});
}
LinkedHashSet<LogMessage> byRealm = this.logMessagesByRealmAndId.get(realmName); LinkedHashSet<LogMessage> byRealm = this.logMessagesByRealmAndId.get(realmName);
if (byRealm != null) { if (byRealm != null) {
@ -249,7 +257,10 @@ public class OperationsLog extends StrolchComponent {
LinkedHashMap<Locator, LinkedHashSet<LogMessage>> logMessages = this.logMessagesByLocator.get(realm); LinkedHashMap<Locator, LinkedHashSet<LogMessage>> logMessages = this.logMessagesByLocator.get(realm);
if (logMessages == null) if (logMessages == null)
return Optional.empty(); return Optional.empty();
return Optional.ofNullable(logMessages.get(locator)); LinkedHashSet<LogMessage> result = logMessages.get(locator);
if (result == null)
return Optional.empty();
return Optional.of(new HashSet<>(result));
} }
public synchronized List<LogMessage> getMessages(String realm) { public synchronized List<LogMessage> getMessages(String realm) {