Repository: syncope
Updated Branches:
  refs/heads/master c14a20d74 -> ceea93c0d


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);
 

Reply via email to