Author: fmartelli
Date: Wed Jul  2 08:46:38 2014
New Revision: 1607297

URL: http://svn.apache.org/r1607297
Log:
[SYNCOPE-392, SYNCOPE-471] integration test improvement + some fixes around 
sync matching/unmatching rules

Modified:
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushPolicy.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/DBPasswordSyncActions.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java
    
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
    
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
    
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
    
syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java
    syncope/trunk/core/src/test/resources/content.xml

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushPolicy.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushPolicy.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushPolicy.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/PushPolicy.java
 Wed Jul  2 08:46:38 2014
@@ -34,7 +34,7 @@ public class PushPolicy extends Policy {
         super();
 
         this.type = global
-                ? PolicyType.GLOBAL_SYNC
-                : PolicyType.SYNC;
+                ? PolicyType.GLOBAL_PUSH
+                : PolicyType.PUSH;
     }
 }

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/DefaultSyncActions.java
 Wed Jul  2 08:46:38 2014
@@ -35,7 +35,7 @@ public abstract class DefaultSyncActions
     }
 
     @Override
-    public <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+    public <T extends AbstractAttributableTO> SyncDelta beforeProvision(
             final SyncProfile<?, ?> profile,
             final SyncDelta delta,
             final T subject) throws JobExecutionException {

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java 
(original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/SyncActions.java 
Wed Jul  2 08:46:38 2014
@@ -40,7 +40,7 @@ public interface SyncActions extends Abs
      * @return synchronization information used for user status evaluation and 
to be passed to the 'after' method.
      * @throws JobExecutionException in case of generic failure
      */
-    <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+    <T extends AbstractAttributableTO> SyncDelta beforeProvision(
             final SyncProfile<?, ?> profile,
             final SyncDelta delta,
             final T subject) throws JobExecutionException;
@@ -162,7 +162,7 @@ public interface SyncActions extends Abs
      * Action to be executed after each local user / role synchronization.
      *
      * @param profile profile of the synchronization being executed.
-     * @param delta retrieved synchronization information (may be modified by 
'beforeCreate/beforeUpdate/beforeDelete')
+     * @param delta retrieved synchronization information (may be modified by 
'beforeProvision/beforeUpdate/beforeDelete')
      * @param subject synchronized local user / role
      * @param result global synchronization results at the current 
synchronization step
      * @throws JobExecutionException in case of generic failure

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/AbstractSubjectSyncResultHandler.java
 Wed Jul  2 08:46:38 2014
@@ -107,8 +107,7 @@ public abstract class AbstractSubjectSyn
         }
     }
 
