You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/12/18 16:34:54 UTC

[1/2] syncope git commit: [SYNCOPE-679] Cleanup and fixing date handling in XML

Repository: syncope
Updated Branches:
  refs/heads/master 1b5839b40 -> c3b1c7e66


[SYNCOPE-679] Cleanup and fixing date handling in XML


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/907be4ae
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/907be4ae
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/907be4ae

Branch: refs/heads/master
Commit: 907be4ae4efedf3821a5d8779dce4ee3da7b4acd
Parents: 1b5839b
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Dec 18 16:25:56 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Dec 18 16:25:56 2015 +0100

----------------------------------------------------------------------
 .../client/console/rest/ReportRestClient.java   |  2 +-
 .../client/console/rest/TaskRestClient.java     |  2 +-
 .../syncope/common/lib/to/AbstractExecTO.java   |  6 ++--
 .../common/lib/to/AbstractStartEndBean.java     | 20 ++++++-------
 .../syncope/common/lib/to/SchedTaskTO.java      | 10 +++----
 .../common/rest/api/beans/ExecuteQuery.java     | 16 +++++-----
 .../syncope/core/logic/AbstractJobLogic.java    |  6 ++--
 .../apache/syncope/core/logic/ReportLogic.java  | 10 +++----
 .../apache/syncope/core/logic/TaskLogic.java    | 19 +++++++-----
 .../core/logic/init/JobInstanceLoaderImpl.java  | 20 ++++++-------
 .../notification/NotificationJobDelegate.java   |  4 +--
 .../core/logic/report/ReportJobDelegate.java    |  4 +--
 .../src/main/resources/report/report2csv.xsl    |  4 +--
 .../src/main/resources/report/report2fo.xsl     |  8 ++---
 .../src/main/resources/report/report2html.xsl   |  8 ++---
 .../core/persistence/api/dao/TaskExecDAO.java   |  2 +-
 .../core/persistence/api/entity/Exec.java       | 23 ++++++++-------
 .../persistence/api/entity/task/SchedTask.java  |  4 +--
 .../persistence/jpa/dao/JPAReportExecDAO.java   | 12 ++++----
 .../persistence/jpa/dao/JPATaskExecDAO.java     | 20 ++++++-------
 .../persistence/jpa/entity/AbstractExec.java    | 31 +++++++++-----------
 .../jpa/entity/task/JPASchedTask.java           | 10 +++----
 .../jpa/entity/task/JPATaskExec.java            |  4 +--
 .../persistence/jpa/inner/TaskExecTest.java     |  4 +--
 .../core/persistence/jpa/outer/ReportTest.java  |  4 +--
 .../core/persistence/jpa/outer/TaskTest.java    |  6 ++--
 .../test/resources/domains/MasterContent.xml    |  6 ++--
 .../provisioning/api/job/JobInstanceLoader.java |  4 +--
 .../java/data/ReportDataBinderImpl.java         |  8 ++---
 .../java/data/TaskDataBinderImpl.java           |  6 ++--
 .../java/job/AbstractSchedTaskJobDelegate.java  |  4 +--
 .../AbstractPropagationTaskExecutor.java        |  6 ++--
 .../rest/cxf/service/ReportServiceImpl.java     |  2 +-
 .../core/rest/cxf/service/TaskServiceImpl.java  |  2 +-
 .../fit/core/reference/SchedTaskITCase.java     | 11 ++++---
 35 files changed, 155 insertions(+), 153 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
