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 2015/10/30 12:35:12 UTC
[33/50] [abbrv] syncope git commit: [SYNCOPE-141][SYNCOPE-142]
Implementation completed
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index 2bc840d..20baa6b 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -581,64 +581,64 @@ under the License.
<ExternalResource name="ws-target-resource-1" connector_id="100"
randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ propagationPriority="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-2" connector_id="100"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
syncPolicy_id="9"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-timeout" connector_id="102"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ propagationPriority="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:${cargo.servlet.port}/syncope-fit-build-tools/services/provisioning"]}]'
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-list-mappings-1" connector_id="100"
randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-list-mappings-2" connector_id="100"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-delete" connector_id="102"
randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
- propagationPriority="2" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ propagationPriority="2" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-update" connector_id="100"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-testdb" connector_id="101"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-testdb2" connector_id="106"
randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-csv" connector_id="104"
randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
syncPolicy_id="3"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-update-resetsynctoken" connector_id="100" enforceMandatoryCondition="1"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-ldap" connector_id="105"
randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="1"
+ propagationPriority="1"
createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -646,7 +646,7 @@ under the License.
actionClassName="org.apache.syncope.core.provisioning.java.propagation.LDAPMembershipPropagationActions"/>
<ExternalResource name="ws-target-resource-nopropagation" connector_id="103"
randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
passwordPolicy_id="4"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -654,17 +654,17 @@ under the License.
<!-- The following three resources have been added to verify the issue SYNCOPE-68 -->
<ExternalResource name="ws-target-resource-nopropagation2" connector_id="103"
enforceMandatoryCondition="1" overrideCapabilities="0"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-nopropagation3" connector_id="103"
enforceMandatoryCondition="1" overrideCapabilities="0"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="ws-target-resource-nopropagation4" connector_id="103"
enforceMandatoryCondition="1" overrideCapabilities="0"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
+ randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -672,7 +672,7 @@ under the License.
<ExternalResource name="resource-db-sync" connector_id="107"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
+ overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -680,14 +680,14 @@ under the License.
<ExternalResource name="resource-db-virattr" connector_id="107"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
+ overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
<ExternalResource name="resource-db-scripted" connector_id="108"
randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
enforceMandatoryCondition="0"
- propagationPrimary="0" propagationPriority="0" overrideCapabilities="0"
+ overrideCapabilities="0"
creator="admin" lastModifier="admin"
creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
@@ -968,34 +968,34 @@ under the License.
<Task DTYPE="PropagationTask" type="PROPAGATION" id="1" operation="UPDATE"
objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
- xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
+ attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
<TaskExec id="1" task_id="1" status="SUCCESS"/>
<Task DTYPE="PropagationTask" type="PROPAGATION" id="2" operation="CREATE"
objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
- xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
+ attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
<Task DTYPE="PropagationTask" type="PROPAGATION" id="3" operation="DELETE"
objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
- xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"type","value":["type"]}]'/>
+ attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"type","value":["type"]}]'/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="4" name="CSV (update matching; assign unmatching)" resource_name="resource-csv"
destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" fullReconciliation="0"
unmatchingRule="ASSIGN" matchingRule="UPDATE"/>
<AnyTemplateSyncTask id="41" syncTask_id="4" anyType_name="USER"
- template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","readonly":false,"values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"propagationStatuses":[],"relationships":[],"memberships":[{"leftType":null,"leftKey":0,"rightType":"GROUP","rightKey":8,"groupName":null}],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["email == 'test8@syncope.apache.org'? 'TYPE_8': 'TYPE_OTHER'"]}]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","readonly":false,"values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"relationships":[],"memberships":[{"leftType":null,"leftKey":0,"rightType":"GROUP","rightKey":8,"groupName":null}],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["email == 'test8@syncope.apache.org'? 'TYPE_8': 'TYPE_OTHER'"]}]}'/>
<AnyTemplateSyncTask id="42" syncTask_id="4" anyType_name="GROUP"
- template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"plainAttrs":[]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
<Task DTYPE="SchedTask" type="SCHEDULED" id="5" name="SampleJob Task"
jobDelegateClassName="org.apache.syncope.fit.core.reference.TestSampleJobDelegate" cronExpression="0 0 0 1 * ?"/>
<Task DTYPE="PropagationTask" type="PROPAGATION" id="6" operation="UPDATE"
objectClassName="__ACCOUNT__" resource_name="ws-target-resource-nopropagation" anyTypeKind="USER" anyKey="1"
- xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
+ attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
<TaskExec id="6" task_id="6" status="SUCCESS"/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="7" name="TestDB Task" resource_name="resource-testdb"
destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" fullReconciliation="1"
unmatchingRule="PROVISION" matchingRule="UPDATE"/>
<AnyTemplateSyncTask id="71" syncTask_id="7" anyType_name="USER"
- template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"relationships":[],"memberships":[],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["'type a'"]},{"schema":"userId","readonly":false,"values":["'reconciled@syncope.apache.org'"]},{"schema":"fullname","readonly":false,"values":["'reconciled fullname'"]},{"schema":"surname","readonly":false,"values":["'surname'"]}]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"relationships":[],"memberships":[],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["'type a'"]},{"schema":"userId","readonly":false,"values":["'reconciled@syncope.apache.org'"]},{"schema":"fullname","readonly":false,"values":["'reconciled fullname'"]},{"schema":"surname","readonly":false,"values":["'surname'"]}]}'/>
<AnyTemplateSyncTask id="72" syncTask_id="7" anyType_name="GROUP"
- template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"plainAttrs":[]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
<Task DTYPE="NotificationTask" type="NOTIFICATION" id="8" sender="admin@prova.org" subject="Notification for SYNCOPE-81"
textBody="NOTIFICATION-81" htmlBody="NOTIFICATION-81" traceLevel="ALL"/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="9" name="TestDB2 Task" resource_name="resource-testdb2"
@@ -1008,9 +1008,9 @@ under the License.
destinationRealm_id="1" fullReconciliation="1" performCreate="1" performDelete="1" performUpdate="1" syncStatus="0"
unmatchingRule="PROVISION" matchingRule="UPDATE"/>
<AnyTemplateSyncTask id="1" syncTask_id="11" anyType_name="USER"
- template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","readonly":true,"values":[""]}],"resources":["resource-ldap"],"propagationStatuses":[],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","readonly":true,"values":[""]}],"resources":["resource-ldap"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[]}'/>
<AnyTemplateSyncTask id="2" syncTask_id="11" anyType_name="GROUP"
- template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"plainAttrs":[{"schema":"show","readonly":false,"values":["true"]}]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[{"schema":"show","readonly":false,"values":["true"]}]}'/>
<SyncTask_actionsClassNames SyncTask_id="11" actionClassName="org.apache.syncope.core.provisioning.java.sync.LDAPMembershipSyncActions"/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="12" name="VirAttrCache test" resource_name="resource-csv"
destinationRealm_id="1" performCreate="0" performUpdate="1" performDelete="0" syncStatus="0" fullReconciliation="1"
@@ -1075,9 +1075,9 @@ under the License.
destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" fullReconciliation="0"
unmatchingRule="PROVISION" matchingRule="UPDATE"/>
<AnyTemplateSyncTask id="3" syncTask_id="24" anyType_name="USER"
- template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"propagationStatuses":[],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[{"schema":"firstname","readonly":false,"values":[""]},{"schema":"userId","readonly":false,"values":["'test'"]},{"schema":"fullname","readonly":false,"values":["'test'"]},{"schema":"surname","readonly":false,"values":["'test'"]}]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[{"schema":"firstname","readonly":false,"values":[""]},{"schema":"userId","readonly":false,"values":["'test'"]},{"schema":"fullname","readonly":false,"values":["'test'"]},{"schema":"surname","readonly":false,"values":["'test'"]}]}'/>
<AnyTemplateSyncTask id="4" syncTask_id="24" anyType_name="GROUP"
- template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"propagationStatuses":[],"plainAttrs":[]}'/>
+ template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"adynMembershipCond":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="25" name="CSV (unlink matching; ignore unmatching)" resource_name="resource-csv"
destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" fullReconciliation="0"
unmatchingRule="IGNORE" matchingRule="UNLINK"/>
@@ -1086,7 +1086,7 @@ under the License.
unmatchingRule="ASSIGN" matchingRule="IGNORE"/>
<Task DTYPE="PropagationTask" type="PROPAGATION" id="27" operation="CREATE"
objectClassName="__ACCOUNT__" resource_name="resource-testdb" anyTypeKind="USER" anyKey="1"
- xmlAttributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
+ attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
<Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="28" name="Scripted SQL" resource_name="resource-db-scripted"
destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="0" fullReconciliation="0"
unmatchingRule="PROVISION" matchingRule="UPDATE"/>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
index d5571ab..df9a204 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
@@ -26,5 +26,5 @@ import org.apache.syncope.common.lib.to.PropagationStatus;
public interface AnyObjectProvisioningManager extends ProvisioningManager<AnyObjectTO, AnyObjectPatch> {
- List<PropagationStatus> provision(Long key, Collection<String> resources);
+ List<PropagationStatus> provision(Long key, Collection<String> resources, boolean nullPriorityAsync);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
index ea258e5..3aae89f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
@@ -30,8 +30,8 @@ import org.apache.syncope.common.lib.to.GroupTO;
public interface GroupProvisioningManager extends ProvisioningManager<GroupTO, GroupPatch> {
Pair<Long, List<PropagationStatus>> create(
- GroupTO groupTO, Map<Long, String> groupOwnerMap, Set<String> excludedResources);
+ GroupTO groupTO, Map<Long, String> groupOwnerMap, Set<String> excludedResources, boolean nullPriorityAsync);
- List<PropagationStatus> provision(Long key, Collection<String> resources);
+ List<PropagationStatus> provision(Long key, Collection<String> resources, boolean nullPriorityAsync);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
index add5b03..72a1253 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
@@ -28,22 +28,22 @@ import org.apache.syncope.common.lib.to.PropagationStatus;
public interface ProvisioningManager<T extends AnyTO, P extends AnyPatch> {
- Pair<Long, List<PropagationStatus>> create(T anyTO);
+ Pair<Long, List<PropagationStatus>> create(T anyTO, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> create(T anyTO, Set<String> excludedResources);
+ Pair<Long, List<PropagationStatus>> create(T anyTO, Set<String> excludedResources, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> update(P anyMod);
+ Pair<Long, List<PropagationStatus>> update(P patch, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> update(P anyMod, Set<String> excludedResources);
+ Pair<Long, List<PropagationStatus>> update(P patch, Set<String> excludedResources, boolean nullPriorityAsync);
- List<PropagationStatus> delete(Long anyKey);
+ List<PropagationStatus> delete(Long anyKey, boolean nullPriorityAsync);
- List<PropagationStatus> delete(Long anyKey, Set<String> excludedResources);
+ List<PropagationStatus> delete(Long anyKey, Set<String> excludedResources, boolean nullPriorityAsync);
Long unlink(P anyMod);
Long link(P anyMod);
- List<PropagationStatus> deprovision(Long anyKey, Collection<String> resources);
+ List<PropagationStatus> deprovision(Long anyKey, Collection<String> resources, boolean nullPriorityAsync);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
index b29eee3..1f9b7ef 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
@@ -26,30 +26,40 @@ import org.apache.syncope.common.lib.patch.StatusPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
import org.apache.syncope.common.lib.to.PropagationStatus;
import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.core.provisioning.api.sync.ProvisioningResult;
+import org.apache.syncope.core.provisioning.api.sync.ProvisioningReport;
public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserPatch> {
- Pair<Long, List<PropagationStatus>> activate(StatusPatch statusPatch);
+ Pair<Long, List<PropagationStatus>> activate(StatusPatch statusPatch, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> reactivate(StatusPatch statusPatch);
+ Pair<Long, List<PropagationStatus>> reactivate(StatusPatch statusPatch, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> suspend(StatusPatch statusPatch);
+ Pair<Long, List<PropagationStatus>> suspend(StatusPatch statusPatch, boolean nullPriorityAsync);
void internalSuspend(Long key);
- Pair<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword);
+ Pair<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword,
- boolean disablePwdPolicyCheck, Boolean enabled, Set<String> excludedResources);
+ Pair<Long, List<PropagationStatus>> create(
+ UserTO userTO,
+ boolean storePassword,
+ boolean disablePwdPolicyCheck,
+ Boolean enabled,
+ Set<String> excludedResources,
+ boolean nullPriorityAsync);
- Pair<Long, List<PropagationStatus>> update(UserPatch userPatch, Long key,
- ProvisioningResult result, Boolean enabled, Set<String> excludedResources);
+ Pair<Long, List<PropagationStatus>> update(
+ UserPatch userPatch,
+ ProvisioningReport result,
+ Boolean enabled,
+ Set<String> excludedResources,
+ boolean nullPriorityAsync);
void requestPasswordReset(Long key);
void confirmPasswordReset(Long key, String token, String password);
- List<PropagationStatus> provision(Long key, boolean changePwd, String password, Collection<String> resources);
+ List<PropagationStatus> provision(
+ Long key, boolean changePwd, String password, Collection<String> resources, boolean nullPriorityAsync);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationReporter.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationReporter.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationReporter.java
index 20ae8df..d96b1a7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationReporter.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationReporter.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.provisioning.api.propagation;
+import java.util.Collection;
import java.util.List;
import org.apache.syncope.common.lib.to.PropagationStatus;
import org.apache.syncope.common.lib.types.PropagationTaskExecStatus;
@@ -30,24 +31,29 @@ import org.identityconnectors.framework.common.objects.ConnectorObject;
public interface PropagationReporter {
/**
- * Report propagation status after executions in case of success or non-blocking failure
- * (e.g. on secondary resources).
+ * Report propagation status after executions in case blocking failure (e.g. on priority resources).
*
- * @param resourceName resource name.
- * @param execStatus propagation execution status.
- * @param failureReason propagation execution failure message.
- * @param beforeObj retrieved connector object before operation execution.
- * @param afterObj retrieved connector object after operation execution.
+ * @param failingResource failing resource name
+ * @param tasks propagation tasks performed before failure
*/
- void onSuccessOrSecondaryResourceFailures(String resourceName, PropagationTaskExecStatus execStatus,
- String failureReason, ConnectorObject beforeObj, ConnectorObject afterObj);
+ void onPriorityResourceFailure(String failingResource, Collection<PropagationTask> tasks);
/**
- * Report propagation status after executions in case blocking failure (e.g. on primary resources).
+ * Report propagation status after executions in case of success or non-blocking failure
+ * (e.g. on non-priority resources).
*
- * @param tasks propagation tasks performed before failure
+ * @param propagationTask propagation task
+ * @param execStatus propagation execution status
+ * @param failureReason propagation execution failure message
+ * @param beforeObj retrieved connector object before operation execution
+ * @param afterObj retrieved connector object after operation execution
*/
- void onPrimaryResourceFailure(List<PropagationTask> tasks);
+ void onSuccessOrNonPriorityResourceFailures(
+ PropagationTask propagationTask,
+ PropagationTaskExecStatus execStatus,
+ String failureReason,
+ ConnectorObject beforeObj,
+ ConnectorObject afterObj);
/**
* Returns the list of propagation statuses.
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskCallable.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskCallable.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskCallable.java
new file mode 100644
index 0000000..84c4864
--- /dev/null
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskCallable.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.propagation;
+
+import java.util.concurrent.Callable;
+import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
+
+public interface PropagationTaskCallable extends Callable<TaskExec> {
+
+ void setExecutor(PropagationTaskExecutor executor);
+
+ void setTask(PropagationTask task);
+
+ void setReporter(PropagationReporter reporter);
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java
index d3b8870..ace29a2 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskExecutor.java
@@ -42,7 +42,18 @@ public interface PropagationTaskExecutor {
String MANDATORY_NULL_OR_EMPTY_ATTR_NAME = "__MANDATORY_NULL_OR_EMPTY__";
/**
- * Execute the given PropagationTask and returns the generated TaskExec.
+ * Creates new instances of {@link PropagationTaskCallable} for usage with
+ * {@link java.util.concurrent.CompletionService}.
+ *
+ * @param task to be executed
+ * @param reporter to report propagation execution status
+ * @return new {@link PropagationTaskCallable} instance for usage with
+ * {@link java.util.concurrent.CompletionService}
+ */
+ PropagationTaskCallable newPropagationTaskCallable(PropagationTask task, PropagationReporter reporter);
+
+ /**
+ * Execute the given PropagationTask and returns the generated {@link TaskExec}.
*
* @param task to be executed
* @return the generated TaskExec
@@ -67,11 +78,13 @@ public interface PropagationTaskExecutor {
void execute(Collection<PropagationTask> tasks);
/**
- * Execute a collection of PropagationTask objects and invoke the given handler on each of these.
- * The process is interrupted as soon as the result of the communication with a primary resource is in error.
+ * Execute a collection of PropagationTask objects.
+ * The process is interrupted as soon as the result of the communication with a resource with non-null priority is
+ * in error.
*
* @param tasks to be execute, in given order
* @param reporter to report propagation execution status
+ * @param nullPriorityAsync asynchronously executes tasks related to resources with no priority
*/
- void execute(Collection<PropagationTask> tasks, PropagationReporter reporter);
+ void execute(Collection<PropagationTask> tasks, PropagationReporter reporter, boolean nullPriorityAsync);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningProfile.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningProfile.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningProfile.java
index 6bab515..2e6e055 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningProfile.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningProfile.java
@@ -34,7 +34,7 @@ public class ProvisioningProfile<T extends ProvisioningTask, A extends Provision
private final T task;
- private final List<ProvisioningResult> results = new ArrayList<>();
+ private final List<ProvisioningReport> results = new ArrayList<>();
private boolean dryRun;
@@ -55,7 +55,7 @@ public class ProvisioningProfile<T extends ProvisioningTask, A extends Provision
return task;
}
- public Collection<ProvisioningResult> getResults() {
+ public Collection<ProvisioningReport> getResults() {
return results;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningReport.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningReport.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningReport.java
new file mode 100644
index 0000000..9e3c28a
--- /dev/null
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningReport.java
@@ -0,0 +1,140 @@
+/*
+ * 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.api.sync;
+
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.types.ResourceOperation;
+import org.apache.syncope.common.lib.types.TraceLevel;
+
+public class ProvisioningReport {
+
+ public enum Status {
+
+ SUCCESS,
+ IGNORE,
+ FAILURE
+
+ }
+
+ private String message;
+
+ private Status status;
+
+ private String anyType;
+
+ private ResourceOperation operation;
+
+ private Long key;
+
+ private String name;
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(final String message) {
+ this.message = message;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public Long getKey() {
+ return key;
+ }
+
+ public void setKey(final Long key) {
+ this.key = key;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+
+ public void setStatus(final Status status) {
+ this.status = status;
+ }
+
+ public String getAnyType() {
+ return anyType;
+ }
+
+ public void setAnyType(final String anyType) {
+ this.anyType = anyType;
+ }
+
+ public ResourceOperation getOperation() {
+ return operation;
+ }
+
+ public void setOperation(final ResourceOperation operation) {
+ this.operation = operation;
+ }
+
+ @Override
+ public String toString() {
+ return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
+ }
+
+ /**
+ * Human readable report string, using the given trace level.
+ *
+ * @param level trace level
+ * @return String for certain levels, null for level NONE
+ */
+ public String getReportString(final TraceLevel level) {
+ if (level == TraceLevel.SUMMARY) {
+ // No per entry log in this case.
+ return null;
+ } else if (level == TraceLevel.FAILURES && status == Status.FAILURE) {
+ // only report failures
+ return String.format("Failed %s (id/name): %d/%s with message: %s", operation, key, name, message);
+ } else {
+ // All
+ return String.format("%s %s (id/name): %d/%s %s", operation, status, key, name,
+ StringUtils.isBlank(message)
+ ? ""
+ : "with message: " + message);
+ }
+ }
+
+ /**
+ * Helper method to invoke logging per synchronization result for the given trace level.
+ *
+ * @param results synchronization result
+ * @param level trace level
+ * @return report as string
+ */
+ public static String produceReport(final Collection<ProvisioningReport> results, final TraceLevel level) {
+ StringBuilder sb = new StringBuilder();
+ for (ProvisioningReport result : results) {
+ sb.append(result.getReportString(level)).append('\n');
+ }
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningResult.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningResult.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningResult.java
deleted file mode 100644
index 23af92d..0000000
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/ProvisioningResult.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * 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.api.sync;
-
-import java.util.Collection;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.common.lib.types.ResourceOperation;
-import org.apache.syncope.common.lib.types.TraceLevel;
-
-public class ProvisioningResult {
-
- public enum Status {
-
- SUCCESS,
- IGNORE,
- FAILURE
-
- }
-
- private String message;
-
- private Status status;
-
- private String anyType;
-
- private ResourceOperation operation;
-
- private Long key;
-
- private String name;
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(final String message) {
- this.message = message;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public Long getKey() {
- return key;
- }
-
- public void setKey(final Long key) {
- this.key = key;
- }
-
- public Status getStatus() {
- return status;
- }
-
- public void setStatus(final Status status) {
- this.status = status;
- }
-
- public String getAnyType() {
- return anyType;
- }
-
- public void setAnyType(final String anyType) {
- this.anyType = anyType;
- }
-
- public ResourceOperation getOperation() {
- return operation;
- }
-
- public void setOperation(final ResourceOperation operation) {
- this.operation = operation;
- }
-
- @Override
- public String toString() {
- return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
- }
-
- /**
- * Human readable report string, using the given trace level.
- *
- * @param level trace level
- * @return String for certain levels, null for level NONE
- */
- public String getReportString(final TraceLevel level) {
- if (level == TraceLevel.SUMMARY) {
- // No per entry log in this case.
- return null;
- } else if (level == TraceLevel.FAILURES && status == Status.FAILURE) {
- // only report failures
- return String.format("Failed %s (id/name): %d/%s with message: %s", operation, key, name, message);
- } else {
- // All
- return String.format("%s %s (id/name): %d/%s %s", operation, status, key, name,
- StringUtils.isBlank(message)
- ? ""
- : "with message: " + message);
- }
- }
-
- /**
- * Helper method to invoke logging per synchronization result for the given trace level.
- *
- * @param results synchronization result
- * @param level trace level
- * @return report as string
- */
- public static String produceReport(final Collection<ProvisioningResult> results, final TraceLevel level) {
- StringBuilder sb = new StringBuilder();
- for (ProvisioningResult result : results) {
- sb.append(result.getReportString(level)).append('\n');
- }
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/PushActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/PushActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/PushActions.java
index c06a05f..fee3a45 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/PushActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/PushActions.java
@@ -145,7 +145,7 @@ public interface PushActions extends ProvisioningActions {
<A extends Any<?, ?>> void onError(
ProvisioningProfile<?, ?> profile,
A any,
- ProvisioningResult result,
+ ProvisioningReport result,
Exception error) throws JobExecutionException;
/**
@@ -160,5 +160,5 @@ public interface PushActions extends ProvisioningActions {
<A extends Any<?, ?>> void after(
ProvisioningProfile<?, ?> profile,
A any,
- ProvisioningResult result) throws JobExecutionException;
+ ProvisioningReport result) throws JobExecutionException;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/SyncActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/SyncActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/SyncActions.java
index fd36d39..e7c8d8c 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/SyncActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/sync/SyncActions.java
@@ -182,7 +182,7 @@ public interface SyncActions extends ProvisioningActions {
void onError(
ProvisioningProfile<?, ?> profile,
SyncDelta delta,
- ProvisioningResult result,
+ ProvisioningReport result,
Exception error) throws JobExecutionException;
/**
@@ -200,5 +200,5 @@ public interface SyncActions extends ProvisioningActions {
ProvisioningProfile<?, ?> profile,
SyncDelta delta,
A any,
- ProvisioningResult result) throws JobExecutionException;
+ ProvisioningReport result) throws JobExecutionException;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
index ffecdb9..f2b489f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
@@ -35,21 +35,16 @@ import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
import org.apache.syncope.core.provisioning.api.VirAttrHandler;
import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisioningManager {
- private static final Logger LOG = LoggerFactory.getLogger(AnyObjectProvisioningManager.class);
-
@Autowired
protected AnyObjectWorkflowAdapter awfAdapter;
@@ -66,13 +61,13 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
protected AnyObjectDAO anyObjectDAO;
@Override
- public Pair<Long, List<PropagationStatus>> create(final AnyObjectTO anyObjectTO) {
- return create(anyObjectTO, Collections.<String>emptySet());
+ public Pair<Long, List<PropagationStatus>> create(final AnyObjectTO anyObjectTO, final boolean nullPriorityAsync) {
+ return create(anyObjectTO, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
public Pair<Long, List<PropagationStatus>> create(
- final AnyObjectTO anyObjectTO, final Set<String> excludedResources) {
+ final AnyObjectTO anyObjectTO, final Set<String> excludedResources, final boolean nullPriorityAsync) {
WorkflowResult<Long> created = awfAdapter.create(anyObjectTO);
@@ -84,24 +79,21 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
return new ImmutablePair<>(created.getResult(), propagationReporter.getStatuses());
}
@Override
- public Pair<Long, List<PropagationStatus>> update(final AnyObjectPatch anyObjectPatch) {
- return update(anyObjectPatch, Collections.<String>emptySet());
+ public Pair<Long, List<PropagationStatus>> update(
+ final AnyObjectPatch anyObjectPatch, final boolean nullPriorityAsync) {
+
+ return update(anyObjectPatch, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
public Pair<Long, List<PropagationStatus>> update(
- final AnyObjectPatch anyObjectPatch, final Set<String> excludedResources) {
+ final AnyObjectPatch anyObjectPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) {
WorkflowResult<Long> updated = awfAdapter.update(anyObjectPatch);
@@ -115,23 +107,20 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
return new ImmutablePair<>(updated.getResult(), propagationReporter.getStatuses());
}
@Override
- public List<PropagationStatus> delete(final Long key) {
- return delete(key, Collections.<String>emptySet());
+ public List<PropagationStatus> delete(final Long key, final boolean nullPriorityAsync) {
+ return delete(key, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
- public List<PropagationStatus> delete(final Long key, final Set<String> excludedResources) {
+ public List<PropagationStatus> delete(
+ final Long key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+
List<PropagationTask> tasks = propagationManager.getDeleteTasks(
AnyTypeKind.ANY_OBJECT,
key,
@@ -139,12 +128,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
awfAdapter.delete(key);
@@ -162,7 +146,9 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
}
@Override
- public List<PropagationStatus> provision(final Long key, final Collection<String> resources) {
+ public List<PropagationStatus> provision(
+ final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+
PropagationByResource propByRes = new PropagationByResource();
propByRes.addAll(ResourceOperation.UPDATE, resources);
@@ -176,17 +162,15 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
null);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
+
return propagationReporter.getStatuses();
}
@Override
- public List<PropagationStatus> deprovision(final Long key, final Collection<String> resources) {
+ public List<PropagationStatus> deprovision(
+ final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+
PropagationByResource propByRes = new PropagationByResource();
propByRes.addAll(ResourceOperation.DELETE, resources);
@@ -197,12 +181,8 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
CollectionUtils.removeAll(anyObjectDAO.findAllResourceNames(anyObjectDAO.authFind(key)), resources));
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
+
return propagationReporter.getStatuses();
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1b81e33c/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
index 9e3d566..831e41f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
@@ -25,8 +25,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -42,7 +40,6 @@ import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
@@ -52,8 +49,6 @@ import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
public class DefaultGroupProvisioningManager implements GroupProvisioningManager {
- private static final Logger LOG = LoggerFactory.getLogger(GroupProvisioningManager.class);
-
@Autowired
protected GroupWorkflowAdapter gwfAdapter;
@@ -70,12 +65,14 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
protected VirAttrHandler virtAttrHandler;
@Override
- public Pair<Long, List<PropagationStatus>> create(final GroupTO group) {
- return create(group, Collections.<String>emptySet());
+ public Pair<Long, List<PropagationStatus>> create(final GroupTO group, final boolean nullPriorityAsync) {
+ return create(group, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
- public Pair<Long, List<PropagationStatus>> create(final GroupTO groupTO, final Set<String> excludedResources) {
+ public Pair<Long, List<PropagationStatus>> create(
+ final GroupTO groupTO, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+
WorkflowResult<Long> created = gwfAdapter.create(groupTO);
List<PropagationTask> tasks = propagationManager.getCreateTasks(
@@ -86,19 +83,17 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
return new ImmutablePair<>(created.getResult(), propagationReporter.getStatuses());
}
@Override
public Pair<Long, List<PropagationStatus>> create(
- final GroupTO groupTO, final Map<Long, String> groupOwnerMap, final Set<String> excludedResources) {
+ final GroupTO groupTO,
+ final Map<Long, String> groupOwnerMap,
+ final Set<String> excludedResources,
+ final boolean nullPriorityAsync) {
WorkflowResult<Long> created = gwfAdapter.create(groupTO);
@@ -116,24 +111,19 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
return new ImmutablePair<>(created.getResult(), null);
}
@Override
- public Pair<Long, List<PropagationStatus>> update(final GroupPatch groupPatch) {
- return update(groupPatch, Collections.<String>emptySet());
+ public Pair<Long, List<PropagationStatus>> update(final GroupPatch groupPatch, final boolean nullPriorityAsync) {
+ return update(groupPatch, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
public Pair<Long, List<PropagationStatus>> update(
- final GroupPatch groupPatch, final Set<String> excludedResources) {
+ final GroupPatch groupPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) {
WorkflowResult<Long> updated = gwfAdapter.update(groupPatch);
@@ -147,23 +137,20 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
excludedResources);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
return new ImmutablePair<>(updated.getResult(), propagationReporter.getStatuses());
}
@Override
- public List<PropagationStatus> delete(final Long key) {
- return delete(key, Collections.<String>emptySet());
+ public List<PropagationStatus> delete(final Long key, final boolean nullPriorityAsync) {
+ return delete(key, Collections.<String>emptySet(), nullPriorityAsync);
}
@Override
- public List<PropagationStatus> delete(final Long key, final Set<String> excludedResources) {
+ public List<PropagationStatus> delete(
+ final Long key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+
List<PropagationTask> tasks = new ArrayList<>();
// Generate propagation tasks for deleting users and any objects from group resources,
@@ -196,12 +183,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
gwfAdapter.delete(key);
@@ -215,7 +197,9 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
}
@Override
- public List<PropagationStatus> provision(final Long key, final Collection<String> resources) {
+ public List<PropagationStatus> provision(
+ final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+
PropagationByResource propByRes = new PropagationByResource();
propByRes.addAll(ResourceOperation.UPDATE, resources);
@@ -229,17 +213,15 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
null);
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
+
return propagationReporter.getStatuses();
}
@Override
- public List<PropagationStatus> deprovision(final Long key, final Collection<String> resources) {
+ public List<PropagationStatus> deprovision(
+ final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+
PropagationByResource propByRes = new PropagationByResource();
propByRes.addAll(ResourceOperation.DELETE, resources);
@@ -250,12 +232,8 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
CollectionUtils.removeAll(groupDAO.authFind(key).getResourceNames(), resources));
PropagationReporter propagationReporter =
ApplicationContextProvider.getBeanFactory().getBean(PropagationReporter.class);
- try {
- taskExecutor.execute(tasks, propagationReporter);
- } catch (PropagationException e) {
- LOG.error("Error propagation primary resource", e);
- propagationReporter.onPrimaryResourceFailure(tasks);
- }
+ taskExecutor.execute(tasks, propagationReporter, nullPriorityAsync);
+
return propagationReporter.getStatuses();
}