You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/11/27 16:37:46 UTC
[syncope] branch 2_1_X updated: [SYNCOPE-1511] Small adjustments
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new 9805477 [SYNCOPE-1511] Small adjustments
9805477 is described below
commit 9805477da73975a4b4b3eefbafae8519c759adb9
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Wed Nov 27 17:37:20 2019 +0100
[SYNCOPE-1511] Small adjustments
---
.../org/apache/syncope/core/logic/AuditLogic.java | 32 ++---
.../syncope/core/logic/init/LoggerLoader.java | 3 +-
.../syncope/core/persistence/api/dao/AuditDAO.java | 7 +-
.../src/test/resources/domains/MasterContent.xml | 59 +++++++-
.../core/persistence/jpa/dao/JPAAuditDAO.java | 45 +++----
.../src/test/resources/domains/MasterContent.xml | 113 ++++++++--------
.../java/data/AuditDataBinderImpl.java | 39 ++++--
.../java/job/report/AuditReportlet.java | 5 +-
.../core/rest/cxf/service/AbstractAnyService.java | 150 ++++++++++-----------
.../core/rest/cxf/service/AuditServiceImpl.java | 15 +--
.../org/apache/syncope/fit/core/AuditITCase.java | 94 +++++--------
11 files changed, 298 insertions(+), 264 deletions(-)
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
index 30ef3a2..eec44cb 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
@@ -18,6 +18,9 @@
*/
package org.apache.syncope.core.logic;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.common.lib.to.AuditEntryTO;
import org.apache.syncope.common.lib.types.StandardEntitlement;
@@ -30,37 +33,34 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.stream.Collectors;
-
@Component
public class AuditLogic extends AbstractTransactionalLogic<AuditEntryTO> {
+
@Autowired
private AuditDataBinder binder;
@Autowired
private AuditDAO auditDAO;
- @Override
- protected AuditEntryTO resolveReference(final Method method, final Object... args)
- throws UnresolvedReferenceException {
- throw new UnresolvedReferenceException();
- }
-
@PreAuthorize("hasRole('" + StandardEntitlement.AUDIT_SEARCH + "')")
@Transactional(readOnly = true)
public Pair<Integer, List<AuditEntryTO>> search(
- final String key,
- final int page,
- final int size,
- final List<OrderByClause> orderByClauses) {
+ final String key,
+ final int page,
+ final int size,
+ final List<OrderByClause> orderByClauses) {
Integer count = auditDAO.count(key);
List<AuditEntry> matching = auditDAO.findByEntityKey(key, page, size, orderByClauses);
List<AuditEntryTO> results = matching.stream().
- map(audit -> binder.returnAuditTO(binder.getAuditTO(audit))).
- collect(Collectors.toList());
+ map(audit -> binder.returnAuditTO(binder.getAuditTO(audit))).
+ collect(Collectors.toList());
return Pair.of(count, results);
}
+
+ @Override
+ protected AuditEntryTO resolveReference(final Method method, final Object... args)
+ throws UnresolvedReferenceException {
+ throw new UnresolvedReferenceException();
+ }
}
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
index f599ce0..0f864b5 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
@@ -42,6 +42,7 @@ import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.apache.syncope.core.persistence.api.DomainsHolder;
import org.apache.syncope.core.persistence.api.ImplementationLookup;
import org.apache.syncope.core.persistence.api.SyncopeLoader;
+import org.apache.syncope.core.persistence.api.dao.AuditDAO;
import org.apache.syncope.core.spring.ApplicationContextProvider;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
@@ -101,7 +102,7 @@ public class LoggerLoader implements SyncopeLoader {
setIgnoreExceptions(false).
setConnectionSource(new DataSourceConnectionSource(key, value)).
setBufferSize(0).
- setTableName("SYNCOPEAUDIT").
+ setTableName(AuditDAO.TABLE_NAME).
setColumnConfigs(columnConfigs).
setColumnMappings(columnMappings).
build();
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AuditDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AuditDAO.java
index 19cf75a..0d1692d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AuditDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AuditDAO.java
@@ -18,12 +18,15 @@
*/
package org.apache.syncope.core.persistence.api.dao;
+import java.util.List;
+
import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
import org.apache.syncope.core.persistence.api.entity.AuditEntry;
-import java.util.List;
+public interface AuditDAO {
+
+ String TABLE_NAME = "SYNCOPEAUDIT";
-public interface AuditDAO<T extends AuditEntry> {
List<AuditEntry> findByEntityKey(String key, int page, int size, List<OrderByClause> orderByClauses);
Integer count(String key);
diff --git a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
index 1515899..d94cc30 100644
--- a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml
@@ -2406,7 +2406,62 @@ $$ }
body='{"@class":"org.apache.syncope.common.lib.report.ReconciliationReportletConf","name":"dashboardReconciliationReportlet","userMatchingCond":null,"groupMatchingCond":null,"anyObjectMatchingCond":null,"features":["key","username","groupName"]}'/>
<ReportReportlet report_id="c3520ad9-179f-49e7-b315-d684d216dd97" implementation_id="ReconciliationReportletConf"/>
- <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
-
<SecurityQuestion id="887028ea-66fc-41e7-b397-620d7ea6dfbb" content="What's your mother's maiden name?"/>
+
+ <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[own]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provisionMembers]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[read]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[search]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
</dataset>
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditDAO.java
index 919217a..ccf52e9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditDAO.java
@@ -16,38 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.syncope.core.persistence.jpa.dao;
+import javax.sql.DataSource;
+import java.sql.Timestamp;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
import org.apache.syncope.core.persistence.api.DomainsHolder;
import org.apache.syncope.core.persistence.api.dao.AuditDAO;
import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
import org.apache.syncope.core.persistence.api.entity.AuditEntry;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractEntity;
import org.apache.syncope.core.provisioning.api.AuditEntryImpl;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
-import javax.sql.DataSource;
-
-import java.sql.Timestamp;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
@Transactional(rollbackFor = Throwable.class)
@Repository
-public class JPAAuditDAO extends AbstractDAO implements AuditDAO<AuditEntry> {
- private static final Logger LOG = LoggerFactory.getLogger(JPAAuditDAO.class);
-
- private static final String TABLE_NAME = "SYNCOPEAUDIT";
+public class JPAAuditDAO extends AbstractDAO<AbstractEntity> implements AuditDAO {
@Autowired
private DomainsHolder domainsHolder;
@@ -57,16 +50,18 @@ public class JPAAuditDAO extends AbstractDAO implements AuditDAO<AuditEntry> {
}
@Override
- public List<AuditEntry> findByEntityKey(final String key, final int page,
- final int itemsPerPage,
- final List<OrderByClause> orderByClauses) {
+ public List<AuditEntry> findByEntityKey(
+ final String key,
+ final int page,
+ final int itemsPerPage,
+ final List<OrderByClause> orderByClauses) {
+
try {
- String queryString = "SELECT * FROM " + TABLE_NAME + buildWhereClauseForEntityKey(key);
+ String queryString = "SELECT * FROM " + AuditDAO.TABLE_NAME + buildWhereClauseForEntityKey(key);
if (!orderByClauses.isEmpty()) {
- queryString += " ORDER BY " + orderByClauses.
- stream().
- map(orderBy -> orderBy.getField() + ' ' + orderBy.getDirection().name()).
- collect(Collectors.joining(","));
+ queryString += " ORDER BY " + orderByClauses.stream().
+ map(orderBy -> orderBy.getField() + ' ' + orderBy.getDirection().name()).
+ collect(Collectors.joining(","));
}
JdbcTemplate template = getJdbcTemplate();
template.setMaxRows(itemsPerPage);
@@ -89,7 +84,7 @@ public class JPAAuditDAO extends AbstractDAO implements AuditDAO<AuditEntry> {
@Override
public Integer count(final String key) {
try {
- String queryString = "SELECT COUNT(0) FROM " + TABLE_NAME + buildWhereClauseForEntityKey(key);
+ String queryString = "SELECT COUNT(0) FROM " + AuditDAO.TABLE_NAME + buildWhereClauseForEntityKey(key);
return Objects.requireNonNull(getJdbcTemplate().queryForObject(queryString, Integer.class));
} catch (Exception e) {
LOG.error("Unable to execute count query for entity " + key, e);
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 078f57e..76000f1 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -2558,63 +2558,62 @@ $$ }
body='{"@class":"org.apache.syncope.common.lib.report.ReconciliationReportletConf","name":"dashboardReconciliationReportlet","userMatchingCond":null,"groupMatchingCond":null,"anyObjectMatchingCond":null,"features":["key","username","groupName"]}'/>
<ReportReportlet report_id="c3520ad9-179f-49e7-b315-d684d216dd97" implementation_id="ReconciliationReportletConf"/>
- <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
-
<SecurityQuestion id="887028ea-66fc-41e7-b397-620d7ea6dfbb" content="What's your mother's maiden name?"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[FAILURE]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[SUCCESS]" LOGLEVEL="DEBUG"/>
-
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[assign]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[create]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[delete]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[deprovision]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[link]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[own]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provisionMembers]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provision]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[read]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[search]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unassign]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unlink]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[GroupLogic]:[]:[update]:[SUCCESS]" LOGLEVEL="DEBUG"/>
- <SYNCOPELOGGER LOGTYPE="AUDIT" LOGNAME="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" LOGLEVEL="DEBUG"/>
+ <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[confirmPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[mustChangePassword]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[read]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[requestPasswordReset]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[search]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfCreate]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfDelete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfRead]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfStatus]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[selfUpdate]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[status]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[FAILURE]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[UserLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
+
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[assign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[create]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[delete]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[deprovision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[link]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[own]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provisionMembers]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[provision]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[read]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[search]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unassign]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[unlink]:[SUCCESS]" logLevel="DEBUG"/>
+ <SyncopeLogger logType="AUDIT" logName="syncope.audit.[LOGIC]:[GroupLogic]:[]:[update]:[SUCCESS]" logLevel="DEBUG"/>
</dataset>
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
index c268270..6a34094 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
@@ -1,5 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.syncope.core.provisioning.java.data;
+import java.util.Arrays;
+import java.util.stream.Collectors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apache.syncope.common.lib.to.AuditEntryTO;
@@ -7,9 +27,6 @@ import org.apache.syncope.core.persistence.api.entity.AuditEntry;
import org.apache.syncope.core.provisioning.api.data.AuditDataBinder;
import org.springframework.stereotype.Component;
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
@Component
public class AuditDataBinderImpl implements AuditDataBinder {
@@ -22,7 +39,6 @@ public class AuditDataBinderImpl implements AuditDataBinder {
auditTO.setThrowable(auditEntry.getThrowable());
auditTO.setLoggerName(auditEntry.getLogger().toLoggerName());
-
auditTO.setSubCategory(auditEntry.getLogger().getSubcategory());
auditTO.setEvent(auditEntry.getLogger().getEvent());
@@ -31,22 +47,19 @@ public class AuditDataBinderImpl implements AuditDataBinder {
}
if (auditEntry.getBefore() != null) {
- String before = ToStringBuilder.reflectionToString(
- auditEntry.getBefore(), ToStringStyle.JSON_STYLE);
- auditTO.setBefore(before);
+ auditTO.setBefore(ToStringBuilder.reflectionToString(auditEntry.getBefore(), ToStringStyle.JSON_STYLE));
}
if (auditEntry.getInput() != null) {
- auditTO.getInputs().addAll(Arrays.stream(auditEntry.getInput())
- .map(input -> ToStringBuilder.reflectionToString(input, ToStringStyle.JSON_STYLE))
- .collect(Collectors.toList()));
+ auditTO.getInputs().addAll(Arrays.stream(auditEntry.getInput()).
+ map(input -> ToStringBuilder.reflectionToString(input, ToStringStyle.JSON_STYLE)).
+ collect(Collectors.toList()));
}
if (auditEntry.getOutput() != null) {
- auditTO.setOutput(ToStringBuilder.reflectionToString(
- auditEntry.getOutput(), ToStringStyle.JSON_STYLE));
+ auditTO.setOutput(ToStringBuilder.reflectionToString(auditEntry.getOutput(), ToStringStyle.JSON_STYLE));
}
-
+
return auditTO;
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
index c7af73d..3d9ddcb 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
@@ -32,6 +32,7 @@ import org.apache.syncope.core.provisioning.api.AuditEntryImpl;
import org.apache.syncope.core.spring.security.AuthContextUtils;
import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.core.persistence.api.DomainsHolder;
+import org.apache.syncope.core.persistence.api.dao.AuditDAO;
import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -50,12 +51,12 @@ public class AuditReportlet extends AbstractReportlet {
private DataSource datasource;
private void doExtractConf(final ContentHandler handler, final AtomicReference<String> status) throws SAXException {
- status.set("Fetching " + conf.getSize() + " rows from the SYNCOPEAUDIT table");
+ status.set("Fetching " + conf.getSize() + " rows from the " + AuditDAO.TABLE_NAME + " table");
JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
jdbcTemplate.setMaxRows(conf.getSize());
List<Map<String, Object>> rows = jdbcTemplate.
- queryForList("SELECT * FROM SYNCOPEAUDIT ORDER BY EVENT_DATE DESC");
+ queryForList("SELECT * FROM " + AuditDAO.TABLE_NAME + " ORDER BY EVENT_DATE DESC");
handler.startElement("", "", "events", null);
AttributesImpl atts = new AttributesImpl();
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
index 84f0213..2d8c3b4 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
@@ -56,8 +56,8 @@ import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
import org.apache.syncope.core.spring.security.SecureRandomUtils;
public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
- extends AbstractServiceImpl
- implements AnyService<TO> {
+ extends AbstractServiceImpl
+ implements AnyService<TO> {
protected abstract AnyDAO<?> getAnyDAO();
@@ -122,20 +122,20 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
// if an assignable query is provided in the FIQL string, start anyway from root realm
boolean isAssignableCond = StringUtils.isBlank(anyQuery.getFiql())
- ? false
- : -1 != anyQuery.getFiql().indexOf(SpecialAttr.ASSIGNABLE.toString());
+ ? false
+ : -1 != anyQuery.getFiql().indexOf(SpecialAttr.ASSIGNABLE.toString());
SearchCond searchCond = StringUtils.isBlank(anyQuery.getFiql())
- ? null
- : getSearchCond(anyQuery.getFiql(), realm);
+ ? null
+ : getSearchCond(anyQuery.getFiql(), realm);
Pair<Integer, List<TO>> result = getAnyLogic().search(
- searchCond,
- anyQuery.getPage(),
- anyQuery.getSize(),
- getOrderByClauses(anyQuery.getOrderBy()),
- isAssignableCond ? SyncopeConstants.ROOT_REALM : realm,
- anyQuery.getDetails());
+ searchCond,
+ anyQuery.getPage(),
+ anyQuery.getSize(),
+ getOrderByClauses(anyQuery.getOrderBy()),
+ isAssignableCond ? SyncopeConstants.ROOT_REALM : realm,
+ anyQuery.getDetails());
return buildPagedResult(result.getRight(), anyQuery.getPage(), anyQuery.getSize(), result.getLeft());
}
@@ -159,7 +159,7 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
}
private void addUpdateOrReplaceAttr(
- final String key, final SchemaType schemaType, final AttrTO attrTO, final PatchOperation operation) {
+ final String key, final SchemaType schemaType, final AttrTO attrTO, final PatchOperation operation) {
if (attrTO.getSchema() == null) {
throw new NotFoundException("Must specify schema");
@@ -193,10 +193,10 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
@Override
public void delete(final String key, final SchemaType schemaType, final String schema) {
addUpdateOrReplaceAttr(
- getActualKey(getAnyDAO(), key),
- schemaType,
- new AttrTO.Builder().schema(schema).build(),
- PatchOperation.DELETE);
+ getActualKey(getAnyDAO(), key),
+ schemaType,
+ new AttrTO.Builder().schema(schema).build(),
+ PatchOperation.DELETE);
}
@Override
@@ -242,13 +242,13 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(resource));
item.setStatus(updated.getEntity().getResources().contains(resource)
- ? Response.Status.BAD_REQUEST.getStatusCode()
- : Response.Status.OK.getStatusCode());
+ ? Response.Status.BAD_REQUEST.getStatusCode()
+ : Response.Status.OK.getStatusCode());
if (getPreference() == Preference.RETURN_NO_CONTENT) {
item.getHeaders().put(
- RESTHeaders.PREFERENCE_APPLIED,
- Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
+ RESTHeaders.PREFERENCE_APPLIED,
+ Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
} else {
item.setContent(POJOHelper.serialize(updated.getEntity()));
}
@@ -257,34 +257,34 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
}).collect(Collectors.toList());
} else {
batchResponseItems = updated.getPropagationStatuses().stream().
- map(status -> {
- BatchResponseItem item = new BatchResponseItem();
+ map(status -> {
+ BatchResponseItem item = new BatchResponseItem();
- item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(status.getResource()));
+ item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(status.getResource()));
- item.setStatus(status.getStatus().getHttpStatus());
+ item.setStatus(status.getStatus().getHttpStatus());
- if (status.getFailureReason() != null) {
- item.getHeaders().put(RESTHeaders.ERROR_INFO, Arrays.asList(status.getFailureReason()));
- }
+ if (status.getFailureReason() != null) {
+ item.getHeaders().put(RESTHeaders.ERROR_INFO, Arrays.asList(status.getFailureReason()));
+ }
- if (getPreference() == Preference.RETURN_NO_CONTENT) {
- item.getHeaders().put(
- RESTHeaders.PREFERENCE_APPLIED,
- Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
- } else {
- item.setContent(POJOHelper.serialize(updated.getEntity()));
- }
+ if (getPreference() == Preference.RETURN_NO_CONTENT) {
+ item.getHeaders().put(
+ RESTHeaders.PREFERENCE_APPLIED,
+ Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
+ } else {
+ item.setContent(POJOHelper.serialize(updated.getEntity()));
+ }
- return item;
- }).collect(Collectors.toList());
+ return item;
+ }).collect(Collectors.toList());
}
String boundary = "deassociate_" + SecureRandomUtils.generateRandomUUID().toString();
return Response.ok(BatchPayloadGenerator.generate(
- batchResponseItems, SyncopeConstants.DOUBLE_DASH + boundary)).
- type(RESTHeaders.multipartMixedWith(boundary)).
- build();
+ batchResponseItems, SyncopeConstants.DOUBLE_DASH + boundary)).
+ type(RESTHeaders.multipartMixedWith(boundary)).
+ build();
}
@Override
@@ -297,26 +297,26 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
case LINK:
updated = new ProvisioningResult<>();
updated.setEntity(getAnyLogic().link(
- patch.getKey(),
- patch.getResources()));
+ patch.getKey(),
+ patch.getResources()));
break;
case ASSIGN:
updated = getAnyLogic().assign(
- patch.getKey(),
- patch.getResources(),
- patch.getValue() != null,
- patch.getValue(),
- isNullPriorityAsync());
+ patch.getKey(),
+ patch.getResources(),
+ patch.getValue() != null,
+ patch.getValue(),
+ isNullPriorityAsync());
break;
case PROVISION:
updated = getAnyLogic().provision(
- patch.getKey(),
- patch.getResources(),
- patch.getValue() != null,
- patch.getValue(),
- isNullPriorityAsync());
+ patch.getKey(),
+ patch.getResources(),
+ patch.getValue() != null,
+ patch.getValue(),
+ isNullPriorityAsync());
break;
default:
@@ -331,13 +331,13 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(resource));
item.setStatus(updated.getEntity().getResources().contains(resource)
- ? Response.Status.OK.getStatusCode()
- : Response.Status.BAD_REQUEST.getStatusCode());
+ ? Response.Status.OK.getStatusCode()
+ : Response.Status.BAD_REQUEST.getStatusCode());
if (getPreference() == Preference.RETURN_NO_CONTENT) {
item.getHeaders().put(
- RESTHeaders.PREFERENCE_APPLIED,
- Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
+ RESTHeaders.PREFERENCE_APPLIED,
+ Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
} else {
item.setContent(POJOHelper.serialize(updated.getEntity()));
}
@@ -346,33 +346,33 @@ public abstract class AbstractAnyService<TO extends AnyTO, P extends AnyPatch>
}).collect(Collectors.toList());
} else {
batchResponseItems = updated.getPropagationStatuses().stream().
- map(status -> {
- BatchResponseItem item = new BatchResponseItem();
+ map(status -> {
+ BatchResponseItem item = new BatchResponseItem();
- item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(status.getResource()));
+ item.getHeaders().put(RESTHeaders.RESOURCE_KEY, Arrays.asList(status.getResource()));
- item.setStatus(status.getStatus().getHttpStatus());
+ item.setStatus(status.getStatus().getHttpStatus());
- if (status.getFailureReason() != null) {
- item.getHeaders().put(RESTHeaders.ERROR_INFO, Arrays.asList(status.getFailureReason()));
- }
+ if (status.getFailureReason() != null) {
+ item.getHeaders().put(RESTHeaders.ERROR_INFO, Arrays.asList(status.getFailureReason()));
+ }
- if (getPreference() == Preference.RETURN_NO_CONTENT) {
- item.getHeaders().put(
- RESTHeaders.PREFERENCE_APPLIED,
- Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
- } else {
- item.setContent(POJOHelper.serialize(updated.getEntity()));
- }
+ if (getPreference() == Preference.RETURN_NO_CONTENT) {
+ item.getHeaders().put(
+ RESTHeaders.PREFERENCE_APPLIED,
+ Arrays.asList(Preference.RETURN_NO_CONTENT.toString()));
+ } else {
+ item.setContent(POJOHelper.serialize(updated.getEntity()));
+ }
- return item;
- }).collect(Collectors.toList());
+ return item;
+ }).collect(Collectors.toList());
}
String boundary = "associate_" + SecureRandomUtils.generateRandomUUID().toString();
return Response.ok(BatchPayloadGenerator.generate(
- batchResponseItems, SyncopeConstants.DOUBLE_DASH + boundary)).
- type(RESTHeaders.multipartMixedWith(boundary)).
- build();
+ batchResponseItems, SyncopeConstants.DOUBLE_DASH + boundary)).
+ type(RESTHeaders.multipartMixedWith(boundary)).
+ build();
}
}
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuditServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuditServiceImpl.java
index e13827a..df1c978 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuditServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuditServiceImpl.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.rest.cxf.service;
+import java.util.List;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.syncope.common.lib.to.AuditEntryTO;
import org.apache.syncope.common.lib.to.PagedResult;
@@ -27,22 +28,20 @@ import org.apache.syncope.core.logic.AuditLogic;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.List;
-
@Service
public class AuditServiceImpl extends AbstractServiceImpl implements AuditService {
+
@Autowired
private AuditLogic logic;
@Override
public PagedResult<AuditEntryTO> search(final AuditQuery auditQuery) {
Pair<Integer, List<AuditEntryTO>> result = logic.search(
- auditQuery.getKey(),
- auditQuery.getPage(),
- auditQuery.getSize(),
- getOrderByClauses(auditQuery.getOrderBy())
- );
+ auditQuery.getKey(),
+ auditQuery.getPage(),
+ auditQuery.getSize(),
+ getOrderByClauses(auditQuery.getOrderBy()));
+
return buildPagedResult(result.getRight(), auditQuery.getPage(), auditQuery.getSize(), result.getLeft());
}
-
}
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
index dfcbebc..59cc115 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
@@ -18,91 +18,59 @@
*/
package org.apache.syncope.fit.core;
-import org.apache.syncope.common.lib.SyncopeConstants;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.util.Collections;
+import java.util.List;
import org.apache.syncope.common.lib.to.AuditEntryTO;
import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.syncope.common.rest.api.beans.AuditQuery;
import org.apache.syncope.fit.AbstractITCase;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.util.List;
+public class AuditITCase extends AbstractITCase {
-import static org.junit.jupiter.api.Assertions.*;
+ private AuditEntryTO query(final String key, final int maxWaitSeconds) {
+ int i = 0;
+ List<AuditEntryTO> results = Collections.emptyList();
+ do {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
-public class AuditITCase extends AbstractITCase {
- private static final String USER_KEY = getUUIDString();
- private static final String GROUP_KEY = getUUIDString();
+ results = auditService.search(new AuditQuery.Builder().
+ key(key).orderBy("event_date desc").page(1).size(1).build()).getResult();
- private static GroupTO getSampleGroupTO(final String name) {
- GroupTO groupTO = new GroupTO();
- groupTO.setRealm(SyncopeConstants.ROOT_REALM);
- groupTO.setName(name + getUUIDString());
- groupTO.setKey(GROUP_KEY);
- return groupTO;
- }
+ i++;
+ } while (results.isEmpty() && i < maxWaitSeconds);
+ if (results.isEmpty()) {
+ fail("Timeout when executing query for key " + key);
+ }
- private static UserTO getSampleUserTO(final String email) {
- UserTO userTO = new UserTO();
- userTO.setRealm(SyncopeConstants.ROOT_REALM);
- userTO.setPassword("password123");
- userTO.setUsername(email);
- userTO.setKey(USER_KEY);
- userTO.getPlainAttrs().add(attrTO("fullname", "Apache Syncope"));
- userTO.getPlainAttrs().add(attrTO("firstname", "Apache"));
- userTO.getPlainAttrs().add(attrTO("surname", "Syncope"));
- userTO.getPlainAttrs().add(attrTO("userId", email));
- userTO.getPlainAttrs().add(attrTO("email", email));
- return userTO;
+ return results.get(0);
}
@Test
public void findByUser() {
- UserTO userTO = getSampleUserTO("example@syncope.org");
- userTO.getResources().add(RESOURCE_NAME_TESTDB);
- ProvisioningResult<UserTO> result = createUser(userTO);
- assertNotNull(result);
- userTO = result.getEntity();
- userService.read(userTO.getKey());
+ UserTO userTO = createUser(UserITCase.getUniqueSampleTO("audit@syncope.org")).getEntity();
+ assertNotNull(userTO.getKey());
- PagedResult<AuditEntryTO> auditResult = auditService.search(
- new AuditQuery.Builder()
- .key(USER_KEY)
- .orderBy("event_date desc")
- .page(1)
- .size(1)
- .build());
- assertNotNull(auditResult);
- List<AuditEntryTO> results = auditResult.getResult();
- assertFalse(results.isEmpty());
- assertEquals(1, results.size());
- assertTrue(results.stream().allMatch(entry -> entry.getKey().equalsIgnoreCase(USER_KEY)));
+ AuditEntryTO entry = query(userTO.getKey(), 50);
+ assertEquals(userTO.getKey(), entry.getKey());
userService.delete(userTO.getKey());
}
@Test
public void findByGroup() {
- GroupTO groupTO = getSampleGroupTO("AuditGroup");
- ProvisioningResult<GroupTO> groupResult = createGroup(groupTO);
- assertNotNull(groupResult);
- groupTO = groupResult.getEntity();
- groupService.read(groupTO.getKey());
+ GroupTO groupTO = createGroup(GroupITCase.getBasicSampleTO("AuditGroup")).getEntity();
+ assertNotNull(groupTO.getKey());
- PagedResult<AuditEntryTO> result = auditService.search(
- new AuditQuery.Builder()
- .key(GROUP_KEY)
- .orderBy("event_date asc")
- .page(1)
- .size(1)
- .build());
- assertNotNull(result);
- List<AuditEntryTO> results = result.getResult();
- assertFalse(results.isEmpty());
- assertEquals(1, results.size());
- assertTrue(results.stream().allMatch(entry -> entry.getKey().equalsIgnoreCase(GROUP_KEY)));
+ AuditEntryTO entry = query(groupTO.getKey(), 50);
+ assertEquals(groupTO.getKey(), entry.getKey());
groupService.delete(groupTO.getKey());
}
}