-    protected List<SyncResult> assign(
-            final SyncDelta delta, final AttributableUtil attrUtil, final 
boolean dryRun)
+    protected List<SyncResult> assign(final SyncDelta delta, final 
AttributableUtil attrUtil)
             throws JobExecutionException {
 
         final AbstractSubjectTO subjectTO =
@@ -116,30 +115,37 @@ public abstract class AbstractSubjectSyn
 
         
subjectTO.getResources().add(profile.getSyncTask().getResource().getName());
 
-        SyncDelta _delta = delta;
-        for (SyncActions action : profile.getActions()) {
-            _delta = action.beforeAssign(this.getProfile(), _delta, subjectTO);
+        if (!profile.getSyncTask().isPerformCreate()) {
+            LOG.debug("SyncTask not configured for create");
+            return Collections.<SyncResult>emptyList();
         }
 
-        return create(subjectTO, _delta, attrUtil, "assign", dryRun);
-    }
+        final SyncResult result = new SyncResult();
+        result.setOperation(ResourceOperation.CREATE);
+        result.setSubjectType(attrUtil.getType());
+        result.setStatus(SyncResult.Status.SUCCESS);
 
-    protected List<SyncResult> create(
-            final SyncDelta delta, final AttributableUtil attrUtil, final 
boolean dryRun)
-            throws JobExecutionException {
+        // Attributable transformation (if configured)
+        AbstractSubjectTO transformed = attrTransformer.transform(subjectTO);
+        LOG.debug("Transformed: {}", transformed);
 
-        final AbstractSubjectTO subjectTO =
-                connObjectUtil.getSubjectTO(delta.getObject(), 
profile.getSyncTask(), attrUtil);
+        result.setName(getName(transformed));
+
+        if (profile.isDryRun()) {
+            result.setId(0L);
+        } else {
+            SyncDelta _delta = delta;
+            for (SyncActions action : profile.getActions()) {
+                _delta = action.beforeAssign(this.getProfile(), _delta, 
transformed);
+            }
+
+            create(transformed, _delta, attrUtil, "assign", result);
+        }
 
-        return create(subjectTO, delta, attrUtil, "provision", dryRun);
+        return Collections.singletonList(result);
     }
 
-    private List<SyncResult> create(
-            final AbstractSubjectTO subjectTO,
-            final SyncDelta delta,
-            final AttributableUtil attrUtil,
-            final String operation,
-            final boolean dryRun)
+    protected List<SyncResult> create(final SyncDelta delta, final 
AttributableUtil attrUtil)
             throws JobExecutionException {
 
         if (!profile.getSyncTask().isPerformCreate()) {
@@ -147,59 +153,72 @@ public abstract class AbstractSubjectSyn
             return Collections.<SyncResult>emptyList();
         }
 
+        final AbstractSubjectTO subjectTO =
+                connObjectUtil.getSubjectTO(delta.getObject(), 
profile.getSyncTask(), attrUtil);
+
+        // Attributable transformation (if configured)
+        AbstractSubjectTO transformed = attrTransformer.transform(subjectTO);
+        LOG.debug("Transformed: {}", transformed);
+
         final SyncResult result = new SyncResult();
         result.setOperation(ResourceOperation.CREATE);
         result.setSubjectType(attrUtil.getType());
         result.setStatus(SyncResult.Status.SUCCESS);
 
-        // Attributable transformation (if configured)
-        AbstractSubjectTO actual = attrTransformer.transform(subjectTO);
-        LOG.debug("Transformed: {}", actual);
-
-        result.setName(getName(actual));
+        result.setName(getName(transformed));
 
-        if (dryRun) {
+        if (profile.isDryRun()) {
             result.setId(0L);
         } else {
             SyncDelta _delta = delta;
             for (SyncActions action : profile.getActions()) {
-                _delta = action.beforeCreate(this.getProfile(), _delta, 
subjectTO);
+                _delta = action.beforeProvision(this.getProfile(), _delta, 
transformed);
             }
 
-            Object output;
-            Result resultStatus;
+            create(transformed, _delta, attrUtil, "provision", result);
+        }
 
-            try {
-                actual = create(actual, _delta, result);
-                result.setName(getName(actual));
-                output = actual;
-                resultStatus = Result.SUCCESS;
-            } catch (PropagationException e) {
-                // A propagation failure doesn't imply a synchronization 
failure.
-                // The propagation exception status will be reported into the 
propagation task execution.
-                LOG.error("Could not propagate {} {}", attrUtil.getType(), 
_delta.getUid().getUidValue(), e);
-                output = e;
-                resultStatus = Result.FAILURE;
-            } catch (Exception e) {
-                result.setStatus(SyncResult.Status.FAILURE);
-                result.setMessage(ExceptionUtils.getRootCauseMessage(e));
-                LOG.error("Could not create {} {} ", attrUtil.getType(), 
_delta.getUid().getUidValue(), e);
-                output = e;
-                resultStatus = Result.FAILURE;
-            }
+        return Collections.<SyncResult>singletonList(result);
+    }
+
+    private void create(
+            final AbstractSubjectTO subjectTO,
+            final SyncDelta delta,
+            final AttributableUtil attrUtil,
+            final String operation,
+            final SyncResult result)
+            throws JobExecutionException {
+
+        Object output;
+        Result resultStatus;
+
+        try {
+            AbstractSubjectTO actual = create(subjectTO, delta, result);
+            result.setName(getName(actual));
+            output = actual;
+            resultStatus = Result.SUCCESS;
 
             for (SyncActions action : profile.getActions()) {
-                action.after(this.getProfile(), _delta, actual, result);
+                action.after(this.getProfile(), delta, actual, result);
             }
-
-            audit(operation, resultStatus, null, output, _delta);
+        } catch (PropagationException e) {
+            // A propagation failure doesn't imply a synchronization failure.
+            // The propagation exception status will be reported into the 
propagation task execution.
+            LOG.error("Could not propagate {} {}", attrUtil.getType(), 
delta.getUid().getUidValue(), e);
+            output = e;
+            resultStatus = Result.FAILURE;
+        } catch (Exception e) {
+            result.setStatus(SyncResult.Status.FAILURE);
+            result.setMessage(ExceptionUtils.getRootCauseMessage(e));
+            LOG.error("Could not create {} {} ", attrUtil.getType(), 
delta.getUid().getUidValue(), e);
+            output = e;
+            resultStatus = Result.FAILURE;
         }
 
-        return Collections.singletonList(result);
+        audit(operation, resultStatus, null, output, delta);
     }
 
-    protected List<SyncResult> update(SyncDelta delta, final List<Long> 
subjects, final AttributableUtil attrUtil,
-            final boolean dryRun)
+    protected List<SyncResult> update(SyncDelta delta, final List<Long> 
subjects, final AttributableUtil attrUtil)
             throws JobExecutionException {
 
         if (!profile.getSyncTask().isPerformUpdate()) {
@@ -233,7 +252,7 @@ public abstract class AbstractSubjectSyn
                 result.setName(getName(before));
             }
 
-            if (!dryRun) {
+            if (!profile.isDryRun()) {
                 if (before == null) {
                     resultStatus = Result.FAILURE;
                     output = null;
@@ -284,8 +303,7 @@ public abstract class AbstractSubjectSyn
             SyncDelta delta,
             final List<Long> subjects,
             final AttributableUtil attrUtil,
-            final boolean unlink,
-            final boolean dryRun)
+            final boolean unlink)
             throws JobExecutionException {
 
         if (!profile.getSyncTask().isPerformUpdate()) {
@@ -316,7 +334,7 @@ public abstract class AbstractSubjectSyn
                 result.setMessage(String.format("Subject '%s(%d)' not found", 
attrUtil.getType().name(), id));
             }
 
-            if (!dryRun) {
+            if (!profile.isDryRun()) {
                 if (before == null) {
                     resultStatus = Result.FAILURE;
                     output = null;
@@ -369,8 +387,7 @@ public abstract class AbstractSubjectSyn
             SyncDelta delta,
             final List<Long> subjects,
             final AttributableUtil attrUtil,
-            final boolean unlink,
-            final boolean dryRun)
+            final boolean unlink)
             throws JobExecutionException {
 
         if (!profile.getSyncTask().isPerformUpdate()) {
@@ -401,7 +418,7 @@ public abstract class AbstractSubjectSyn
                 result.setMessage(String.format("Subject '%s(%d)' not found", 
attrUtil.getType().name(), id));
             }
 
-            if (!dryRun) {
+            if (!profile.isDryRun()) {
                 if (before == null) {
                     resultStatus = Result.FAILURE;
                     output = null;
@@ -449,8 +466,7 @@ public abstract class AbstractSubjectSyn
         return updResults;
     }
 
-    protected List<SyncResult> delete(SyncDelta delta, final List<Long> 
subjects, final AttributableUtil attrUtil,
-            final boolean dryRun)
+    protected List<SyncResult> delete(SyncDelta delta, final List<Long> 
subjects, final AttributableUtil attrUtil)
             throws JobExecutionException {
 
         if (!profile.getSyncTask().isPerformDelete()) {
@@ -478,7 +494,7 @@ public abstract class AbstractSubjectSyn
                 result.setSubjectType(attrUtil.getType());
                 result.setStatus(SyncResult.Status.SUCCESS);
 
-                if (!dryRun) {
+                if (!profile.isDryRun()) {
                     for (SyncActions action : profile.getActions()) {
                         delta = action.beforeDelete(this.getProfile(), delta, 
before);
                     }
@@ -559,10 +575,10 @@ public abstract class AbstractSubjectSyn
                 if (subjectIds.isEmpty()) {
                     switch (profile.getSyncTask().getUnmatchingRule()) {
                         case ASSIGN:
-                            profile.getResults().addAll(assign(delta, 
attrUtil, profile.isDryRun()));
+                            profile.getResults().addAll(assign(delta, 
attrUtil));
                             break;
                         case PROVISION:
-                            profile.getResults().addAll(create(delta, 
attrUtil, profile.isDryRun()));
+                            profile.getResults().addAll(create(delta, 
attrUtil));
                             break;
                         default:
                         // do nothing
@@ -570,21 +586,19 @@ public abstract class AbstractSubjectSyn
                 } else {
                     switch (profile.getSyncTask().getMatchingRule()) {
                         case UPDATE:
-                            profile.getResults().addAll(update(delta, 
subjectIds, attrUtil, profile.isDryRun()));
+                            profile.getResults().addAll(update(delta, 
subjectIds, attrUtil));
                             break;
                         case DEPROVISION:
-                            profile.getResults().addAll(
-                                    deprovision(delta, subjectIds, attrUtil, 
false, profile.isDryRun()));
+                            profile.getResults().addAll(deprovision(delta, 
subjectIds, attrUtil, false));
                             break;
                         case UNASSIGN:
-                            profile.getResults().addAll(
-                                    deprovision(delta, subjectIds, attrUtil, 
true, profile.isDryRun()));
+                            profile.getResults().addAll(deprovision(delta, 
subjectIds, attrUtil, true));
                             break;
                         case LINK:
-                            profile.getResults().addAll(link(delta, 
subjectIds, attrUtil, false, profile.isDryRun()));
+                            profile.getResults().addAll(link(delta, 
subjectIds, attrUtil, false));
                             break;
                         case UNLINK:
-                            profile.getResults().addAll(link(delta, 
subjectIds, attrUtil, true, profile.isDryRun()));
+                            profile.getResults().addAll(link(delta, 
subjectIds, attrUtil, true));
                             break;
                         default:
                         // do nothing
@@ -594,7 +608,7 @@ public abstract class AbstractSubjectSyn
                 if (subjectIds.isEmpty()) {
                     LOG.debug("No match found for deletion");
                 } else {
-                    profile.getResults().addAll(delete(delta, subjectIds, 
attrUtil, profile.isDryRun()));
+                    profile.getResults().addAll(delete(delta, subjectIds, 
attrUtil));
                 }
             }
         } catch (IllegalStateException e) {

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/DBPasswordSyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/DBPasswordSyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/DBPasswordSyncActions.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/DBPasswordSyncActions.java
 Wed Jul  2 08:46:38 2014
@@ -61,7 +61,7 @@ public class DBPasswordSyncActions exten
 
     @Transactional(readOnly = true)
     @Override
-    public <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+    public <T extends AbstractAttributableTO> SyncDelta beforeProvision(
             final SyncProfile<?, ?> profile,
             final SyncDelta delta,
             final T subject) throws JobExecutionException {

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPMembershipSyncActions.java
 Wed Jul  2 08:46:38 2014
@@ -119,7 +119,7 @@ public class LDAPMembershipSyncActions e
 
     /**
      * Keep track of members of the role being updated <b>before</b> actual 
update takes place. This is not needed on
-     * <ul> <li>beforeCreate() - because the synchronizing role does not exist 
yet on Syncope</li> <li>beforeDelete() -
+     * <ul> <li>beforeProvision() - because the synchronizing role does not 
exist yet on Syncope</li> <li>beforeDelete() -
      * because role delete cascades as membership removal for all users 
involved</li> </ul>
      *
      * {@inheritDoc}
@@ -298,7 +298,6 @@ public class LDAPMembershipSyncActions e
             final SyncDelta delta,
             final T subject,
             final SyncResult result) throws JobExecutionException {
-
         if (!(profile.getSyncTask() instanceof SyncTask)) {
             return;
         }

Modified: 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
 (original)
+++ 
syncope/trunk/core/src/main/java/org/apache/syncope/core/sync/impl/LDAPPasswordSyncActions.java
 Wed Jul  2 08:46:38 2014
@@ -54,7 +54,7 @@ public class LDAPPasswordSyncActions ext
 
     @Transactional(readOnly = true)
     @Override
-    public <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+    public <T extends AbstractAttributableTO> SyncDelta beforeProvision(
             final SyncProfile<?, ?> profile,
             final SyncDelta delta,
             final T subject) throws JobExecutionException {

Modified: 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
 (original)
+++ 
syncope/trunk/core/src/test/java/org/apache/syncope/core/persistence/dao/TaskTest.java
 Wed Jul  2 08:46:38 2014
@@ -67,7 +67,7 @@ public class TaskTest extends AbstractDA
         assertEquals(4, taskDAO.findAll(PropagationTask.class).size());
         assertEquals(1, taskDAO.findAll(NotificationTask.class).size());
         assertEquals(1, taskDAO.findAll(SchedTask.class).size());
-        assertEquals(6, taskDAO.findAll(SyncTask.class).size());
+        assertEquals(7, taskDAO.findAll(SyncTask.class).size());
         assertEquals(11, taskDAO.findAll(PushTask.class).size());
     }
 

Modified: 
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
 (original)
+++ 
syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/TaskTestITCase.java
 Wed Jul  2 08:46:38 2014
@@ -68,7 +68,6 @@ import org.apache.syncope.common.types.T
 import org.apache.syncope.common.types.SubjectType;
 import org.apache.syncope.common.types.UnmatchingRule;
 import org.apache.syncope.common.wrap.PushActionClass;
-import org.apache.syncope.core.sync.TestSyncActions;
 import org.apache.syncope.core.sync.TestSyncRule;
 import org.apache.syncope.core.sync.impl.SyncJob;
 import org.apache.syncope.core.workflow.ActivitiDetector;
@@ -325,33 +324,6 @@ public class TaskTestITCase extends Abst
             int usersPre = userService.list(1, 1).getTotalCount();
             assertNotNull(usersPre);
 
-            // Update sync task
-            SyncTaskTO task = taskService.read(SYNC_TASK_ID);
-            assertNotNull(task);
-
-            // add custom SyncJob actions
-            task.getActionsClassNames().add(TestSyncActions.class.getName());
-
-            // add user template
-            UserTO template = new UserTO();
-            template.getAttrs().add(attributeTO("type",
-                    "email == 'te...@syncope.apache.org'? 'TYPE_8': 
'TYPE_OTHER'"));
-            template.getDerAttrs().add(attributeTO("cn", null));
-            template.getResources().add(RESOURCE_NAME_TESTDB);
-
-            MembershipTO membershipTO = new MembershipTO();
-            membershipTO.setRoleId(8L);
-            membershipTO.getAttrs().add(attributeTO("subscriptionDate", 
"'2009-08-18T16:33:12.203+0200'"));
-            template.getMemberships().add(membershipTO);
-
-            task.setUserTemplate(template);
-
-            taskService.update(task.getId(), task);
-            SyncTaskTO actual = taskService.read(task.getId());
-            assertNotNull(actual);
-            assertEquals(task.getId(), actual.getId());
-            assertEquals(TestSyncActions.class.getName(), 
actual.getActionsClassNames().get(0));
-
             execSyncTask(SYNC_TASK_ID, 50, false);
 
             // after execution of the sync task the user data should be synced 
from
@@ -793,32 +765,7 @@ public class TaskTestITCase extends Abst
             assertEquals(1, userTO.getPropagationStatusTOs().size());
             
assertTrue(userTO.getPropagationStatusTOs().get(0).getStatus().isSuccessful());
 
-            // update sync task
-            SyncTaskTO task = taskService.read(SYNC_TASK_ID);
-            assertNotNull(task);
-
-            // add user template
-            AttributeTO newAttrTO = new AttributeTO();
-            newAttrTO.setSchema("firstname");
-            newAttrTO.getValues().add("");
-
-            UserTO template = new UserTO();
-            template.getAttrs().add(newAttrTO);
-            template.getAttrs().add(attributeTO("userId", "'test'"));
-            template.getAttrs().add(attributeTO("fullname", "'test'"));
-            template.getAttrs().add(attributeTO("surname", "'test'"));
-            template.getResources().add(RESOURCE_NAME_TESTDB);
-
-            task.setUserTemplate(template);
-
-            taskService.update(task.getId(), task);
-            SyncTaskTO actual = taskService.read(task.getId());
-            assertNotNull(actual);
-            assertEquals(task.getId(), actual.getId());
-
-            TaskExecTO taskExecTO = execSyncTask(SYNC_TASK_ID, 50, false);
-            assertNotNull(actual);
-            assertEquals(task.getId(), actual.getId());
+            TaskExecTO taskExecTO = execSyncTask(24L, 50, false);
 
             assertNotNull(taskExecTO.getStatus());
             
assertTrue(PropagationTaskExecStatus.valueOf(taskExecTO.getStatus()).isSuccessful());

Modified: 
syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- 
syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java
 (original)
+++ 
syncope/trunk/core/src/test/java/org/apache/syncope/core/sync/TestSyncActions.java
 Wed Jul  2 08:46:38 2014
@@ -30,7 +30,7 @@ public class TestSyncActions extends Def
     private int counter = 0;
 
     @Override
-    public <T extends AbstractAttributableTO> SyncDelta beforeCreate(
+    public <T extends AbstractAttributableTO> SyncDelta beforeProvision(
             final SyncProfile<?, ?> profile,
             final SyncDelta delta,
             final T subject) throws JobExecutionException {

Modified: syncope/trunk/core/src/test/resources/content.xml
URL: 
http://svn.apache.org/viewvc/syncope/trunk/core/src/test/resources/content.xml?rev=1607297&r1=1607296&r2=1607297&view=diff
==============================================================================
--- syncope/trunk/core/src/test/resources/content.xml (original)
+++ syncope/trunk/core/src/test/resources/content.xml Wed Jul  2 08:46:38 2014
@@ -872,7 +872,10 @@ under the License.
         
xmlAttributes="%3Cset%3E%0A++%3Corg.identityconnectors.framework.common.objects.Name%3E%0A++++%3Cname%3E__NAME__%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Cstring%3EuserId%3C%2Fstring%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Name%3E%0A++%3Corg.identityconnectors.framework.common.objects.Attribute%3E%0A++++%3Cname%3E__PASSWORD__%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Corg.identityconnectors.common.security.GuardedString%3E%0A++++++++++%3C__readOnly%3Efalse%3C%2F__readOnly%3E%0A++++++++++%3C__disposed%3Efalse%3C%2F__disposed%3E%0A++++++++++%3C__en
 
cryptedBytes%3EQTOgwEhIHqtAI%2FYlgDhYc37esEF8VLDMU2IY1ciltrg%3D%3C%2F__encryptedBytes%3E%0A++++++++++%3C__base64SHA1Hash%3EW5%2FrwtdCnI8gAnIUhKcahMEnMMc%3D%3C%2F__base64SHA1Hash%3E%0A++++++++%3C%2Forg.identityconnectors.common.security.GuardedString%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Attribute%3E%0A++%3Corg.identityconnectors.framework.common.objects.Attribute%3E%0A++++%3Cname%3Etype%3C%2Fname%3E%0A++++%3Cvalue+class%3D%22java.util.Collections%24UnmodifiableRandomAccessList%22+resolves-to%3D%22java.util.Collections%24UnmodifiableList%22%3E%0A++++++%3Cc+class%3D%22list%22%3E%0A++++++++%3Cstring%3Etype%3C%2Fstring%3E%0A++++++%3C%2Fc%3E%0A++++++%3Clist+reference%3D%22..%2Fc%22%2F%3E%0A++++%3C%2Fvalue%3E%0A++%3C%2Forg.identityconnectors.framework.common.objects.Attribute%3E%0A%3C%2Fset%3E"/>
   <Task DTYPE="SyncTask" id="4" name="CSV Task" resource_name="resource-csv"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" 
fullReconciliation="0"
-        jobClassName="org.apache.syncope.core.sync.impl.SyncJob"/>
+        jobClassName="org.apache.syncope.core.sync.impl.SyncJob"
+        
userTemplate="%3Corg.apache.syncope.common.to.UserTO%3E%0A++%3Cattrs%3E%0A++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3Cschema%3Etype%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cstring%3Eemail+%3D%3D+%26apos%3Btest8%40syncope.apache.org%26apos%3B%3F+%26apos%3BTYPE_8%26apos%3B%3A+%26apos%3BTYPE_OTHER%26apos%3B%3C%2Fstring%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++%3C%2Fattrs%3E%0A++%3Cid%3E0%3C%2Fid%3E%0A++%3CderAttrs%3E%0A++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3Cschema%3Ecn%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cnull%2F%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++%3C%2FderAttrs%3E%0A++%3CvirAttrs%2F%3E%0A++%3Cresources%3E%0A++++%3Cstring%3Eresource-testdb%3C%2Fstring%3E%0A++%3C%2Fresources%3E%0A++%3CpropagationStatusTOs%2F%3E%0A++%3Cmemberships%3E%0
 
A++++%3Corg.apache.syncope.common.to.MembershipTO%3E%0A++++++%3Cattrs%3E%0A++++++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++++++%3Cschema%3EsubscriptionDate%3C%2Fschema%3E%0A++++++++++%3Cvalues%3E%0A++++++++++++%3Cstring%3E%26apos%3B2009-08-18T16%3A33%3A12.203%2B0200%26apos%3B%3C%2Fstring%3E%0A++++++++++%3C%2Fvalues%3E%0A++++++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3C%2Fattrs%3E%0A++++++%3Cid%3E0%3C%2Fid%3E%0A++++++%3CderAttrs%2F%3E%0A++++++%3CvirAttrs%2F%3E%0A++++++%3CroleId%3E8%3C%2FroleId%3E%0A++++%3C%2Forg.apache.syncope.common.to.MembershipTO%3E%0A++%3C%2Fmemberships%3E%0A%3C%2Forg.apache.syncope.common.to.UserTO%3E"
+        
roleTemplate="%3Corg.apache.syncope.common.to.RoleTO%3E%0A++%3Cattrs%2F%3E%0A++%3Cid%3E0%3C%2Fid%3E%0A++%3CderAttrs%2F%3E%0A++%3CvirAttrs%2F%3E%0A++%3Cresources%2F%3E%0A++%3CpropagationStatusTOs%2F%3E%0A++%3Cparent%3E0%3C%2Fparent%3E%0A++%3CinheritOwner%3Efalse%3C%2FinheritOwner%3E%0A++%3CinheritTemplates%3Efalse%3C%2FinheritTemplates%3E%0A++%3CinheritAttrs%3Efalse%3C%2FinheritAttrs%3E%0A++%3CinheritDerAttrs%3Efalse%3C%2FinheritDerAttrs%3E%0A++%3CinheritVirAttrs%3Efalse%3C%2FinheritVirAttrs%3E%0A++%3CinheritPasswordPolicy%3Efalse%3C%2FinheritPasswordPolicy%3E%0A++%3CinheritAccountPolicy%3Efalse%3C%2FinheritAccountPolicy%3E%0A++%3Centitlements%2F%3E%0A++%3CrAttrTemplates%2F%3E%0A++%3CrDerAttrTemplates%2F%3E%0A++%3CrVirAttrTemplates%2F%3E%0A++%3CmAttrTemplates%2F%3E%0A++%3CmDerAttrTemplates%2F%3E%0A++%3CmVirAttrTemplates%2F%3E%0A%3C%2Forg.apache.syncope.common.to.RoleTO%3E"/>
+  <SyncTask_actionsClassNames SyncTask_id="4" 
element="org.apache.syncope.core.sync.TestSyncActions"/>
   <Task DTYPE="SchedTask" id="5" name="SampleJob Task" 
jobClassName="org.apache.syncope.core.quartz.SampleJob" cronExpression="0 0 0 1 
* ?"/>
   <Task DTYPE="PropagationTask" id="6" propagationMode="TWO_PHASES" 
propagationOperation="UPDATE"
         objectClassName="__ACCOUNT__" 
resource_name="ws-target-resource-nopropagation" subjectType="USER" 
subjectId="1"
@@ -944,6 +947,11 @@ under the License.
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"
         jobClassName="org.apache.syncope.core.sync.impl.PushJob" 
unmatchingRule="ASSIGN" matchingRule="UNLINK" 
         userFilter="username==_NO_ONE_" roleFilter="name==citizen"/>
+  <Task DTYPE="SyncTask" id="24" name="CSV Task 2" resource_name="resource-csv"
+        performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" 
fullReconciliation="0"
+        jobClassName="org.apache.syncope.core.sync.impl.SyncJob"
+        
userTemplate="%3Corg.apache.syncope.common.to.UserTO%3E%0A++%3Cattrs%3E%0A++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3Cschema%3Efirstname%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cstring%3E%3C%2Fstring%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3Cschema%3EuserId%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cstring%3E%26apos%3Btest%26apos%3B%3C%2Fstring%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++++%3Corg.apache.syncope.common.to.AttributeTO%3E%0A++++++%3Cschema%3Efullname%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cstring%3E%26apos%3Btest%26apos%3B%3C%2Fstring%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++++%3Corg.apache.syncope
 
.common.to.AttributeTO%3E%0A++++++%3Cschema%3Esurname%3C%2Fschema%3E%0A++++++%3Cvalues%3E%0A++++++++%3Cstring%3E%26apos%3Btest%26apos%3B%3C%2Fstring%3E%0A++++++%3C%2Fvalues%3E%0A++++++%3Creadonly%3Efalse%3C%2Freadonly%3E%0A++++%3C%2Forg.apache.syncope.common.to.AttributeTO%3E%0A++%3C%2Fattrs%3E%0A++%3Cid%3E0%3C%2Fid%3E%0A++%3CderAttrs%2F%3E%0A++%3CvirAttrs%2F%3E%0A++%3Cresources%3E%0A++++%3Cstring%3Eresource-testdb%3C%2Fstring%3E%0A++%3C%2Fresources%3E%0A++%3CpropagationStatusTOs%2F%3E%0A++%3Cmemberships%2F%3E%0A%3C%2Forg.apache.syncope.common.to.UserTO%3E"
+        
roleTemplate="%3Corg.apache.syncope.common.to.RoleTO%3E%0A++%3Cattrs%2F%3E%0A++%3Cid%3E0%3C%2Fid%3E%0A++%3CderAttrs%2F%3E%0A++%3CvirAttrs%2F%3E%0A++%3Cresources%2F%3E%0A++%3CpropagationStatusTOs%2F%3E%0A++%3Cparent%3E0%3C%2Fparent%3E%0A++%3CinheritOwner%3Efalse%3C%2FinheritOwner%3E%0A++%3CinheritTemplates%3Efalse%3C%2FinheritTemplates%3E%0A++%3CinheritAttrs%3Efalse%3C%2FinheritAttrs%3E%0A++%3CinheritDerAttrs%3Efalse%3C%2FinheritDerAttrs%3E%0A++%3CinheritVirAttrs%3Efalse%3C%2FinheritVirAttrs%3E%0A++%3CinheritPasswordPolicy%3Efalse%3C%2FinheritPasswordPolicy%3E%0A++%3CinheritAccountPolicy%3Efalse%3C%2FinheritAccountPolicy%3E%0A++%3Centitlements%2F%3E%0A++%3CrAttrTemplates%2F%3E%0A++%3CrDerAttrTemplates%2F%3E%0A++%3CrVirAttrTemplates%2F%3E%0A++%3CmAttrTemplates%2F%3E%0A++%3CmDerAttrTemplates%2F%3E%0A++%3CmVirAttrTemplates%2F%3E%0A%3C%2Forg.apache.syncope.common.to.RoleTO%3E"/>
       
   <Notification id="1" sender="t...@syncope.apache.org" subject="Test subject" 
template="test" selfAsRecipient="0" traceLevel="ALL"
                 userAbout="fullname==*o*;fullname==*i*"


Reply via email to