index 99ed25b..f10e5b8 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
@@ -59,7 +59,7 @@ public class ReportRestClient extends BaseRestClient implements ExecutionRestCli
 
     @Override
     public void startExecution(final long reportKey, final Date start) {
-        getService(ReportService.class).execute(new ExecuteQuery.Builder().key(reportKey).start(start).build());
+        getService(ReportService.class).execute(new ExecuteQuery.Builder().key(reportKey).startAt(start).build());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
index 4f9f913..7de2253 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
@@ -118,7 +118,7 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien
 
     public void startExecution(final long taskKey, final Date start, final boolean dryRun) {
         getService(TaskService.class).execute(
-                new ExecuteQuery.Builder().key(taskKey).start(start).dryRun(dryRun).build());
+                new ExecuteQuery.Builder().key(taskKey).startAt(start).dryRun(dryRun).build());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
index eed8453..c4b5fe5 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
@@ -25,11 +25,11 @@ public class AbstractExecTO extends AbstractStartEndBean {
 
     private static final long serialVersionUID = -4621191979198357081L;
 
-    protected long key;
+    private long key;
 
-    protected String status;
+    private String status;
 
-    protected String message;
+    private String message;
 
     public long getKey() {
         return key;

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
index badb845..88962c5 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
@@ -27,9 +27,9 @@ public class AbstractStartEndBean extends AbstractBaseBean {
 
     private static final long serialVersionUID = 2399577415544539917L;
 
-    protected Date start;
+    private Date start;
 
-    protected Date end;
+    private Date end;
 
     public Date getStart() {
         return start == null
@@ -37,10 +37,10 @@ public class AbstractStartEndBean extends AbstractBaseBean {
                 : new Date(start.getTime());
     }
 
-    public void setStartDate(final Date start) {
-        if (start != null) {
-            this.start = new Date(start.getTime());
-        }
+    public void setStart(final Date start) {
+        this.start = start == null
+                ? null
+                : new Date(start.getTime());
     }
 
     public Date getEnd() {
@@ -49,9 +49,9 @@ public class AbstractStartEndBean extends AbstractBaseBean {
                 : new Date(end.getTime());
     }
 
-    public void setEndDate(final Date end) {
-        if (end != null) {
-            this.end = new Date(end.getTime());
-        }
+    public void setEnd(final Date end) {
+        this.end = end == null
+                ? null
+                : new Date(end.getTime());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
index aa2abe5..3fab961 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
@@ -31,7 +31,7 @@ public class SchedTaskTO extends AbstractTaskTO {
 
     private static final long serialVersionUID = -5722284116974636425L;
 
-    private Date start;
+    private Date startAt;
 
     private String cronExpression;
 
@@ -47,12 +47,12 @@ public class SchedTaskTO extends AbstractTaskTO {
 
     private boolean active;
 
-    public Date getStart() {
-        return start == null ? null : new Date(start.getTime());
+    public Date getStartAt() {
+        return startAt == null ? null : new Date(startAt.getTime());
     }
 
-    public void setStart(final Date start) {
-        this.start = start == null ? null : new Date(start.getTime());
+    public void setStartAt(final Date start) {
+        this.startAt = start == null ? null : new Date(start.getTime());
     }
 
     public String getCronExpression() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ExecuteQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ExecuteQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ExecuteQuery.java
index a7bd753..c550e78 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ExecuteQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/ExecuteQuery.java
@@ -38,8 +38,8 @@ public class ExecuteQuery extends AbstractBaseBean {
             return this;
         }
 
-        public Builder start(final Date date) {
-            instance.setStart(date);
+        public Builder startAt(final Date date) {
+            instance.setStartAt(date);
             return this;
         }
 
@@ -55,7 +55,7 @@ public class ExecuteQuery extends AbstractBaseBean {
 
     private Long key;
 
-    private Date start;
+    private Date startAt;
 
     private Boolean dryRun;
 
@@ -69,13 +69,13 @@ public class ExecuteQuery extends AbstractBaseBean {
         this.key = key;
     }
 
-    public Date getStart() {
-        return start;
+    public Date getStartAt() {
+        return startAt;
     }
 
-    @QueryParam("start")
-    public void setStart(final Date start) {
-        this.start = start;
+    @QueryParam("startAt")
+    public void setStartAt(final Date startAt) {
+        this.startAt = startAt;
     }
 
     public Boolean getDryRun() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
index fb5648f..9dc4478 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
@@ -75,7 +75,7 @@ abstract class AbstractJobLogic<T extends AbstractBaseBean> extends AbstractTran
                                         jobExecTO.setKey(key);
                                         jobExecTO.
                                                 setStatus(scheduler.getScheduler().getTriggerState(t.getKey()).name());
-                                        jobExecTO.setStartDate(t.getStartTime());
+                                        jobExecTO.setStart(t.getStartTime());
 
                                         jobExecTOs.add(jobExecTO);
                                     }
@@ -101,7 +101,7 @@ abstract class AbstractJobLogic<T extends AbstractBaseBean> extends AbstractTran
                             setTaskOrReportKey(jobExecTO, key);
                             jobExecTO.setStatus(
                                     scheduler.getScheduler().getTriggerState(jec.getTrigger().getKey()).name());
-                            jobExecTO.setStartDate(jec.getFireTime());
+                            jobExecTO.setStart(jec.getFireTime());
 
                             jobExecTOs.add(jobExecTO);
                         }
@@ -128,7 +128,7 @@ abstract class AbstractJobLogic<T extends AbstractBaseBean> extends AbstractTran
                                     E jobExecTO = reference.newInstance();
                                     setTaskOrReportKey(jobExecTO, key);
                                     jobExecTO.setStatus(scheduler.getScheduler().getTriggerState(t.getKey()).name());
-                                    jobExecTO.setStartDate(t.getStartTime());
+                                    jobExecTO.setStart(t.getStartTime());
 
                                     jobExecTOs.add(jobExecTO);
                                 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index cafca4c..17323ed 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -164,8 +164,8 @@ public class ReportLogic extends AbstractJobLogic<ReportTO> {
             Map<String, Object> parameters = new HashMap<>();
             parameters.put("status", reportExec.getStatus());
             parameters.put("message", reportExec.getMessage());
-            parameters.put("startDate", reportExec.getStartDate());
-            parameters.put("endDate", reportExec.getEndDate());
+            parameters.put("start", reportExec.getStart());
+            parameters.put("end", reportExec.getEnd());
 
             switch (format) {
                 case HTML:
@@ -230,7 +230,7 @@ public class ReportLogic extends AbstractJobLogic<ReportTO> {
     }
 
     @PreAuthorize("hasRole('" + StandardEntitlement.REPORT_EXECUTE + "')")
-    public ReportExecTO execute(final Long key, final Date start) {
+    public ReportExecTO execute(final Long key, final Date startAt) {
         Report report = reportDAO.find(key);
         if (report == null) {
             throw new NotFoundException("Report " + key);
@@ -243,7 +243,7 @@ public class ReportLogic extends AbstractJobLogic<ReportTO> {
         }
 
         try {
-            jobInstanceLoader.registerJob(report, start);
+            jobInstanceLoader.registerJob(report, startAt);
 
             scheduler.getScheduler().triggerJob(new JobKey(JobNamer.getJobName(report), Scheduler.DEFAULT_GROUP));
         } catch (Exception e) {
@@ -256,7 +256,7 @@ public class ReportLogic extends AbstractJobLogic<ReportTO> {
 
         ReportExecTO result = new ReportExecTO();
         result.setReport(key);
-        result.setStartDate(new Date());
+        result.setStart(new Date());
         result.setStatus(ReportExecStatus.STARTED.name());
         result.setMessage("Job fired; waiting for results...");
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
index d7686ca..28206db 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
@@ -105,7 +105,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
         try {
             jobInstanceLoader.registerJob(
                     task,
-                    task.getStart(),
+                    task.getStartAt(),
                     confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
         } catch (Exception e) {
             LOG.error("While registering quartz job for task " + task.getKey(), e);
@@ -138,7 +138,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
         try {
             jobInstanceLoader.registerJob(
                     task,
-                    task.getStart(),
+                    task.getStartAt(),
                     confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
         } catch (Exception e) {
             LOG.error("While registering quartz job for task " + task.getKey(), e);
@@ -187,7 +187,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
     }
 
     @PreAuthorize("hasRole('" + StandardEntitlement.TASK_EXECUTE + "')")
-    public TaskExecTO execute(final Long taskKey, final Date start, final boolean dryRun) {
+    public TaskExecTO execute(final Long taskKey, final Date startAt, final boolean dryRun) {
         Task task = taskDAO.find(taskKey);
         if (task == null) {
             throw new NotFoundException("Task " + taskKey);
@@ -218,12 +218,12 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
                 try {
                     Map<String, Object> jobDataMap = jobInstanceLoader.registerJob(
                             (SchedTask) task,
-                            start,
+                            startAt,
                             confDAO.find("tasks.interruptMaxRetries", "1").getValues().get(0).getLongValue());
 
                     jobDataMap.put(TaskJob.DRY_RUN_JOBDETAIL_KEY, dryRun);
 
-                    if (start == null) {
+                    if (startAt == null) {
                         scheduler.getScheduler().triggerJob(
                                 new JobKey(JobNamer.getJobName(task), Scheduler.DEFAULT_GROUP),
                                 new JobDataMap(jobDataMap));
@@ -238,7 +238,7 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
 
                 result = new TaskExecTO();
                 result.setTask(taskKey);
-                result.setStartDate(new Date());
+                result.setStart(new Date());
                 result.setStatus("JOB_FIRED");
                 result.setMessage("Job fired; waiting for results...");
                 break;
@@ -279,7 +279,12 @@ public class TaskLogic extends AbstractJobLogic<AbstractTaskTO> {
     public List<TaskExecTO> listExecutions(
             final Long taskKey, final int page, final int size, final List<OrderByClause> orderByClauses) {
 
-        return CollectionUtils.collect(taskExecDAO.findAll(taskKey, page, size, orderByClauses),
+        Task task = taskDAO.find(taskKey);
+        if (task == null) {
+            throw new NotFoundException("Task " + taskKey);
+        }
+
+        return CollectionUtils.collect(taskExecDAO.findAll(task, page, size, orderByClauses),
                 new Transformer<TaskExec, TaskExecTO>() {
 
             @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/init/JobInstanceLoaderImpl.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/JobInstanceLoaderImpl.java b/core/logic/src/main/java/org/apache/syncope/core/logic/init/JobInstanceLoaderImpl.java
index 38ea584..dbcdd3f 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/init/JobInstanceLoaderImpl.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/init/JobInstanceLoaderImpl.java
@@ -92,7 +92,7 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
 
     private void registerJob(
             final String jobName, final Job jobInstance,
-            final String cronExpression, final Date start,
+            final String cronExpression, final Date startAt,
             final Map<String, Object> jobMap)
             throws SchedulerException, ParseException {
 
@@ -125,7 +125,7 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
                 usingJobData(new JobDataMap(jobMap));
 
         // 3. Trigger
-        if (cronExpression == null && start == null) {
+        if (cronExpression == null && startAt == null) {
             // Jobs added with no trigger must be durable
             scheduler.getScheduler().addJob(jobDetailBuilder.storeDurably().build(), true);
         } else {
@@ -134,16 +134,16 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
             if (cronExpression == null) {
                 triggerBuilder = TriggerBuilder.newTrigger().
                         withIdentity(JobNamer.getTriggerName(jobName)).
-                        startAt(start);
+                        startAt(startAt);
             } else {
                 triggerBuilder = TriggerBuilder.newTrigger().
                         withIdentity(JobNamer.getTriggerName(jobName)).
                         withSchedule(CronScheduleBuilder.cronSchedule(cronExpression));
 
-                if (start == null) {
+                if (startAt == null) {
                     triggerBuilder = triggerBuilder.startNow();
                 } else {
-                    triggerBuilder = triggerBuilder.startAt(start);
+                    triggerBuilder = triggerBuilder.startAt(startAt);
                 }
             }
 
@@ -177,7 +177,7 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
     }
 
     @Override
-    public Map<String, Object> registerJob(final SchedTask task, final Date start, final long interruptMaxRetries)
+    public Map<String, Object> registerJob(final SchedTask task, final Date startAt, final long interruptMaxRetries)
             throws SchedulerException, ParseException {
 
         TaskJob job = createSpringBean(TaskJob.class);
@@ -198,20 +198,20 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
                 JobNamer.getJobName(task),
                 job,
                 task.getCronExpression(),
-                start,
+                startAt,
                 jobMap);
         return jobMap;
     }
 
     @Override
-    public void registerJob(final Report report, final Date start) throws SchedulerException, ParseException {
+    public void registerJob(final Report report, final Date startAt) throws SchedulerException, ParseException {
         ReportJob job = createSpringBean(ReportJob.class);
         job.setReportKey(report.getKey());
 
         Map<String, Object> jobMap = new HashMap<>();
         jobMap.put(JobInstanceLoader.DOMAIN, AuthContextUtils.getDomain());
 
-        registerJob(JobNamer.getJobName(report), job, report.getCronExpression(), start, jobMap);
+        registerJob(JobNamer.getJobName(report), job, report.getCronExpression(), startAt, jobMap);
     }
 
     private void registerNotificationJob(final String cronExpression) throws SchedulerException, ParseException {
@@ -282,7 +282,7 @@ public class JobInstanceLoaderImpl implements JobInstanceLoader, SyncopeLoader {
                     tasks.addAll(taskDAO.<PushTask>findAll(TaskType.PUSH));
                     for (SchedTask task : tasks) {
                         try {
-                            registerJob(task, task.getStart(), notificationConf.getRight());
+                            registerJob(task, task.getStartAt(), notificationConf.getRight());
                         } catch (Exception e) {
                             LOG.error("While loading job instance for task " + task.getKey(), e);
                         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJobDelegate.java b/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJobDelegate.java
index df8c629..c09cca6 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJobDelegate.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/notification/NotificationJobDelegate.java
@@ -85,7 +85,7 @@ public class NotificationJobDelegate {
 
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
         execution.setTask(task);
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
 
         boolean retryPossible = true;
 
@@ -181,7 +181,7 @@ public class NotificationJobDelegate {
                             "Could not send notification to " + to, e);
                 }
 
-                execution.setEndDate(new Date());
+                execution.setEnd(new Date());
             }
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
index c3d2a36..1980858 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/report/ReportJobDelegate.java
@@ -89,7 +89,7 @@ public class ReportJobDelegate {
         // 1. create execution
         ReportExec execution = entityFactory.newEntity(ReportExec.class);
         execution.setStatus(ReportExecStatus.STARTED);
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
         execution.setReport(report);
         execution = reportExecDAO.save(execution);
 
@@ -188,7 +188,7 @@ public class ReportJobDelegate {
 
             execution.setExecResult(baos.toByteArray());
             execution.setMessage(reportExecutionMessage.toString());
-            execution.setEndDate(new Date());
+            execution.setEnd(new Date());
             reportExecDAO.save(execution);
         }
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/resources/report/report2csv.xsl
----------------------------------------------------------------------
diff --git a/core/logic/src/main/resources/report/report2csv.xsl b/core/logic/src/main/resources/report/report2csv.xsl
index a7a0a42..2036c68 100644
--- a/core/logic/src/main/resources/report/report2csv.xsl
+++ b/core/logic/src/main/resources/report/report2csv.xsl
@@ -26,8 +26,8 @@ under the License.
  
   <xsl:param name="status"/>
   <xsl:param name="message"/>
-  <xsl:param name="startDate"/>
-  <xsl:param name="endDate"/>
+  <xsl:param name="start"/>
+  <xsl:param name="end"/>
     
   <xsl:template match="/">
     <xsl:apply-templates/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/resources/report/report2fo.xsl
----------------------------------------------------------------------
diff --git a/core/logic/src/main/resources/report/report2fo.xsl b/core/logic/src/main/resources/report/report2fo.xsl
index e8dcefc..2ad86cc 100644
--- a/core/logic/src/main/resources/report/report2fo.xsl
+++ b/core/logic/src/main/resources/report/report2fo.xsl
@@ -27,8 +27,8 @@ under the License.
  
   <xsl:param name="status"/>
   <xsl:param name="message"/>
-  <xsl:param name="startDate"/>
-  <xsl:param name="endDate"/>
+  <xsl:param name="start"/>
+  <xsl:param name="end"/>
   
   <xsl:template match="/">
     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Helvetica" font-size="10pt">
@@ -71,7 +71,7 @@ under the License.
                 </fo:table-cell>
                 <fo:table-cell>
                   <fo:block font-size="18pt" font-weight="bold">
-                    <xsl:value-of select="$startDate"/>
+                    <xsl:value-of select="$start"/>
                   </fo:block>
                 </fo:table-cell>
               </fo:table-row>
@@ -81,7 +81,7 @@ under the License.
                 </fo:table-cell>
                 <fo:table-cell>
                   <fo:block font-size="18pt" font-weight="bold">
-                    <xsl:value-of select="$endDate"/>
+                    <xsl:value-of select="$end"/>
                   </fo:block>
                 </fo:table-cell>
               </fo:table-row>

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/logic/src/main/resources/report/report2html.xsl
----------------------------------------------------------------------
diff --git a/core/logic/src/main/resources/report/report2html.xsl b/core/logic/src/main/resources/report/report2html.xsl
index e18f70d..920a4f9 100644
--- a/core/logic/src/main/resources/report/report2html.xsl
+++ b/core/logic/src/main/resources/report/report2html.xsl
@@ -26,8 +26,8 @@ under the License.
  
   <xsl:param name="status"/>
   <xsl:param name="message"/>
-  <xsl:param name="startDate"/>
-  <xsl:param name="endDate"/>
+  <xsl:param name="start"/>
+  <xsl:param name="end"/>
   
   <xsl:template match="/">
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
@@ -53,7 +53,7 @@ under the License.
             </td>
             <td>
               <h2>
-                <xsl:value-of select="$startDate"/>
+                <xsl:value-of select="$start"/>
               </h2>
             </td>
           </tr>
@@ -63,7 +63,7 @@ under the License.
             </td>
             <td>
               <h2>
-                <xsl:value-of select="$endDate"/>
+                <xsl:value-of select="$end"/>
               </h2>
             </td>
           </tr>

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
index 7d10dd3..faa8a14 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/TaskExecDAO.java
@@ -37,7 +37,7 @@ public interface TaskExecDAO extends DAO<TaskExec, Long> {
 
     int count(Long taskKey);
 
-    List<TaskExec> findAll(Long taskKey, int page, int itemsPerPage, List<OrderByClause> orderByClauses);
+    <T extends Task> List<TaskExec> findAll(T task, int page, int itemsPerPage, List<OrderByClause> orderByClauses);
 
     TaskExec save(TaskExec execution);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
index 461b59f..8654b1d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Exec.java
@@ -22,16 +22,6 @@ import java.util.Date;
 
 public interface Exec extends Entity<Long> {
 
-    Date getEndDate();
-
-    String getMessage();
-
-    Date getStartDate();
-
-    String getStatus();
-
-    void setEndDate(Date endDate);
-
     /**
      * Set a message for this execution, taking care of replacing every null character with newline.
      *
@@ -39,7 +29,18 @@ public interface Exec extends Entity<Long> {
      */
     void setMessage(String message);
 
-    void setStartDate(Date startDate);
+    String getMessage();
 
     void setStatus(String status);
+
+    String getStatus();
+
+    void setStart(Date start);
+
+    Date getStart();
+
+    void setEnd(Date end);
+
+    Date getEnd();
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java
index 3e0aaa4..c88c23d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/task/SchedTask.java
@@ -34,9 +34,9 @@ public interface SchedTask extends Task {
 
     String getJobDelegateClassName();
 
-    Date getStart();
+    Date getStartAt();
 
-    void setStart(Date start);
+    void setStartAt(Date startAt);
 
     void setCronExpression(String cronExpression);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportExecDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportExecDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportExecDAO.java
index 8c1ada5..dc72759 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportExecDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAReportExecDAO.java
@@ -51,12 +51,12 @@ public class JPAReportExecDAO extends AbstractDAO<ReportExec, Long> implements R
 
     @Override
     public ReportExec findLatestStarted(final Report report) {
-        return findLatest(report, "startDate");
+        return findLatest(report, "start");
     }
 
     @Override
     public ReportExec findLatestEnded(final Report report) {
-        return findLatest(report, "endDate");
+        return findLatest(report, "end");
     }
 
     @Override
@@ -68,16 +68,16 @@ public class JPAReportExecDAO extends AbstractDAO<ReportExec, Long> implements R
                 append(" e WHERE e.report=:report ");
 
         if (startedBefore != null) {
-            queryString.append(" AND e.startDate < :startedBefore");
+            queryString.append(" AND e.start < :startedBefore");
         }
         if (startedAfter != null) {
-            queryString.append(" AND e.startDate > :startedAfter");
+            queryString.append(" AND e.start > :startedAfter");
         }
         if (endedBefore != null) {
-            queryString.append(" AND e.endDate < :endedBefore");
+            queryString.append(" AND e.end < :endedBefore");
         }
         if (endedAfter != null) {
-            queryString.append(" AND e.endDate > :endedAfter");
+            queryString.append(" AND e.end > :endedAfter");
         }
 
         TypedQuery<ReportExec> query = entityManager().createQuery(queryString.toString(), ReportExec.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
index d6b3a03..d88a2cb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskExecDAO.java
@@ -60,12 +60,12 @@ public class JPATaskExecDAO extends AbstractDAO<TaskExec, Long> implements TaskE
 
     @Override
     public <T extends Task> TaskExec findLatestStarted(final T task) {
-        return findLatest(task, "startDate");
+        return findLatest(task, "start");
     }
 
     @Override
     public <T extends Task> TaskExec findLatestEnded(final T task) {
-        return findLatest(task, "endDate");
+        return findLatest(task, "end");
     }
 
     @Override
@@ -77,16 +77,16 @@ public class JPATaskExecDAO extends AbstractDAO<TaskExec, Long> implements TaskE
                 append(" e WHERE e.task=:task ");
 
         if (startedBefore != null) {
-            queryString.append(" AND e.startDate < :startedBefore");
+            queryString.append(" AND e.start < :startedBefore");
         }
         if (startedAfter != null) {
-            queryString.append(" AND e.startDate > :startedAfter");
+            queryString.append(" AND e.start > :startedAfter");
         }
         if (endedBefore != null) {
-            queryString.append(" AND e.endDate < :endedBefore");
+            queryString.append(" AND e.end < :endedBefore");
         }
         if (endedAfter != null) {
-            queryString.append(" AND e.endDate > :endedAfter");
+            queryString.append(" AND e.end > :endedAfter");
         }
 
         TypedQuery<TaskExec> query = entityManager().createQuery(queryString.toString(), TaskExec.class);
@@ -135,15 +135,15 @@ public class JPATaskExecDAO extends AbstractDAO<TaskExec, Long> implements TaskE
     }
 
     @Override
-    public List<TaskExec> findAll(
-            final Long taskKey, final int page, final int itemsPerPage, final List<OrderByClause> orderByClauses) {
+    public <T extends Task> List<TaskExec> findAll(
+            final T task, final int page, final int itemsPerPage, final List<OrderByClause> orderByClauses) {
 
         String queryString =
-                "SELECT e FROM " + JPATaskExec.class.getSimpleName() + " e WHERE e.task.id=:taskKey "
+                "SELECT e FROM " + JPATaskExec.class.getSimpleName() + " e WHERE e.task=:task "
                 + toOrderByStatement(orderByClauses);
 
         TypedQuery<TaskExec> query = entityManager().createQuery(queryString, TaskExec.class);
-        query.setParameter("taskKey", taskKey);
+        query.setParameter("task", task);
 
         // page starts from 1, while setFirtResult() starts from 0
         query.setFirstResult(itemsPerPage * (page <= 0 ? 0 : page - 1));

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractExec.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractExec.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractExec.java
index 7b9deac..039d1f7 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractExec.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractExec.java
@@ -46,13 +46,13 @@ public abstract class AbstractExec extends AbstractEntity<Long> implements Exec
      */
     @NotNull
     @Temporal(TemporalType.TIMESTAMP)
-    protected Date startDate;
+    protected Date start;
 
     /**
      * End instant of this execution.
      */
     @Temporal(TemporalType.TIMESTAMP)
-    protected Date endDate;
+    protected Date end;
 
     @Override
     public String getStatus() {
@@ -75,33 +75,30 @@ public abstract class AbstractExec extends AbstractEntity<Long> implements Exec
     }
 
     @Override
-    public Date getEndDate() {
-        return endDate == null
+    public Date getStart() {
+        return start == null
                 ? null
-                : new Date(endDate.getTime());
+                : new Date(start.getTime());
     }
 
     @Override
-
-    public void setEndDate(final Date endDate) {
-        this.endDate = endDate == null
+    public void setStart(final Date start) {
+        this.start = start == null
                 ? null
-                : new Date(endDate.getTime());
+                : new Date(start.getTime());
     }
 
     @Override
-
-    public Date getStartDate() {
-        return startDate == null
+    public Date getEnd() {
+        return end == null
                 ? null
-                : new Date(startDate.getTime());
+                : new Date(end.getTime());
     }
 
     @Override
-
-    public void setStartDate(final Date startDate) {
-        this.startDate = startDate == null
+    public void setEnd(final Date end) {
+        this.end = end == null
                 ? null
-                : new Date(startDate.getTime());
+                : new Date(end.getTime());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java
index ce8b47a..c487560 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPASchedTask.java
@@ -39,7 +39,7 @@ public class JPASchedTask extends AbstractTask implements SchedTask {
     private static final long serialVersionUID = 7596236684832602180L;
 
     @Temporal(TemporalType.TIMESTAMP)
-    private Date start;
+    private Date startAt;
 
     private String cronExpression;
 
@@ -62,13 +62,13 @@ public class JPASchedTask extends AbstractTask implements SchedTask {
     }
 
     @Override
-    public Date getStart() {
-        return start;
+    public Date getStartAt() {
+        return startAt;
     }
 
     @Override
-    public void setStart(final Date start) {
-        this.start = start;
+    public void setStartAt(final Date start) {
+        this.startAt = start;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskExec.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskExec.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskExec.java
index 6ea4fb5..a1712bb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskExec.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskExec.java
@@ -68,8 +68,8 @@ public class JPATaskExec extends AbstractExec implements TaskExec {
     public String toString() {
         return new StringBuilder(getClass().getSimpleName()).append('{').
                 append("id=").append(id).append(", ").
-                append("startDate=").append(startDate).append(", ").
-                append("endDate=").append(endDate).append(", ").
+                append("start=").append(start).append(", ").
+                append("end=").append(end).append(", ").
                 append("task=").append(task).append(", ").
                 append("status=").append(status).append(", ").
                 append("message=").append(message).

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskExecTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskExecTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskExecTest.java
index 1ec8069..cdf4478 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskExecTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/TaskExecTest.java
@@ -76,8 +76,8 @@ public class TaskExecTest extends AbstractTest {
         faultyMessage = faultyMessage.replace('a', '\0');
 
         TaskExec exec = entityFactory.newEntity(TaskExec.class);
-        exec.setStartDate(new Date());
-        exec.setEndDate(new Date());
+        exec.setStart(new Date());
+        exec.setEnd(new Date());
         exec.setStatus(PropagationTaskExecStatus.SUCCESS.name());
         exec.setMessage(faultyMessage);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
index bdfa8f7..c627acf 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ReportTest.java
@@ -77,8 +77,8 @@ public class ReportTest extends AbstractTest {
 
         ReportExec reportExec = entityFactory.newEntity(ReportExec.class);
         reportExec.setReport(report);
-        reportExec.setStartDate(new Date());
-        reportExec.setEndDate(new Date());
+        reportExec.setStart(new Date());
+        reportExec.setEnd(new Date());
         reportExec.setStatus(ReportExecStatus.SUCCESS);
 
         report.add(reportExec);

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
index 7378728..4a62a6a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
@@ -126,7 +126,7 @@ public class TaskTest extends AbstractTest {
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
         execution.setTask(task);
         execution.setStatus(PropagationTaskExecStatus.CREATED.name());
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
         task.addExec(execution);
 
         taskDAO.save(task);
@@ -148,7 +148,7 @@ public class TaskTest extends AbstractTest {
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
         execution.setStatus("Text-free status");
         execution.setTask(task);
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
         execution.setMessage("A message");
         task.addExec(execution);
 
@@ -171,7 +171,7 @@ public class TaskTest extends AbstractTest {
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
         execution.setStatus("Text-free status");
         execution.setTask(task);
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
         execution.setMessage("A message");
         task.addExec(execution);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
index da4b05f..10c8819 100644
--- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml
@@ -973,7 +973,7 @@ under the License.
   <Task DTYPE="PropagationTask" type="PROPAGATION" id="1" operation="UPDATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <TaskExec id="1" task_id="1" startDate="2015-12-17 09:40:00.506" endDate="2015-12-17 09:42:00.506" status="SUCCESS"/>
+  <TaskExec id="1" task_id="1" start="2015-12-17 09:40:00.506" end="2015-12-17 09:42:00.506" status="SUCCESS"/>
   <Task DTYPE="PropagationTask" type="PROPAGATION" id="2" operation="CREATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
@@ -992,7 +992,7 @@ under the License.
   <Task DTYPE="PropagationTask" type="PROPAGATION" id="6" operation="UPDATE"
         objectClassName="__ACCOUNT__" resource_name="ws-target-resource-nopropagation" anyTypeKind="USER" anyKey="1"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <TaskExec id="6" task_id="6" startDate="2015-12-17 09:40:00.506" endDate="2015-12-17 09:42:00.506" status="SUCCESS"/>
+  <TaskExec id="6" task_id="6" start="2015-12-17 09:40:00.506" end="2015-12-17 09:42:00.506" status="SUCCESS"/>
   <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="7" name="TestDB Task" resource_name="resource-testdb"
         destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" syncMode="FULL_RECONCILIATION"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
@@ -1118,7 +1118,7 @@ under the License.
   <Report id="1" name="test" active="1"/>
   <ReportletConfInstance id="1" Report_id="1" 
                          serializedInstance='{"@class":"org.apache.syncope.common.lib.report.UserReportletConf","name":"testUserReportlet","matchingCond":null,"plainAttrs":["fullname","gender"],"derAttrs":["cn"],"virAttrs":["virtualdata"],"features":["key","username","workflowId","status","creationDate","lastLoginDate","changePwdDate","passwordHistorySize","failedLoginCount","memberships","resources"]}'/>
-  <ReportExec Report_id="1" id="1" status="SUCCESS" startDate="2012-02-26 15:40:04" endDate="2012-02-26 15:41:04"/>
+  <ReportExec Report_id="1" id="1" status="SUCCESS" start="2012-02-26 15:40:04" end="2012-02-26 15:41:04"/>
   
   <SyncopeLogger logName="syncope.audit.[REST]:[EntitlementLogic]:[]:[getOwn]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
   

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobInstanceLoader.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobInstanceLoader.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobInstanceLoader.java
index ff8486e..434d735 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobInstanceLoader.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobInstanceLoader.java
@@ -30,10 +30,10 @@ public interface JobInstanceLoader {
 
     String DOMAIN = "domain";
 
-    Map<String, Object> registerJob(final SchedTask task, final Date start, final long interruptMaxRetries)
+    Map<String, Object> registerJob(final SchedTask task, final Date startAt, final long interruptMaxRetries)
             throws SchedulerException, ParseException;
 
-    void registerJob(final Report report, final Date start)
+    void registerJob(final Report report, final Date startAt)
             throws SchedulerException, ParseException;
 
     void unregisterJob(Task task);

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
index 252b719..7b2ce80 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
@@ -80,13 +80,13 @@ public class ReportDataBinderImpl implements ReportDataBinder {
                 ? StringUtils.EMPTY
                 : latestExec.getStatus());
 
-        reportTO.setStartDate(latestExec == null
+        reportTO.setStart(latestExec == null
                 ? null
-                : latestExec.getStartDate());
+                : latestExec.getStart());
 
-        reportTO.setEndDate(latestExec == null
+        reportTO.setEnd(latestExec == null
                 ? null
-                : latestExec.getEndDate());
+                : latestExec.getEnd());
 
         for (ReportExec reportExec : report.getExecs()) {
             reportTO.getExecutions().add(getReportExecTO(reportExec));

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
index 77b697e..5686a5a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
@@ -198,7 +198,7 @@ public class TaskDataBinderImpl implements TaskDataBinder {
         }
 
         SchedTask task = taskUtils.newTask();
-        task.setStart(taskTO.getStart());
+        task.setStartAt(taskTO.getStartAt());
         task.setCronExpression(taskTO.getCronExpression());
         task.setName(taskTO.getName());
         task.setDescription(taskTO.getDescription());
@@ -288,8 +288,8 @@ public class TaskDataBinderImpl implements TaskDataBinder {
 
         TaskExec latestExec = taskExecDAO.findLatestStarted(task);
         taskTO.setLatestExecStatus(latestExec == null ? StringUtils.EMPTY : latestExec.getStatus());
-        taskTO.setStartDate(latestExec == null ? null : latestExec.getStartDate());
-        taskTO.setEndDate(latestExec == null ? null : latestExec.getEndDate());
+        taskTO.setStart(latestExec == null ? null : latestExec.getStart());
+        taskTO.setEnd(latestExec == null ? null : latestExec.getEnd());
 
         if (details) {
             for (TaskExec execution : task.getExecs()) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
index 1daae7a..ea6a525 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
@@ -84,7 +84,7 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega
         }
 
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
-        execution.setStartDate(new Date());
+        execution.setStart(new Date());
         execution.setTask(task);
 
         AuditElements.Result result;
@@ -100,7 +100,7 @@ public abstract class AbstractSchedTaskJobDelegate implements SchedTaskJobDelega
             execution.setMessage(ExceptionUtils2.getFullStackTrace(e));
             execution.setStatus(TaskJob.Status.FAILURE.name());
         }
-        execution.setEndDate(new Date());
+        execution.setEnd(new Date());
 
         if (hasToBeRegistered(execution)) {
             taskExecDAO.saveAndAdd(taskKey, execution);

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/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 9367edc..00affa6 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
@@ -347,7 +347,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
     public TaskExec execute(final PropagationTask task, final PropagationReporter reporter) {
         List<PropagationActions> actions = getPropagationActions(task.getResource());
 
-        Date startDate = new Date();
+        Date start = new Date();
 
         TaskExec execution = entityFactory.newEntity(TaskExec.class);
         execution.setStatus(PropagationTaskExecStatus.CREATED.name());
@@ -440,9 +440,9 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
                 }
             }
 
-            execution.setStartDate(startDate);
+            execution.setStart(start);
             execution.setMessage(taskExecutionMessage);
-            execution.setEndDate(new Date());
+            execution.setEnd(new Date());
 
             LOG.debug("Execution finished: {}", execution);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
index 60cce62..82c25db 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
@@ -90,7 +90,7 @@ public class ReportServiceImpl extends AbstractServiceImpl implements ReportServ
 
     @Override
     public ReportExecTO execute(final ExecuteQuery query) {
-        return logic.execute(query.getKey(), query.getStart());
+        return logic.execute(query.getKey(), query.getStartAt());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/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 6e1f6f3..5b33103 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
@@ -70,7 +70,7 @@ public class TaskServiceImpl extends AbstractServiceImpl implements TaskService
 
     @Override
     public TaskExecTO execute(final ExecuteQuery query) {
-        return logic.execute(query.getKey(), query.getStart(), query.getDryRun());
+        return logic.execute(query.getKey(), query.getStartAt(), query.getDryRun());
     }
 
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/syncope/blob/907be4ae/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
index 6b989b7..108c192 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
@@ -25,7 +25,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -98,9 +97,9 @@ public class SchedTaskITCase extends AbstractTaskITCase {
         assertNotNull(task);
 
         Date initial = new Date();
-        Date fiveSecsLater = DateUtils.addSeconds(initial, 2);
+        Date later = DateUtils.addSeconds(initial, 2);
 
-        taskService.execute(new ExecuteQuery.Builder().key(task.getKey()).start(fiveSecsLater).build());
+        taskService.execute(new ExecuteQuery.Builder().key(task.getKey()).startAt(later).build());
 
         int i = 0;
         int maxit = 50;
@@ -124,9 +123,9 @@ public class SchedTaskITCase extends AbstractTaskITCase {
                 taskService.listExecutions(new TaskExecQuery.Builder().key(task.getKey()).build());
         assertEquals(1, execs.getTotalCount());
         assertTrue(execs.getResult().get(0).getStart().after(initial));
-        assertEquals(
-                DateUtils.round(fiveSecsLater, Calendar.SECOND),
-                DateUtils.round(execs.getResult().get(0).getStart(), Calendar.SECOND));
+        // round 1 sec for safety
+        assertTrue(DateUtils.addSeconds(execs.getResult().get(0).getStart(), 1).after(later));
+
     }
 
     @Test


[2/2] syncope git commit: [SYNCOPE-749] Using ISO dates for JSON

Posted by il...@apache.org.
[SYNCOPE-749] Using ISO dates for JSON


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/c3b1c7e6
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/c3b1c7e6
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/c3b1c7e6

Branch: refs/heads/master
Commit: c3b1c7e66d061d99cb47c5d0e7f67591e97da7a9
Parents: 907be4a
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Dec 18 16:34:47 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Dec 18 16:34:47 2015 +0100

----------------------------------------------------------------------
 client/lib/pom.xml                                       |  9 +++++++++
 .../syncope/client/lib/SyncopeClientFactoryBean.java     |  7 ++++++-
 core/rest-cxf/pom.xml                                    |  9 +++++++++
 .../syncope/core/rest/cxf/UnwrappedObjectMapper.java     |  8 ++++++++
 .../syncope/fit/core/reference/SchedTaskITCase.java      |  1 -
 pom.xml                                                  | 11 +++++++++++
 6 files changed, 43 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index a119827..18b71c0 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -53,11 +53,20 @@ under the License.
     </dependency>
     
     <dependency>
+      <groupId>com.fasterxml.jackson.datatype</groupId>
+      <artifactId>jackson-datatype-joda</artifactId>
+    </dependency>    
+    <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>  
 
     <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+    </dependency>
+    
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
----------------------------------------------------------------------
diff --git a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
index 85eeac6..6ea7b4f 100644
--- a/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
+++ b/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClientFactoryBean.java
@@ -18,6 +18,8 @@
  */
 package org.apache.syncope.client.lib;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.joda.JodaModule;
 import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -80,7 +82,10 @@ public class SyncopeClientFactoryBean {
     private RestClientFactoryBean restClientFactoryBean;
 
     protected JacksonJaxbJsonProvider defaultJsonProvider() {
-        return new JacksonJaxbJsonProvider();
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.registerModule(new JodaModule());
+        objectMapper.configure(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+        return new JacksonJaxbJsonProvider(objectMapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS);
     }
 
     @SuppressWarnings({ "rawtypes" })

http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/core/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml
index 7316921..b5874ff 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/rest-cxf/pom.xml
@@ -71,6 +71,10 @@ under the License.
     </dependency>
     
     <dependency>
+      <groupId>com.fasterxml.jackson.datatype</groupId>
+      <artifactId>jackson-datatype-joda</artifactId>
+    </dependency>    
+    <dependency>
       <groupId>com.fasterxml.jackson.jaxrs</groupId>
       <artifactId>jackson-jaxrs-json-provider</artifactId>
     </dependency>
@@ -80,6 +84,11 @@ under the License.
     </dependency>
     
     <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+    </dependency>
+      
+    <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxrs</artifactId>
     </dependency>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
index 661f3b0..31b1dfd 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
@@ -21,6 +21,7 @@ package org.apache.syncope.core.rest.cxf;
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.joda.JodaModule;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -35,6 +36,13 @@ public class UnwrappedObjectMapper extends ObjectMapper {
 
     private static final long serialVersionUID = -317191546835195103L;
 
+    public UnwrappedObjectMapper() {
+        super();
+
+        registerModule(new JodaModule());
+        configure(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+    }
+
     /**
      * Unwraps the given value if it implements the Map interface and contains only a single entry, otherwise the
      * value is returned unmodified.

http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
index 108c192..327abe8 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/SchedTaskITCase.java
@@ -125,7 +125,6 @@ public class SchedTaskITCase extends AbstractTaskITCase {
         assertTrue(execs.getResult().get(0).getStart().after(initial));
         // round 1 sec for safety
         assertTrue(DateUtils.addSeconds(execs.getResult().get(0).getStart(), 1).after(later));
-
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/c3b1c7e6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index aab0e0e..081c91c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -585,6 +585,11 @@ under the License.
         <version>${jackson.version}</version>
       </dependency>
       <dependency>
+        <groupId>com.fasterxml.jackson.datatype</groupId>
+        <artifactId>jackson-datatype-joda</artifactId>
+        <version>${jackson.version}</version>
+      </dependency>    
+      <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-annotations</artifactId>
         <version>${jackson.version}</version>
@@ -601,6 +606,12 @@ under the License.
       </dependency>
             
       <dependency>
+        <groupId>joda-time</groupId>
+        <artifactId>joda-time</artifactId>
+        <version>2.9.1</version>
+      </dependency>
+
+      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${spring.version}</version>