Author: cschneider Date: Wed Jan 30 11:59:07 2013 New Revision: 1440358 URL: http://svn.apache.org/viewvc?rev=1440358&view=rev Log: SYNCOPE-231 Switching ReportTO to use AbstractReportletConf to enable JAXB serialization
Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/ReportTO.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/ReportTestITCase.java Modified: syncope/trunk/common/src/main/java/org/apache/syncope/common/to/ReportTO.java URL: http://svn.apache.org/viewvc/syncope/trunk/common/src/main/java/org/apache/syncope/common/to/ReportTO.java?rev=1440358&r1=1440357&r2=1440358&view=diff ============================================================================== --- syncope/trunk/common/src/main/java/org/apache/syncope/common/to/ReportTO.java (original) +++ syncope/trunk/common/src/main/java/org/apache/syncope/common/to/ReportTO.java Wed Jan 30 11:59:07 2013 @@ -25,14 +25,17 @@ import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlSeeAlso; import javax.xml.bind.annotation.XmlType; import org.apache.syncope.common.AbstractBaseBean; import org.apache.syncope.common.report.AbstractReportletConf; -import org.apache.syncope.common.report.ReportletConf; +import org.apache.syncope.common.report.StaticReportletConf; +import org.apache.syncope.common.report.UserReportletConf; @XmlRootElement(name = "report") @XmlType +@XmlSeeAlso({UserReportletConf.class, StaticReportletConf.class}) public class ReportTO extends AbstractBaseBean { private static final long serialVersionUID = 5274568072084814410L; @@ -41,7 +44,7 @@ public class ReportTO extends AbstractBa private String name; - private List<ReportletConf> reportletConfs; + private List<AbstractReportletConf> reportletConfs; private String cronExpression; @@ -60,7 +63,7 @@ public class ReportTO extends AbstractBa public ReportTO() { super(); - reportletConfs = new ArrayList<ReportletConf>(); + reportletConfs = new ArrayList<AbstractReportletConf>(); executions = new ArrayList<ReportExecTO>(); } @@ -80,21 +83,21 @@ public class ReportTO extends AbstractBa this.name = name; } - public boolean addReportletConf(ReportletConf reportlet) { + public boolean addReportletConf(AbstractReportletConf reportlet) { return this.reportletConfs.add(reportlet); } - public boolean removeReportletConf(ReportletConf reportlet) { + public boolean removeReportletConf(AbstractReportletConf reportlet) { return this.reportletConfs.remove(reportlet); } @XmlElementWrapper(name = "reportletConfigurations") - @XmlElement(name = "configuration", type=AbstractReportletConf.class) - public List<ReportletConf> getReportletConfs() { + @XmlElement(name="reportletconf") + public List<AbstractReportletConf> getReportletConfs() { return reportletConfs; } - public void setReportletConfs(List<ReportletConf> reportlets) { + public void setReportletConfs(List<AbstractReportletConf> reportlets) { this.reportletConfs = reportlets; } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java?rev=1440358&r1=1440357&r2=1440358&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportModalPage.java Wed Jan 30 11:59:07 2013 @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.apache.syncope.common.report.AbstractReportletConf; import org.apache.syncope.common.report.ReportletConf; import org.apache.syncope.common.to.ReportExecTO; import org.apache.syncope.common.to.ReportTO; @@ -109,11 +110,11 @@ public class ReportModalPage extends Bas private long exportExecId; - private ReportletConf modalReportletConf; + private AbstractReportletConf modalReportletConf; private String modalReportletConfOldName; - private ListChoice<ReportletConf> reportlets; + private ListChoice<AbstractReportletConf> reportlets; public ReportModalPage(final ModalWindow window, final ReportTO reportTO, final PageReference callerPageRef) { this.reportTO = reportTO; @@ -250,7 +251,7 @@ public class ReportModalPage extends Bas nextExec.setEnabled(false); profile.add(nextExec); - reportlets = new ListChoice<ReportletConf>("reportletConfs", new Model(), reportTO.getReportletConfs(), + reportlets = new ListChoice<AbstractReportletConf>("reportletConfs", new Model(), reportTO.getReportletConfs(), new IChoiceRenderer<ReportletConf>() { private static final long serialVersionUID = 1048000918946220007L; @@ -383,8 +384,8 @@ public class ReportModalPage extends Bas }); } - private void moveUp(final ReportletConf item) { - final List<ReportletConf> list = reportTO.getReportletConfs(); + private void moveUp(final AbstractReportletConf item) { + final List<AbstractReportletConf> list = reportTO.getReportletConfs(); int newPosition = list.indexOf(item) - 1; if (newPosition > -1) { list.remove(item); @@ -392,8 +393,8 @@ public class ReportModalPage extends Bas } } - private void moveDown(final ReportletConf item) { - final List<ReportletConf> list = reportTO.getReportletConfs(); + private void moveDown(final AbstractReportletConf item) { + final List<AbstractReportletConf> list = reportTO.getReportletConfs(); int newPosition = list.indexOf(item) + 1; if (newPosition < list.size()) { list.remove(item); @@ -542,7 +543,7 @@ public class ReportModalPage extends Bas this.exportFormat = exportFormat; } - public void setModalReportletConf(final ReportletConf modalReportletConf) { + public void setModalReportletConf(final AbstractReportletConf modalReportletConf) { this.modalReportletConf = modalReportletConf; } Modified: syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java URL: http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java?rev=1440358&r1=1440357&r2=1440358&view=diff ============================================================================== --- syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java (original) +++ syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/ReportletConfModalPage.java Wed Jan 30 11:59:07 2013 @@ -30,6 +30,7 @@ import java.util.List; import org.apache.commons.lang.ArrayUtils; import org.apache.syncope.common.SyncopeConstants; import org.apache.syncope.common.annotation.FormAttributeField; +import org.apache.syncope.common.report.AbstractReportletConf; import org.apache.syncope.common.report.ReportletConf; import org.apache.syncope.common.search.NodeCond; import org.apache.syncope.common.types.AttributableType; @@ -83,7 +84,7 @@ public class ReportletConfModalPage exte @SpringBean private SchemaRestClient schemaRestClient; - private ReportletConf reportletConf; + private AbstractReportletConf reportletConf; final AjaxTextFieldPanel name; @@ -91,7 +92,7 @@ public class ReportletConfModalPage exte private ListView<String> propView; - public ReportletConfModalPage(final ReportletConf reportletConf, final ModalWindow window, + public ReportletConfModalPage(final AbstractReportletConf reportletConf, final ModalWindow window, final PageReference callerPageRef) { this.reportletConf = reportletConf; @@ -126,7 +127,7 @@ public class ReportletConfModalPage exte public void setObject(final String object) { try { Class<?> reportletClass = Class.forName(object); - ReportletConfModalPage.this.reportletConf = (ReportletConf) reportletClass.newInstance(); + ReportletConfModalPage.this.reportletConf = (AbstractReportletConf) reportletClass.newInstance(); propertiesContainer.replace(buildPropView()); } catch (Exception e) { LOG.error("Cannot find or initialize {}", object, e); Modified: syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java?rev=1440358&r1=1440357&r2=1440358&view=diff ============================================================================== --- syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java (original) +++ syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/data/ReportDataBinder.java Wed Jan 30 11:59:07 2013 @@ -19,7 +19,10 @@ package org.apache.syncope.core.rest.data; import java.util.HashSet; +import java.util.List; import java.util.Set; + +import org.apache.syncope.common.report.AbstractReportletConf; import org.apache.syncope.common.report.ReportletConf; import org.apache.syncope.common.to.ReportExecTO; import org.apache.syncope.common.to.ReportTO; @@ -116,7 +119,7 @@ public class ReportDataBinder { reportTO.setId(report.getId()); BeanUtils.copyProperties(report, reportTO, IGNORE_REPORT_PROPERTIES); - reportTO.setReportletConfs(report.getReportletConfs()); + copyReportletConfs(report, reportTO); ReportExec latestExec = reportExecDAO.findLatestStarted(report); reportTO.setLatestExecStatus(latestExec == null @@ -153,6 +156,13 @@ public class ReportDataBinder { return reportTO; } + private void copyReportletConfs(Report report, ReportTO reportTO) { + reportTO.getReportletConfs().clear(); + for (ReportletConf reportletConf : report.getReportletConfs()) { + reportTO.getReportletConfs().add((AbstractReportletConf) reportletConf); + } + } + public ReportExecTO getReportExecTO(final ReportExec execution) { ReportExecTO executionTO = new ReportExecTO(); executionTO.setId(execution.getId()); Modified: syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/ReportTestITCase.java URL: http://svn.apache.org/viewvc/syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/ReportTestITCase.java?rev=1440358&r1=1440357&r2=1440358&view=diff ============================================================================== --- syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/ReportTestITCase.java (original) +++ syncope/trunk/core/src/test/java/org/apache/syncope/core/rest/ReportTestITCase.java Wed Jan 30 11:59:07 2013 @@ -30,6 +30,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.List; import java.util.Set; +import java.util.UUID; import javax.ws.rs.core.Response; @@ -49,6 +50,7 @@ public class ReportTestITCase extends Ab public ReportTO createReport(final ReportTO report) { Response response = reportService.create(report); + assertCreated(response); return getObject(response, ReportTO.class, reportService); } @@ -139,7 +141,7 @@ public class ReportTestITCase extends Ab @Test public void delete() { ReportTO report = new ReportTO(); - report.setName("testReportForDelete"); + report.setName("testReportForDelete" + getUUIDString()); report.addReportletConf(new UserReportletConf("first")); report.addReportletConf(new UserReportletConf("second"));