Jump to content
Changes to the Jaspersoft community edition download ×

Custom DataSource - why exception?


kjhuebner

Recommended Posts

Hi,

I've been trying to get a master and subreport to work using a custom datasource having a hierarchical structure. (See attached .zip file for full details) The datasource is composed of a list of rows (list of Maps with fieldname,value pairs) and associated with each row is a "sub" datasource (containing list of Maps with fieldname,value pairs).

 

However, when I run report, it fails at filling the subreport due to failing at retrieving the "sub" datasource. My master template contains this snippet:

 

<subreport>

...

<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>

 

<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}.getSubDataSourceFromRow("Tasks")]]></ dataSourceExpression>

...

</subreport>

 

I'm not sure how to interpret the exception--as its failing deep in the Jasper engine.

I tried explicitly casting the datasource with the classname of my custom data source, but it still fails.

 

If anyone can explain what is going on, I'd appreciate it.

Thanks!

Ken

--------------

TRACE....

 

Error filling print...

ENTERED TestDataSourceFactory.getTheDatasource() ENTERED TestDataSource() CONSTRUCTOR ENTERED addRow index=0 ENTERED TestDataSource(List) CONSTRUCTOR ENTERED TestDataSource.putSubDataSourceFromRow() key=Tasks ENTERED addRow index=1 ENTERED TestDataSource(List) CONSTRUCTOR ENTERED TestDataSource.putSubDataSourceFromRow() key=Tasks java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) NESTED BY : java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) NESTED BY : net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : Source text : $P{REPORT_DATA_SOURCE} at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:183) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) ... 11 more

Print not filled. Try to use an EmptyDataSource...!

 

 

 

[file name=TestDataSource-a80125f43b48fad92970e67846f23056.zip size=27835]http://www.jasperforge.org/components/com_joomlaboard/uploaded/files/TestDataSource-a80125f43b48fad92970e67846f23056.zip[/file]

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Code:
<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>

 

Never do this, the map you provide via parametersMapExpression will get altered by the subreport and passing the master report's parameters map this will have unexpected consequences.

 

If you want to pass all the parameters from the master to the subreport, you should do

Code:
[code]<parametersMapExpression><![CDATA[new HashMap($P{REPORT_PARAMETERS_MAP})]]></parametersMapExpression>

 

HTH,

Lucian

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...