http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/persistence-jpa/src/test/resources/domains/TwoContent.xml ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml index 023b840..cce2ec8 100644 --- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml @@ -112,9 +112,9 @@ under the License. connectorName="net.tirasa.connid.bundles.ldap.LdapConnector" version="${connid.ldap.version}" jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is running.","type":"jav a.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"schema":{"name":"vlvSo rtAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-colons to separate m ultiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","type":"[Ljava.lang.S tring;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entries of oth er object types in the change log.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"ssl","displayName":"SSL","helpMessage" :"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDecryptionIn itializationVector","displayName":"Password Decryption Initialization Vector","helpMessage":"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC 2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group name.","type ":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":fals e,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDAP server.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=admin,ou=system"]},{"schema":{"name":"changeLogBlockSize","displayName":"Change Log Block Size","helpMessage":"The number of change log entries to fetch per query.","type":"int","required":true,"order":0,"confidential":false,"defaultValues":null},"overrida ble":false,"values":[100]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"passwordAttribute","displayName":"Password Attribute","helpMessage":"The name of the LDAP attribute which holds the password. When changing an user password, the new password is set to this attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["userpassword"]},{"schema":{"name":"changeNumberAttribute","displayName":"Change Number Attribute","helpMessage":"The name of the change number attribute in the c hange log entry.","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["changeNumber"]},{"schema":{"name":"objectClassesToSynchronize","displayName":"Object Classes to Synchronize","helpMessage":"The object classes to synchronize. The change log is for all objects; this filters updates to just the listed object classes. You should not list the superclasses of an object class unless you intend to synchronize objects with any of the superclass values. For example, if only \"inetOrgPerson\" objects should be synchronized, but the superclasses of \"inetOrgPerson\" (\"person\", \"organizationalperson\" and \"top\") should be filtered out, then list only \"inetOrgPerson\" here. All objects in LDAP are subclassed from \"top\". For this reason, you should never list \"top\", otherwise no object would be filtered.","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overrida ble":false,"values":["inetOrgPerson","groupOfUniqueNames"]},{"schema":{"name":"credentials","displayName":"Password","helpMessage":"Password for the principal.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["secret"]},{"schema":{"name":"attributesToSynchronize","displayName":"Attributes to Synchronize","helpMessage":"The names of the attributes to synchronize. This ignores updates from the change log if they do not update any of the named attributes. For example, if only \"department\" is listed, then only changes that affect \"department\" will be processed. All other updates are ignored. If blank (the default), then all changes are processed.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"maintainPosixGroupMembership","displayName":"Maintain POSIX Group Membership ","helpMessage":"When enabled and a user is renamed or deleted, update any POSIX groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["truemaintainLdapGroupMembership"]}]'/> - <ConnInstance_capabilities ConnInstance_id="100" capability="ONE_PHASE_CREATE"/> - <ConnInstance_capabilities ConnInstance_id="100" capability="ONE_PHASE_UPDATE"/> - <ConnInstance_capabilities ConnInstance_id="100" capability="ONE_PHASE_DELETE"/> + <ConnInstance_capabilities ConnInstance_id="100" capability="CREATE"/> + <ConnInstance_capabilities ConnInstance_id="100" capability="UPDATE"/> + <ConnInstance_capabilities ConnInstance_id="100" capability="DELETE"/> <ConnInstance_capabilities ConnInstance_id="100" capability="SEARCH"/> </dataset>
http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java ---------------------------------------------------------------------- diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java index 1fdbcb5..1be141f 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java @@ -21,7 +21,6 @@ package org.apache.syncope.core.provisioning.api; import java.util.Collection; import java.util.List; import java.util.Set; -import org.apache.syncope.common.lib.types.PropagationMode; import org.apache.syncope.common.lib.types.ResourceOperation; import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; import org.apache.syncope.core.persistence.api.entity.ConnInstance; @@ -54,21 +53,20 @@ public interface Connector { /** * Create user / group on a connector instance. * - * @param propagationMode propagation mode * @param objectClass ConnId's object class * @param attrs attributes for creation * @param options ConnId's OperationOptions * @param propagationAttempted if creation is actually performed (based on connector instance's capabilities) * @return Uid for created object */ - Uid create(PropagationMode propagationMode, ObjectClass objectClass, - Set<Attribute> attrs, OperationOptions options, + Uid create(ObjectClass objectClass, + Set<Attribute> attrs, + OperationOptions options, Set<String> propagationAttempted); /** * Update user / group on a connector instance. * - * @param propagationMode propagation mode * @param objectClass ConnId's object class * @param uid user to be updated * @param attrs attributes for update @@ -76,20 +74,21 @@ public interface Connector { * @param propagationAttempted if update is actually performed (based on connector instance's capabilities) * @return Uid for updated object */ - Uid update(PropagationMode propagationMode, ObjectClass objectClass, - Uid uid, Set<Attribute> attrs, OperationOptions options, + Uid update(ObjectClass objectClass, + Uid uid, + Set<Attribute> attrs, + OperationOptions options, Set<String> propagationAttempted); /** * Delete user / group on a connector instance. * - * @param propagationMode propagation mode * @param objectClass ConnId's object class * @param uid user to be deleted * @param options ConnId's OperationOptions * @param propagationAttempted if deletion is actually performed (based on connector instance's capabilities) */ - void delete(PropagationMode propagationMode, ObjectClass objectClass, + void delete(ObjectClass objectClass, Uid uid, OperationOptions options, Set<String> propagationAttempted); /** @@ -133,7 +132,6 @@ public interface Connector { * Get remote object used by the propagation manager in order to choose for a create (object doesn't exist) or an * update (object exists). * - * @param propagationMode propagation mode * @param operationType resource operation type * @param objectClass ConnId's object class * @param uid ConnId's Uid @@ -141,7 +139,6 @@ public interface Connector { * @return ConnId's connector object for given uid */ ConnectorObject getObject( - PropagationMode propagationMode, ResourceOperation operationType, ObjectClass objectClass, Uid uid, http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java index 3f53f2b..a28f44e 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java @@ -31,7 +31,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Transformer; import org.apache.syncope.common.lib.types.ConnConfProperty; import org.apache.syncope.common.lib.types.ConnectorCapability; -import org.apache.syncope.common.lib.types.PropagationMode; import org.apache.syncope.common.lib.types.ResourceOperation; import org.apache.syncope.core.persistence.api.entity.ConnInstance; import org.apache.syncope.core.provisioning.api.ConnIdBundleManager; @@ -165,15 +164,15 @@ public class ConnectorFacadeProxy implements Connector { } @Override - public Uid create(final PropagationMode propagationMode, final ObjectClass objectClass, final Set<Attribute> attrs, - final OperationOptions options, final Set<String> propagationAttempted) { + public Uid create( + final ObjectClass objectClass, + final Set<Attribute> attrs, + final OperationOptions options, + final Set<String> propagationAttempted) { Uid result = null; - if (propagationMode == PropagationMode.ONE_PHASE - ? activeConnInstance.getCapabilities().contains(ConnectorCapability.ONE_PHASE_CREATE) - : activeConnInstance.getCapabilities().contains(ConnectorCapability.TWO_PHASES_CREATE)) { - + if (activeConnInstance.getCapabilities().contains(ConnectorCapability.CREATE)) { propagationAttempted.add("create"); Future<Uid> future = asyncFacade.create(connector, objectClass, attrs, options); @@ -199,15 +198,16 @@ public class ConnectorFacadeProxy implements Connector { } @Override - public Uid update(final PropagationMode propagationMode, final ObjectClass objectClass, final Uid uid, - final Set<Attribute> attrs, final OperationOptions options, final Set<String> propagationAttempted) { + public Uid update( + final ObjectClass objectClass, + final Uid uid, + final Set<Attribute> attrs, + final OperationOptions options, + final Set<String> propagationAttempted) { Uid result = null; - if (propagationMode == PropagationMode.ONE_PHASE - ? activeConnInstance.getCapabilities().contains(ConnectorCapability.ONE_PHASE_UPDATE) - : activeConnInstance.getCapabilities().contains(ConnectorCapability.TWO_PHASES_UPDATE)) { - + if (activeConnInstance.getCapabilities().contains(ConnectorCapability.UPDATE)) { propagationAttempted.add("update"); Future<Uid> future = asyncFacade.update(connector, objectClass, uid, attrs, options); @@ -235,13 +235,13 @@ public class ConnectorFacadeProxy implements Connector { } @Override - public void delete(final PropagationMode propagationMode, final ObjectClass objectClass, final Uid uid, - final OperationOptions options, final Set<String> propagationAttempted) { - - if (propagationMode == PropagationMode.ONE_PHASE - ? activeConnInstance.getCapabilities().contains(ConnectorCapability.ONE_PHASE_DELETE) - : activeConnInstance.getCapabilities().contains(ConnectorCapability.TWO_PHASES_DELETE)) { + public void delete( + final ObjectClass objectClass, + final Uid uid, + final OperationOptions options, + final Set<String> propagationAttempted) { + if (activeConnInstance.getCapabilities().contains(ConnectorCapability.DELETE)) { propagationAttempted.add("delete"); Future<Uid> future = asyncFacade.delete(connector, objectClass, uid, options); @@ -307,12 +307,15 @@ public class ConnectorFacadeProxy implements Connector { @Override public ConnectorObject getObject(final ObjectClass objectClass, final Uid uid, final OperationOptions options) { - return getObject(null, null, objectClass, uid, options); + return getObject(null, objectClass, uid, options); } @Override - public ConnectorObject getObject(final PropagationMode propagationMode, final ResourceOperation operationType, - final ObjectClass objectClass, final Uid uid, final OperationOptions options) { + public ConnectorObject getObject( + final ResourceOperation operationType, + final ObjectClass objectClass, + final Uid uid, + final OperationOptions options) { boolean hasCapablities = false; @@ -322,15 +325,11 @@ public class ConnectorFacadeProxy implements Connector { } else { switch (operationType) { case CREATE: - hasCapablities = propagationMode == null || (propagationMode == PropagationMode.ONE_PHASE - ? activeConnInstance.getCapabilities().contains(ConnectorCapability.ONE_PHASE_CREATE) - : activeConnInstance.getCapabilities().contains(ConnectorCapability.TWO_PHASES_CREATE)); + hasCapablities = activeConnInstance.getCapabilities().contains(ConnectorCapability.CREATE); break; case UPDATE: - hasCapablities = propagationMode == null || (propagationMode == PropagationMode.ONE_PHASE - ? activeConnInstance.getCapabilities().contains(ConnectorCapability.ONE_PHASE_UPDATE) - : activeConnInstance.getCapabilities().contains(ConnectorCapability.TWO_PHASES_UPDATE)); + hasCapablities = activeConnInstance.getCapabilities().contains(ConnectorCapability.UPDATE); break; default: http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java index 5821106..e5dfadf 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java @@ -108,8 +108,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder { resource.setRandomPwdIfNotProvided(resourceTO.isRandomPwdIfNotProvided()); - resource.setPropagationMode(resourceTO.getPropagationMode()); - // 1. add or update all (valid) provisions from TO for (ProvisionTO provisionTO : resourceTO.getProvisions()) { AnyType anyType = anyTypeDAO.find(provisionTO.getAnyType()); @@ -323,8 +321,6 @@ public class ResourceDataBinderImpl implements ResourceDataBinder { resourceTO.setRandomPwdIfNotProvided(resource.isRandomPwdIfNotProvided()); - resourceTO.setPropagationMode(resource.getPropagationMode()); - resourceTO.setCreateTraceLevel(resource.getCreateTraceLevel()); resourceTO.setUpdateTraceLevel(resource.getUpdateTraceLevel()); resourceTO.setDeleteTraceLevel(resource.getDeleteTraceLevel()); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java ---------------------------------------------------------------------- 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 90d3dbc..4ccc0c4 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 @@ -29,7 +29,6 @@ import java.util.Set; import org.apache.syncope.common.lib.types.AuditElements; import org.apache.syncope.common.lib.types.AuditElements.Result; import org.apache.syncope.common.lib.types.MappingPurpose; -import org.apache.syncope.common.lib.types.PropagationMode; import org.apache.syncope.common.lib.types.PropagationTaskExecStatus; import org.apache.syncope.common.lib.types.TraceLevel; import org.apache.syncope.core.persistence.api.dao.GroupDAO; @@ -182,7 +181,6 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask if (beforeObj == null) { LOG.debug("Create {} on {}", attributes, task.getResource().getKey()); connector.create( - task.getResource().getPropagationMode(), new ObjectClass(task.getObjectClassName()), attributes, null, @@ -229,8 +227,8 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask // 3. provision entry LOG.debug("Update {} on {}", strictlyModified, task.getResource().getKey()); - connector.update(task.getResource().getPropagationMode(), beforeObj.getObjectClass(), - beforeObj.getUid(), strictlyModified, null, propagationAttempted); + connector.update( + beforeObj.getObjectClass(), beforeObj.getUid(), strictlyModified, null, propagationAttempted); } } } @@ -303,7 +301,6 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask LOG.debug("Delete {} on {}", beforeObj.getUid(), task.getResource().getKey()); connector.delete( - task.getMode(), beforeObj.getObjectClass(), beforeObj.getUid(), null, @@ -359,9 +356,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask default: } - execution.setStatus(task.getMode() == PropagationMode.ONE_PHASE - ? PropagationTaskExecStatus.SUCCESS.name() - : PropagationTaskExecStatus.SUBMITTED.name()); + execution.setStatus(PropagationTaskExecStatus.SUCCESS.name()); for (PropagationActions action : actions) { action.after(task, execution, afterObj); @@ -390,9 +385,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask } try { - execution.setStatus(task.getMode() == PropagationMode.ONE_PHASE - ? PropagationTaskExecStatus.FAILURE.name() - : PropagationTaskExecStatus.UNSUBMITTED.name()); + execution.setStatus(PropagationTaskExecStatus.FAILURE.name()); } catch (Exception wft) { LOG.error("While executing KO action on {}", execution, wft); } @@ -486,7 +479,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask protected boolean hasToBeregistered(final PropagationTask task, final TaskExec execution) { boolean result; - final boolean failed = !PropagationTaskExecStatus.valueOf(execution.getStatus()).isSuccessful(); + boolean failed = PropagationTaskExecStatus.valueOf(execution.getStatus()) != PropagationTaskExecStatus.SUCCESS; switch (task.getOperation()) { @@ -530,7 +523,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask ConnectorObject obj = null; try { - obj = connector.getObject(task.getMode(), + obj = connector.getObject( task.getOperation(), new ObjectClass(task.getObjectClassName()), new Uid(connObjectKey), http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java index 320de88..a3c4951 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java @@ -64,7 +64,7 @@ public class PriorityPropagationTaskExecutor extends AbstractPropagationTaskExec LOG.error("Unexpected execution status found {}", execution.getStatus()); execStatus = PropagationTaskExecStatus.FAILURE; } - if (task.getResource().isPropagationPrimary() && !execStatus.isSuccessful()) { + if (task.getResource().isPropagationPrimary() && execStatus != PropagationTaskExecStatus.SUCCESS) { result = Result.FAILURE; throw new PropagationException(task.getResource().getKey(), execution.getMessage()); } http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java index 53d55a9..b8bc838 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java @@ -380,7 +380,6 @@ public class PropagationManagerImpl implements PropagationManager { task.setAnyKey(any.getKey()); } task.setOperation(operation); - task.setMode(resource.getPropagationMode()); task.setOldConnObjectKey(propByRes.getOldConnObjectKey(resource.getKey())); Pair<String, Set<Attribute>> preparedAttrs = MappingUtils.prepareAttrs( http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java index 13f1557..061b17a 100644 --- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java +++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ResourceDataBinderTest.java @@ -30,7 +30,6 @@ import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.IntMappingType; import org.apache.syncope.common.lib.types.MappingPurpose; -import org.apache.syncope.common.lib.types.PropagationMode; import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO; import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO; import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO; @@ -78,7 +77,6 @@ public class ResourceDataBinderTest extends AbstractTest { ResourceTO resourceTO = new ResourceTO(); resourceTO.setKey("resource-issue42"); resourceTO.setConnector(100L); - resourceTO.setPropagationMode(PropagationMode.ONE_PHASE); resourceTO.setEnforceMandatoryCondition(true); ProvisionTO provisionTO = new ProvisionTO(); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java index 3744583..5da1042 100644 --- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java +++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java @@ -27,13 +27,11 @@ import org.apache.syncope.common.lib.to.BulkAction; import org.apache.syncope.common.lib.to.BulkActionResult; import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.to.PushTaskTO; -import org.apache.syncope.common.lib.to.ReportExecTO; import org.apache.syncope.common.lib.to.SchedTaskTO; import org.apache.syncope.common.lib.to.SyncTaskTO; import org.apache.syncope.common.lib.to.TaskExecTO; import org.apache.syncope.common.lib.types.JobAction; import org.apache.syncope.common.lib.types.JobStatusType; -import org.apache.syncope.common.lib.types.PropagationTaskExecStatus; import org.apache.syncope.common.lib.types.TaskType; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.common.rest.api.beans.TaskQuery; @@ -110,13 +108,6 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService } @Override - public void report(final Long executionKey, final ReportExecTO reportExec) { - reportExec.setKey(executionKey); - logic.report( - executionKey, PropagationTaskExecStatus.fromString(reportExec.getStatus()), reportExec.getMessage()); - } - - @Override public void update(final AbstractTaskTO taskTO) { if (taskTO instanceof SyncTaskTO) { logic.updateSync((SyncTaskTO) taskTO); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java index 194de73..cc97936 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ConnectorITCase.java @@ -149,9 +149,8 @@ public class ConnectorITCase extends AbstractITCase { connectorTO.getConfiguration().addAll(conf); // set connector capabilities - connectorTO.getCapabilities().add(ConnectorCapability.TWO_PHASES_CREATE); - connectorTO.getCapabilities().add(ConnectorCapability.ONE_PHASE_CREATE); - connectorTO.getCapabilities().add(ConnectorCapability.TWO_PHASES_UPDATE); + connectorTO.getCapabilities().add(ConnectorCapability.CREATE); + connectorTO.getCapabilities().add(ConnectorCapability.UPDATE); // set connector pool conf ConnPoolConfTO cpc = new ConnPoolConfTO(); @@ -180,7 +179,7 @@ public class ConnectorITCase extends AbstractITCase { Throwable t = null; // check update - actual.getCapabilities().remove(ConnectorCapability.TWO_PHASES_UPDATE); + actual.getCapabilities().remove(ConnectorCapability.UPDATE); actual.getPoolConf().setMaxObjects(null); try { @@ -193,8 +192,7 @@ public class ConnectorITCase extends AbstractITCase { assertNull(t); assertNotNull(actual); - assertEquals(EnumSet.of(ConnectorCapability.ONE_PHASE_CREATE, ConnectorCapability.TWO_PHASES_CREATE), - actual.getCapabilities()); + assertEquals(EnumSet.of(ConnectorCapability.CREATE), actual.getCapabilities()); assertEquals(10, actual.getPoolConf().getMaxObjects(), 0); // check also for the deletion of the created object http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java index c78f47b..c1ce3b0 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/MultitenancyITCase.java @@ -21,7 +21,6 @@ package org.apache.syncope.fit.core.reference; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.security.AccessControlException; @@ -202,7 +201,7 @@ public class MultitenancyITCase extends AbstractITCase { // verify execution status String status = execution.getStatus(); assertNotNull(status); - assertTrue(PropagationTaskExecStatus.valueOf(status).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(status)); // verify that synchronized user is found PagedResult<UserTO> matchingUsers = adminClient.getService(UserService.class).search( http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java index 3125841..4115bfa 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PropagationTaskITCase.java @@ -25,17 +25,13 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; -import javax.ws.rs.core.Response; import org.apache.syncope.client.lib.SyncopeClient; -import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.AbstractTaskTO; import org.apache.syncope.common.lib.to.BulkAction; import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.to.PropagationTaskTO; -import org.apache.syncope.common.lib.to.ReportExecTO; import org.apache.syncope.common.lib.to.TaskExecTO; import org.apache.syncope.common.lib.to.UserTO; -import org.apache.syncope.common.lib.types.PropagationTaskExecStatus; import org.apache.syncope.common.lib.types.TaskType; import org.junit.FixMethodOrder; import org.junit.Test; @@ -89,34 +85,6 @@ public class PropagationTaskITCase extends AbstractTaskITCase { } @Test - public void deal() { - // Currently test is not re-runnable. - // To successfully run test second time it is necessary to restart cargo - try { - taskService.delete(0L); - } catch (SyncopeClientException e) { - assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus()); - } - TaskExecTO exec = taskService.execute(1L, false); - assertEquals(PropagationTaskExecStatus.SUBMITTED.name(), exec.getStatus()); - - ReportExecTO report = new ReportExecTO(); - report.setStatus(PropagationTaskExecStatus.SUCCESS.name()); - report.setMessage("OK"); - taskService.report(exec.getKey(), report); - exec = taskService.readExecution(exec.getKey()); - assertEquals(PropagationTaskExecStatus.SUCCESS.name(), exec.getStatus()); - assertEquals("OK", exec.getMessage()); - - taskService.delete(1L); - try { - taskService.readExecution(exec.getKey()); - } catch (SyncopeClientException e) { - assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus()); - } - } - - @Test public void issue196() { TaskExecTO exec = taskService.execute(6L, false); assertNotNull(exec); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java index 5ddcae4..d980345 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/PushTaskITCase.java @@ -326,7 +326,7 @@ public class PushTaskITCase extends AbstractTaskITCase { // execute the new task TaskExecTO pushExec = execProvisioningTask(taskService, push.getKey(), 50, false); - assertTrue(PropagationTaskExecStatus.valueOf(pushExec.getStatus()).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(pushExec.getStatus())); } finally { groupService.delete(groupTO.getKey()); if (newResourceTO != null) { http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java index f4db643..eaff578 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SyncTaskITCase.java @@ -253,7 +253,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { // update sync task TaskExecTO execution = execProvisioningTask(taskService, 7L, 50, false); assertNotNull(execution.getStatus()); - assertTrue(PropagationTaskExecStatus.valueOf(execution.getStatus()).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); UserTO userTO = readUser("testuser1"); assertNotNull(userTO); @@ -267,7 +267,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { // re-execute the same SyncTask: now user must be active execution = execProvisioningTask(taskService, 7L, 50, false); assertNotNull(execution.getStatus()); - assertTrue(PropagationTaskExecStatus.valueOf(execution.getStatus()).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); userTO = readUser("testuser1"); assertNotNull(userTO); @@ -317,9 +317,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { TaskExecTO execution = execProvisioningTask(taskService, 11L, 50, false); // 1. verify execution status - String status = execution.getStatus(); - assertNotNull(status); - assertTrue(PropagationTaskExecStatus.valueOf(status).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); // 2. verify that synchronized group is found PagedResult<GroupTO> matchingGroups = groupService.search( @@ -455,9 +453,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { assertFalse(((UserTO) actual.getTemplates().get(AnyTypeKind.USER.name())).getMemberships().isEmpty()); TaskExecTO execution = execProvisioningTask(taskService, actual.getKey(), 50, false); - final String status = execution.getStatus(); - assertNotNull(status); - assertTrue(PropagationTaskExecStatus.valueOf(status).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); userTO = readUser("testuser2"); assertNotNull(userTO); @@ -560,12 +556,12 @@ public class SyncTaskITCase extends AbstractTaskITCase { try { assertNotNull(userTO); assertEquals(1, userTO.getPropagationStatusTOs().size()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); TaskExecTO taskExecTO = execProvisioningTask(taskService, 24L, 50, false); assertNotNull(taskExecTO.getStatus()); - assertTrue(PropagationTaskExecStatus.valueOf(taskExecTO.getStatus()).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(taskExecTO.getStatus())); userTO = userService.read(userTO.getKey()); assertNotNull(userTO); @@ -669,9 +665,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { assertEquals(actual.getJobDelegateClassName(), syncTask.getJobDelegateClassName()); TaskExecTO execution = execProvisioningTask(taskService, syncTask.getKey(), 50, false); - final String status = execution.getStatus(); - assertNotNull(status); - assertTrue(PropagationTaskExecStatus.valueOf(status).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); // 5. Test the sync'd user UserTO updatedUser = userService.read(user.getKey()); @@ -743,9 +737,7 @@ public class SyncTaskITCase extends AbstractTaskITCase { assertEquals(actual.getJobDelegateClassName(), syncTask.getJobDelegateClassName()); TaskExecTO execution = execProvisioningTask(taskService, syncTask.getKey(), 50, false); - String status = execution.getStatus(); - assertNotNull(status); - assertTrue(PropagationTaskExecStatus.valueOf(status).isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, PropagationTaskExecStatus.valueOf(execution.getStatus())); // 7. Test the sync'd user String syncedPassword = Encryptor.getInstance().encode("security123", CipherAlgorithm.SHA1); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java index 146c51b..283f532 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/UserITCase.java @@ -295,7 +295,7 @@ public class UserITCase extends AbstractITCase { userTO = createUser(userTO); assertNotNull(userTO); assertEquals(1, userTO.getPropagationStatusTOs().size()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); } @Test(expected = SyncopeClientException.class) @@ -504,7 +504,7 @@ public class UserITCase extends AbstractITCase { // check for propagation result assertFalse(userTO.getPropagationStatusTOs().isEmpty()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); try { userService.delete(userTO.getKey()); @@ -532,7 +532,7 @@ public class UserITCase extends AbstractITCase { // check for propagation result assertFalse(userTO.getPropagationStatusTOs().isEmpty()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); try { userService.read(userTO.getKey()); @@ -1058,9 +1058,7 @@ public class UserITCase extends AbstractITCase { assertNotNull(propagations); assertEquals(1, propagations.size()); - PropagationTaskExecStatus status = propagations.get(0).getStatus(); - assertNotNull(status); - assertTrue(status.isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, propagations.get(0).getStatus()); String resource = propagations.get(0).getResource(); assertEquals(RESOURCE_NAME_TESTDB, resource); @@ -1077,17 +1075,14 @@ public class UserITCase extends AbstractITCase { userTO = createUser(userTO); assertNotNull(userTO); - final List<PropagationStatus> propagations = userTO.getPropagationStatusTOs(); - + List<PropagationStatus> propagations = userTO.getPropagationStatusTOs(); assertNotNull(propagations); assertEquals(1, propagations.size()); - final PropagationTaskExecStatus status = propagations.get(0).getStatus(); - final String resource = propagations.get(0).getResource(); + assertNotEquals(PropagationTaskExecStatus.SUCCESS, propagations.get(0).getStatus()); - assertNotNull(status); + String resource = propagations.get(0).getResource(); assertEquals(RESOURCE_NAME_CSV, resource); - assertFalse(status.isSuccessful()); } @Test @@ -1365,7 +1360,7 @@ public class UserITCase extends AbstractITCase { assertNotNull(userTO); assertFalse(userTO.getPropagationStatusTOs().isEmpty()); assertEquals(RESOURCE_NAME_DBVIRATTR, userTO.getPropagationStatusTOs().get(0).getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); ConnObjectTO connObjectTO = resourceService.readConnObject(RESOURCE_NAME_DBVIRATTR, AnyTypeKind.USER.name(), userTO.getKey()); @@ -1407,7 +1402,7 @@ public class UserITCase extends AbstractITCase { userTO = createUser(userTO); assertEquals(RESOURCE_NAME_TIMEOUT, userTO.getPropagationStatusTOs().get(0).getResource()); assertNotNull(userTO.getPropagationStatusTOs().get(0).getFailureReason()); - assertEquals(PropagationTaskExecStatus.UNSUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.FAILURE, userTO.getPropagationStatusTOs().get(0).getStatus()); } @Test @@ -1510,7 +1505,7 @@ public class UserITCase extends AbstractITCase { PropagationStatus prop = props.iterator().next(); assertNotNull(prop); assertEquals(RESOURCE_NAME_WS1, prop.getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, prop.getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, prop.getStatus()); } finally { // restore initial cipher algorithm pwdCipherAlgo.getValues().set(0, origpwdCipherAlgo); @@ -1734,7 +1729,7 @@ public class UserITCase extends AbstractITCase { operation(PatchOperation.ADD_REPLACE).value(RESOURCE_NAME_TESTDB).build()); userTO = updateUser(userPatch); assertEquals(RESOURCE_NAME_TESTDB, userTO.getResources().iterator().next()); - assertFalse(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertNotEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); assertNotNull(userTO.getPropagationStatusTOs().get(0).getFailureReason()); // 3. request to change password only on testdb @@ -1745,7 +1740,7 @@ public class UserITCase extends AbstractITCase { userTO = updateUser(userPatch); assertEquals(RESOURCE_NAME_TESTDB, userTO.getResources().iterator().next()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); } @Test @@ -1789,7 +1784,7 @@ public class UserITCase extends AbstractITCase { assertNotNull(ws1PropagationStatus); assertEquals(RESOURCE_NAME_WS1, ws1PropagationStatus.getResource()); assertNotNull(ws1PropagationStatus.getFailureReason()); - assertEquals(PropagationTaskExecStatus.UNSUBMITTED, ws1PropagationStatus.getStatus()); + assertEquals(PropagationTaskExecStatus.FAILURE, ws1PropagationStatus.getStatus()); } @Test @@ -2103,7 +2098,7 @@ public class UserITCase extends AbstractITCase { userTO = userService.update(userPatch).readEntity(UserTO.class); assertEquals(Collections.singleton(RESOURCE_NAME_WS1), userTO.getResources()); - assertFalse(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertNotEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); assertTrue(userTO.getPropagationStatusTOs().get(0).getFailureReason(). startsWith("Not attempted because there are mandatory attributes without value(s): [__PASSWORD__]")); } @@ -2181,7 +2176,7 @@ public class UserITCase extends AbstractITCase { userTO = createUser(userTO); assertNotNull(userTO); assertEquals(1, userTO.getPropagationStatusTOs().size()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); ConnObjectTO actual = resourceService.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey()); @@ -2221,7 +2216,7 @@ public class UserITCase extends AbstractITCase { userTO = updateUser(userPatch); assertNotNull(userTO); assertEquals(1, userTO.getPropagationStatusTOs().size()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); ConnObjectTO newUser = resourceService.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey()); http://git-wip-us.apache.org/repos/asf/syncope/blob/44cbf349/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java index f321dfa..0ceceda 100644 --- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java +++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/VirAttrITCase.java @@ -101,7 +101,7 @@ public class VirAttrITCase extends AbstractITCase { assertNotNull(userTO); assertFalse(userTO.getPropagationStatusTOs().isEmpty()); assertEquals(RESOURCE_NAME_WS2, userTO.getPropagationStatusTOs().get(0).getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); ConnObjectTO connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey()); @@ -120,7 +120,7 @@ public class VirAttrITCase extends AbstractITCase { assertNotNull(userTO); assertFalse(userTO.getPropagationStatusTOs().isEmpty()); assertEquals("ws-target-resource-2", userTO.getPropagationStatusTOs().get(0).getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey()); assertNotNull(connObjectTO); @@ -164,7 +164,7 @@ public class VirAttrITCase extends AbstractITCase { assertNotNull(userTO); assertFalse(userTO.getPropagationStatusTOs().isEmpty()); assertEquals(RESOURCE_NAME_WS2, userTO.getPropagationStatusTOs().get(0).getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey()); assertNotNull(connObjectTO); @@ -189,7 +189,7 @@ public class VirAttrITCase extends AbstractITCase { assertTrue(userTO.getVirAttrs().isEmpty()); assertFalse(userTO.getPropagationStatusTOs().isEmpty()); assertEquals(RESOURCE_NAME_WS2, userTO.getPropagationStatusTOs().get(0).getResource()); - assertEquals(PropagationTaskExecStatus.SUBMITTED, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey()); assertNotNull(connObjectTO); @@ -502,8 +502,8 @@ public class VirAttrITCase extends AbstractITCase { userTO = createUser(userTO); assertEquals(2, userTO.getPropagationStatusTOs().size()); - assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful()); - assertTrue(userTO.getPropagationStatusTOs().get(1).getStatus().isSuccessful()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(0).getStatus()); + assertEquals(PropagationTaskExecStatus.SUCCESS, userTO.getPropagationStatusTOs().get(1).getStatus()); JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
