This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push: new 0bc3ee08ec [SYNCOPE-1715] Invoking AuditService#delete to remove events 0bc3ee08ec is described below commit 0bc3ee08eca1217f546a2d00ab949e6840ec1071 Author: Francesco Chicchiriccò <ilgro...@apache.org> AuthorDate: Fri Dec 16 10:40:00 2022 +0100 [SYNCOPE-1715] Invoking AuditService#delete to remove events --- .../apache/syncope/client/console/pages/Audit.java | 22 ++++++++++++++-- .../client/console/rest/AuditRestClient.java | 30 +++++++--------------- .../org/apache/syncope/core/logic/AuditLogic.java | 10 +++----- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java index aa2048b563..f42968e23b 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java @@ -19,6 +19,7 @@ package org.apache.syncope.client.console.pages; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; @@ -33,6 +34,7 @@ import org.apache.syncope.common.lib.types.IdRepoEntitlement; import org.apache.wicket.event.IEvent; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.util.ListModel; import org.apache.wicket.request.mapper.parameter.PageParameters; @@ -40,18 +42,34 @@ public class Audit extends BasePage { private static final long serialVersionUID = -1100228004207271271L; + private final LoadableDetachableModel<List<EventCategory>> eventCategories = + new LoadableDetachableModel<List<EventCategory>>() { + + private static final long serialVersionUID = 4659376149825914247L; + + @Override + protected List<EventCategory> load() { + return AuditRestClient.listEvents(); + } + }; + public Audit(final PageParameters parameters) { super(parameters); body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class)); List<String> events = AuditRestClient.list().stream(). + filter(audit -> eventCategories.getObject().stream(). + anyMatch(c -> audit.getType() == c.getType() + && Objects.equals(audit.getCategory(), c.getCategory()) + && Objects.equals(audit.getSubcategory(), c.getSubcategory()))). map(audit -> AuditLoggerName.buildEvent( audit.getType(), audit.getCategory(), audit.getSubcategory(), audit.getEvent(), audit.getResult())). + sorted(). collect(Collectors.toList()); WebMarkupContainer content = new WebMarkupContainer("content"); @@ -62,7 +80,7 @@ public class Audit extends BasePage { form.add(new EventCategoryPanel( "auditPanel", - AuditRestClient.listEvents(), + eventCategories.getObject(), new ListModel<>(events)) { private static final long serialVersionUID = 6113164334533550277L; @@ -80,7 +98,7 @@ public class Audit extends BasePage { @Override public void onEventAction(final IEvent<?> event) { if (event.getPayload() instanceof SelectedEventsPanel.EventSelectionChanged) { - final SelectedEventsPanel.EventSelectionChanged eventSelectionChanged = + SelectedEventsPanel.EventSelectionChanged eventSelectionChanged = (SelectedEventsPanel.EventSelectionChanged) event.getPayload(); eventSelectionChanged.getToBeRemoved().forEach(toBeRemoved -> { diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java index d47efda1d8..45477ade82 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java @@ -18,18 +18,16 @@ */ package org.apache.syncope.client.console.rest; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Objects; -import java.util.Set; import java.util.stream.Collectors; +import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.audit.AuditEntry; import org.apache.syncope.common.lib.audit.EventCategory; import org.apache.syncope.common.lib.to.AuditConfTO; import org.apache.syncope.common.lib.types.AuditElements; import org.apache.syncope.common.lib.types.AuditLoggerName; +import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.rest.api.beans.AuditQuery; import org.apache.syncope.common.rest.api.service.AuditService; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; @@ -52,19 +50,6 @@ public class AuditRestClient extends BaseRestClient { collect(Collectors.toList()); } - public static Map<String, Set<AuditLoggerName>> listAuditsByCategory() { - Map<String, Set<AuditLoggerName>> result = new HashMap<>(); - list().forEach(audit -> { - if (!result.containsKey(audit.getCategory())) { - result.put(audit.getCategory(), new HashSet<>()); - } - - result.get(audit.getCategory()).add(audit); - }); - - return result; - } - public static void enableAudit(final AuditLoggerName auditLoggerName) { AuditConfTO audit = new AuditConfTO(); audit.setKey(auditLoggerName.toAuditKey()); @@ -73,10 +58,13 @@ public class AuditRestClient extends BaseRestClient { } public static void disableAudit(final AuditLoggerName auditLoggerName) { - AuditConfTO audit = new AuditConfTO(); - audit.setKey(auditLoggerName.toAuditKey()); - audit.setActive(false); - getService(AuditService.class).set(audit); + try { + getService(AuditService.class).delete(auditLoggerName.toAuditKey()); + } catch (SyncopeClientException e) { + if (e.getType() != ClientExceptionType.NotFound) { + LOG.error("Unexpected error when deleting {}", auditLoggerName.toAuditKey(), e); + } + } } public static List<EventCategory> listEvents() { diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java index 98794a55bc..40858082c8 100644 --- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java +++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java @@ -120,16 +120,14 @@ public class AuditLogic extends AbstractTransactionalLogic<AuditConfTO> { public void set(final AuditConfTO auditTO) { AuditConf audit = Optional.ofNullable(auditConfDAO.find(auditTO.getKey())). orElseGet(() -> { - AuditConf a = entityFactory.newEntity(AuditConf.class); - a.setKey(auditTO.getKey()); - return a; + AuditConf ac = entityFactory.newEntity(AuditConf.class); + ac.setKey(auditTO.getKey()); + return ac; }); audit.setActive(auditTO.isActive()); audit = auditConfDAO.save(audit); - if (audit.isActive()) { - setLevel(audit.getKey(), Level.OFF); - } + setLevel(audit.getKey(), audit.isActive() ? Level.DEBUG : Level.OFF); } @PreAuthorize("hasRole('" + IdRepoEntitlement.AUDIT_DELETE + "')")