You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2018/12/28 12:00:15 UTC
[syncope] branch master updated: [SYNCOPE-1422] permits to provide
custom AuditManager/NotificationManager implementation
This is an automated email from the ASF dual-hosted git repository.
fmartelli 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 f3102d9 [SYNCOPE-1422] permits to provide custom AuditManager/NotificationManager implementation
f3102d9 is described below
commit f3102d93c9a65e38d255e80cca6ba1079799e2a2
Author: fmartelli <fa...@gmail.com>
AuthorDate: Fri Dec 28 11:11:28 2018 +0100
[SYNCOPE-1422] permits to provide custom AuditManager/NotificationManager implementation
---
.../core/provisioning/api/notification/NotificationManager.java | 2 ++
.../java/{AuditManagerImpl.java => DefaultAuditManagerImpl.java} | 4 +---
.../core/provisioning/java/job/AbstractSchedTaskJobDelegate.java | 1 +
.../java/job/notification/DefaultNotificationJobDelegate.java | 2 ++
...icationManagerImpl.java => DefaultNotificationManagerImpl.java} | 7 ++++---
.../java/propagation/AbstractPropagationTaskExecutor.java | 6 +++++-
.../core/provisioning/java/pushpull/AbstractPullResultHandler.java | 4 +++-
.../provisioning/java/pushpull/DefaultRealmPullResultHandler.java | 4 +++-
core/provisioning-java/src/main/resources/provisioning.properties | 2 ++
core/provisioning-java/src/main/resources/provisioningContext.xml | 2 ++
.../provisioning-camel/src/main/resources/provisioning.properties | 2 ++
.../main/java/org/apache/syncope/core/flowable/task/Notify.java | 2 ++
fit/core-reference/src/main/resources/all/provisioning.properties | 2 ++
.../src/main/resources/mariadb/provisioning.properties | 2 ++
.../src/main/resources/mysql/provisioning.properties | 2 ++
.../src/main/resources/oracle/provisioning.properties | 2 ++
.../src/main/resources/postgres/provisioning.properties | 2 ++
fit/core-reference/src/main/resources/provisioning.properties | 2 ++
.../src/main/resources/sqlserver/provisioning.properties | 2 ++
19 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
index 548ed93..e20fa8d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
@@ -65,6 +65,7 @@ public interface NotificationManager {
/**
* Create notification tasks for each notification matching provided conditions.
*
+ * @param who user triggering the event
* @param type event category type
* @param category event category
* @param subcategory event subcategory
@@ -76,6 +77,7 @@ public interface NotificationManager {
* @return created notification tasks
*/
List<NotificationTask> createTasks(
+ String who,
AuditElements.EventCategoryType type,
String category,
String subcategory,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AuditManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManagerImpl.java
similarity index 97%
rename from core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AuditManagerImpl.java
rename to core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManagerImpl.java
index 180685f..12398a5 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/AuditManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManagerImpl.java
@@ -30,12 +30,10 @@ 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.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Transactional(readOnly = true)
-@Component
-public class AuditManagerImpl implements AuditManager {
+public class DefaultAuditManagerImpl implements AuditManager {
@Autowired
private LoggerDAO loggerDAO;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
index 91b9b2a..cf309e2 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
@@ -138,6 +138,7 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega
status.set("Done");
notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
AuditElements.EventCategoryType.TASK,
this.getClass().getSimpleName(),
null,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
index f9a09c8..f33bf1d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
@@ -199,6 +199,7 @@ public class DefaultNotificationJobDelegate implements InitializingBean, Notific
}
notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
AuditElements.EventCategoryType.TASK,
"notification",
null,
@@ -217,6 +218,7 @@ public class DefaultNotificationJobDelegate implements InitializingBean, Notific
}
notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
AuditElements.EventCategoryType.TASK,
"notification",
null,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManagerImpl.java
similarity index 99%
rename from core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
rename to core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManagerImpl.java
index 8647287..10164bd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/NotificationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManagerImpl.java
@@ -77,14 +77,12 @@ import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
import org.apache.syncope.core.spring.ImplementationManager;
-@Component
@Transactional(rollbackFor = { Throwable.class })
-public class NotificationManagerImpl implements NotificationManager {
+public class DefaultNotificationManagerImpl implements NotificationManager {
private static final Logger LOG = LoggerFactory.getLogger(NotificationManager.class);
@@ -271,6 +269,7 @@ public class NotificationManagerImpl implements NotificationManager {
@Override
public void createTasks(final AfterHandlingEvent event) {
createTasks(
+ event.getWho(),
event.getType(),
event.getCategory(),
event.getSubcategory(),
@@ -283,6 +282,7 @@ public class NotificationManagerImpl implements NotificationManager {
@Override
public List<NotificationTask> createTasks(
+ final String who,
final AuditElements.EventCategoryType type,
final String category,
final String subcategory,
@@ -347,6 +347,7 @@ public class NotificationManagerImpl implements NotificationManager {
LOG.debug("Creating notification task for event {} about {}", currentEvent, any);
final Map<String, Object> model = new HashMap<>();
+ model.put("who", who);
model.put("type", type);
model.put("category", category);
model.put("subcategory", subcategory);
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index 9587ec8..bb5f17c 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -532,7 +532,11 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
if (notificationsAvailable || auditRequested) {
ExecTO execTO = taskDataBinder.getExecTO(execution);
- notificationManager.createTasks(AuditElements.EventCategoryType.PROPAGATION, anyTypeKind, resource,
+ notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
+ AuditElements.EventCategoryType.PROPAGATION,
+ anyTypeKind,
+ resource,
operation,
result,
beforeObj,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
index 22cfee1..5931816 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
@@ -904,7 +904,9 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan
AnyUtils anyUtils = getAnyUtils();
- notificationManager.createTasks(AuditElements.EventCategoryType.PULL,
+ notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
+ AuditElements.EventCategoryType.PULL,
anyUtils.anyTypeKind().name().toLowerCase(),
profile.getTask().getResource().getKey(),
event,
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
index 7bef80e..cbaa6b1 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
@@ -774,7 +774,9 @@ public class DefaultRealmPullResultHandler
this.latestResult = result;
}
- notificationManager.createTasks(AuditElements.EventCategoryType.PULL,
+ notificationManager.createTasks(
+ AuthContextUtils.getUsername(),
+ AuditElements.EventCategoryType.PULL,
REALM_TYPE.toLowerCase(),
profile.getTask().getResource().getKey(),
event,
diff --git a/core/provisioning-java/src/main/resources/provisioning.properties b/core/provisioning-java/src/main/resources/provisioning.properties
index 29aca0d..998f6b4 100644
--- a/core/provisioning-java/src/main/resources/provisioning.properties
+++ b/core/provisioning-java/src/main/resources/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
quartz.sql=tables_postgres.sql
diff --git a/core/provisioning-java/src/main/resources/provisioningContext.xml b/core/provisioning-java/src/main/resources/provisioningContext.xml
index e8436f7..8dbd43a 100644
--- a/core/provisioning-java/src/main/resources/provisioningContext.xml
+++ b/core/provisioning-java/src/main/resources/provisioningContext.xml
@@ -45,6 +45,8 @@ under the License.
<bean class="${userProvisioningManager}"/>
<bean class="${groupProvisioningManager}"/>
<bean class="${anyObjectProvisioningManager}"/>
+ <bean class="${notificationManager}"/>
+ <bean class="${auditManager}"/>
<bean id="quartzDataSourceInit" class="org.apache.syncope.core.provisioning.java.job.SchedulerDBInit">
<property name="dataSource" ref="MasterDataSource"/>
diff --git a/ext/camel/provisioning-camel/src/main/resources/provisioning.properties b/ext/camel/provisioning-camel/src/main/resources/provisioning.properties
index 5af0e91..993238d 100644
--- a/ext/camel/provisioning-camel/src/main/resources/provisioning.properties
+++ b/ext/camel/provisioning-camel/src/main/resources/provisioning.properties
@@ -27,6 +27,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProv
groupProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
quartz.sql=tables_postgres.sql
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
index 14ee9c2..dbe54cf 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
@@ -44,9 +44,11 @@ public class Notify extends FlowableServiceTask {
User user = execution.getVariable(FlowableRuntimeUtils.USER, User.class);
UserTO userTO = execution.getVariable(FlowableRuntimeUtils.USER_TO, UserTO.class);
String event = execution.getVariable(FlowableRuntimeUtils.EVENT, String.class);
+ String wfExecutor = execution.getVariable(FlowableRuntimeUtils.WF_EXECUTOR, String.class);
if (StringUtils.isNotBlank(event)) {
notificationManager.createTasks(
+ wfExecutor,
AuditElements.EventCategoryType.CUSTOM,
null,
null,
diff --git a/fit/core-reference/src/main/resources/all/provisioning.properties b/fit/core-reference/src/main/resources/all/provisioning.properties
index b66ef97..01711bc 100644
--- a/fit/core-reference/src/main/resources/all/provisioning.properties
+++ b/fit/core-reference/src/main/resources/all/provisioning.properties
@@ -27,6 +27,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProv
groupProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
quartz.sql=tables_h2.sql
diff --git a/fit/core-reference/src/main/resources/mariadb/provisioning.properties b/fit/core-reference/src/main/resources/mariadb/provisioning.properties
index cc042e7..63ac034 100644
--- a/fit/core-reference/src/main/resources/mariadb/provisioning.properties
+++ b/fit/core-reference/src/main/resources/mariadb/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
quartz.sql=tables_mariadb.sql
diff --git a/fit/core-reference/src/main/resources/mysql/provisioning.properties b/fit/core-reference/src/main/resources/mysql/provisioning.properties
index 48f9ef6..0971b09 100644
--- a/fit/core-reference/src/main/resources/mysql/provisioning.properties
+++ b/fit/core-reference/src/main/resources/mysql/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
quartz.sql=tables_mysql.sql
diff --git a/fit/core-reference/src/main/resources/oracle/provisioning.properties b/fit/core-reference/src/main/resources/oracle/provisioning.properties
index 67bc013..fa91c9e 100644
--- a/fit/core-reference/src/main/resources/oracle/provisioning.properties
+++ b/fit/core-reference/src/main/resources/oracle/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
quartz.sql=tables_oracle.sql
diff --git a/fit/core-reference/src/main/resources/postgres/provisioning.properties b/fit/core-reference/src/main/resources/postgres/provisioning.properties
index 378e75e..2ed1765 100644
--- a/fit/core-reference/src/main/resources/postgres/provisioning.properties
+++ b/fit/core-reference/src/main/resources/postgres/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
quartz.sql=tables_postgres.sql
diff --git a/fit/core-reference/src/main/resources/provisioning.properties b/fit/core-reference/src/main/resources/provisioning.properties
index b2a8cb6..b212d0f 100644
--- a/fit/core-reference/src/main/resources/provisioning.properties
+++ b/fit/core-reference/src/main/resources/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
quartz.sql=tables_h2.sql
diff --git a/fit/core-reference/src/main/resources/sqlserver/provisioning.properties b/fit/core-reference/src/main/resources/sqlserver/provisioning.properties
index 1a21fef..34ec4f9 100644
--- a/fit/core-reference/src/main/resources/sqlserver/provisioning.properties
+++ b/fit/core-reference/src/main/resources/sqlserver/provisioning.properties
@@ -25,6 +25,8 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+notificationManager=org.apache.syncope.core.provisioning.java.notification.DefaultNotificationManagerImpl
+auditManager=org.apache.syncope.core.provisioning.java.DefaultAuditManagerImpl
quartz.jobstore=org.quartz.impl.jdbcjobstore.MSSQLDelegate
quartz.sql=tables_sqlServer.sql