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 2012/08/01 18:25:57 UTC
svn commit: r1368105 - in
/incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core:
persistence/dao/TaskExecDAO.java persistence/dao/impl/TaskExecDAOImpl.java
scheduling/AbstractTaskJob.java
Author: ilgrosso
Date: Wed Aug 1 16:25:57 2012
New Revision: 1368105
URL: http://svn.apache.org/viewvc?rev=1368105&view=rev
Log:
[SYNCOPE-179] Provided a dedicated method on TaskExecDAO for taking care of non-transactional environment of SyncJob
Modified:
incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/TaskExecDAO.java
incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskExecDAOImpl.java
incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/AbstractTaskJob.java
Modified: incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/TaskExecDAO.java
URL: http://svn.apache.org/viewvc/incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/TaskExecDAO.java?rev=1368105&r1=1368104&r2=1368105&view=diff
==============================================================================
--- incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/TaskExecDAO.java (original)
+++ incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/TaskExecDAO.java Wed Aug 1 16:25:57 2012
@@ -35,6 +35,8 @@ public interface TaskExecDAO extends DAO
TaskExec save(TaskExec execution) throws InvalidEntityException;
+ void saveAndAdd(Long taskId, TaskExec execution) throws InvalidEntityException;
+
void delete(Long id);
void delete(TaskExec execution);
Modified: incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskExecDAOImpl.java
URL: http://svn.apache.org/viewvc/incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskExecDAOImpl.java?rev=1368105&r1=1368104&r2=1368105&view=diff
==============================================================================
--- incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskExecDAOImpl.java (original)
+++ incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/TaskExecDAOImpl.java Wed Aug 1 16:25:57 2012
@@ -24,13 +24,19 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.beans.SyncTask;
import org.apache.syncope.core.persistence.beans.Task;
import org.apache.syncope.core.persistence.beans.TaskExec;
+import org.apache.syncope.core.persistence.dao.TaskDAO;
import org.apache.syncope.core.persistence.dao.TaskExecDAO;
+import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
public class TaskExecDAOImpl extends AbstractDAOImpl implements TaskExecDAO {
+ @Autowired
+ private TaskDAO taskDAO;
+
@Override
public TaskExec find(final Long id) {
return entityManager.find(TaskExec.class, id);
@@ -73,19 +79,25 @@ public class TaskExecDAOImpl extends Abs
return query.getResultList();
}
+ @Override
+ public TaskExec save(final TaskExec execution) {
+ return entityManager.merge(execution);
+ }
+
/**
- * This method has an explicit @Transactional annotation because it is
- * called by AbstractJob.
- *
+ * This method has an explicit @Transactional annotation because it is called by AbstractJob.
+ *
* @see org.apache.syncope.core.scheduling.AbstractJob
- *
+ *
* @param execution entity to be merged
* @return the same entity, updated
*/
@Override
- @Transactional(rollbackFor = { Throwable.class })
- public TaskExec save(final TaskExec execution) {
- return entityManager.merge(execution);
+ @Transactional(rollbackFor = {Throwable.class})
+ public void saveAndAdd(Long taskId, TaskExec execution) throws InvalidEntityException {
+ Task task = taskDAO.find(taskId);
+ task.addExec(execution);
+ taskDAO.save(task);
}
@Override
Modified: incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/AbstractTaskJob.java
URL: http://svn.apache.org/viewvc/incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/AbstractTaskJob.java?rev=1368105&r1=1368104&r2=1368105&view=diff
==============================================================================
--- incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/AbstractTaskJob.java (original)
+++ incubator/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/AbstractTaskJob.java Wed Aug 1 16:25:57 2012
@@ -21,16 +21,16 @@ package org.apache.syncope.core.scheduli
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
+import org.apache.syncope.core.persistence.beans.Task;
+import org.apache.syncope.core.persistence.beans.TaskExec;
+import org.apache.syncope.core.persistence.dao.TaskDAO;
+import org.apache.syncope.core.persistence.dao.TaskExecDAO;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.apache.syncope.core.persistence.beans.Task;
-import org.apache.syncope.core.persistence.beans.TaskExec;
-import org.apache.syncope.core.persistence.dao.TaskDAO;
-import org.apache.syncope.core.persistence.dao.TaskExecDAO;
/**
* Base job implementation that delegates to concrete implementation the actual job execution and provides some
@@ -112,8 +112,9 @@ public abstract class AbstractTaskJob im
execution.setStatus(Status.FAILURE.name());
}
execution.setEndDate(new Date());
+
if (hasToBeRegistered(execution)) {
- taskExecDAO.save(execution);
+ taskExecDAO.saveAndAdd(taskId, execution);
}
task = taskDAO.save(task);