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/03/19 11:39:48 UTC
svn commit: r1302362 - in /incubator/syncope/trunk/core/src:
main/java/org/syncope/core/persistence/beans/
main/java/org/syncope/core/persistence/dao/impl/
main/java/org/syncope/core/scheduling/ test/java/org/syncope/core/rest/
Author: ilgrosso
Date: Mon Mar 19 10:39:48 2012
New Revision: 1302362
URL: http://svn.apache.org/viewvc?rev=1302362&view=rev
Log:
[SYNCOPE-43] ReportJob was not adding the new execution to relative report
Modified:
incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/beans/Report.java
incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/dao/impl/ReportDAOImpl.java
incubator/syncope/trunk/core/src/main/java/org/syncope/core/scheduling/ReportJob.java
incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/ReportTestITCase.java
Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/beans/Report.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/beans/Report.java?rev=1302362&r1=1302361&r2=1302362&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/beans/Report.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/beans/Report.java Mon Mar 19 10:39:48 2012
@@ -46,7 +46,7 @@ public class Report extends AbstractBase
private String cronExpression;
- @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "report")
+ @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER, mappedBy = "report")
private List<ReportExec> executions;
public Report() {
Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/dao/impl/ReportDAOImpl.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/dao/impl/ReportDAOImpl.java?rev=1302362&r1=1302361&r2=1302362&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/dao/impl/ReportDAOImpl.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/persistence/dao/impl/ReportDAOImpl.java Mon Mar 19 10:39:48 2012
@@ -21,6 +21,7 @@ package org.syncope.core.persistence.dao
import java.util.List;
import javax.persistence.Query;
import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
import org.syncope.core.persistence.beans.Report;
import org.syncope.core.persistence.dao.ReportDAO;
import org.syncope.core.persistence.validation.entity.InvalidEntityException;
@@ -29,6 +30,7 @@ import org.syncope.core.persistence.vali
public class ReportDAOImpl extends AbstractDAOImpl implements ReportDAO {
@Override
+ @Transactional(readOnly = true)
public Report find(final Long id) {
return entityManager.find(Report.class, id);
}
@@ -61,8 +63,8 @@ public class ReportDAOImpl extends Abstr
}
@Override
+ @Transactional(rollbackFor = Throwable.class)
public Report save(final Report report) throws InvalidEntityException {
-
return entityManager.merge(report);
}
Modified: incubator/syncope/trunk/core/src/main/java/org/syncope/core/scheduling/ReportJob.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/main/java/org/syncope/core/scheduling/ReportJob.java?rev=1302362&r1=1302361&r2=1302362&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/main/java/org/syncope/core/scheduling/ReportJob.java (original)
+++ incubator/syncope/trunk/core/src/main/java/org/syncope/core/scheduling/ReportJob.java Mon Mar 19 10:39:48 2012
@@ -108,6 +108,9 @@ public class ReportJob implements Statef
execution.setReport(report);
execution = reportExecDAO.save(execution);
+ report.addExec(execution);
+ report = reportDAO.save(report);
+
// 2. define a SAX handler for generating result as XML
TransformerHandler handler;
@@ -133,8 +136,8 @@ public class ReportJob implements Statef
execution.setStatus(ReportExecStatus.RUNNING);
execution = reportExecDAO.save(execution);
- ConfigurableListableBeanFactory beanFactory = ApplicationContextManager.getApplicationContext()
- .getBeanFactory();
+ ConfigurableListableBeanFactory beanFactory =
+ ApplicationContextManager.getApplicationContext().getBeanFactory();
// 3. actual report execution
StringBuilder reportExecutionMessage = new StringBuilder();
@@ -148,8 +151,8 @@ public class ReportJob implements Statef
// iterate over reportlet instances defined for this report
for (ReportletConf reportletConf : report.getReportletConfs()) {
- Class<Reportlet> reportletClass = dataBinder
- .findReportletClassHavingConfClass(reportletConf.getClass());
+ Class<Reportlet> reportletClass =
+ dataBinder.findReportletClassHavingConfClass(reportletConf.getClass());
if (reportletClass != null) {
Reportlet autowired = (Reportlet) beanFactory.createBean(reportletClass,
AbstractBeanDefinition.AUTOWIRE_BY_TYPE, false);
Modified: incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/ReportTestITCase.java
URL: http://svn.apache.org/viewvc/incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/ReportTestITCase.java?rev=1302362&r1=1302361&r2=1302362&view=diff
==============================================================================
--- incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/ReportTestITCase.java (original)
+++ incubator/syncope/trunk/core/src/test/java/org/syncope/core/rest/ReportTestITCase.java Mon Mar 19 10:39:48 2012
@@ -101,8 +101,7 @@ public class ReportTestITCase extends Ab
report = restTemplate.postForObject(BASE_URL + "report/create", report, ReportTO.class);
assertNotNull(report);
- ReportTO actual = restTemplate
- .getForObject(BASE_URL + "report/read/{reportId}", ReportTO.class, report.getId());
+ ReportTO actual = restTemplate.getForObject(BASE_URL + "report/read/{reportId}", ReportTO.class, report.getId());
assertNotNull(actual);
assertEquals(actual, report);
}
@@ -241,4 +240,31 @@ public class ReportTestITCase extends Ab
assertNotNull(export);
assertFalse(export.isEmpty());
}
+
+ public void issueSYNCOPE43() {
+ ReportTO reportTO = new ReportTO();
+ reportTO.setName("issueSYNCOPE43");
+ reportTO = restTemplate.postForObject(BASE_URL + "report/create", reportTO, ReportTO.class);
+ assertNotNull(reportTO);
+
+ ReportExecTO execution = restTemplate.postForObject(BASE_URL + "report/execute/{reportId}", null,
+ ReportExecTO.class, reportTO.getId());
+ assertNotNull(execution);
+
+ int i = 0;
+ int maxit = 50;
+
+ do {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+
+ reportTO = restTemplate.getForObject(BASE_URL + "report/read/{reportId}", ReportTO.class, 1);
+
+ i++;
+ } while (reportTO.getExecutions().size() == 0 && i < maxit);
+
+ assertEquals(1, reportTO.getExecutions().size());
+ }
}