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());
+    }
 }