Exception while using Birt Joint Dataset [message #964136] |
Tue, 30 October 2012 05:33  |
Eclipse User |
|
|
|
I am using Birt(2.6.0). When i tried Joint dataset feature, My report generation failed with "column binding" exception. But after removing Joint dataset, report generation is successful.
Could someone please help here?
Exception log :
org.eclipse.birt.report.engine.api.EngineException: Column binding "column1" has referred to a data set column "column1" which does not exist.
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1210)
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1174)
at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:96)
at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:62)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.emitter.ReportItemEmitterExecutor.execute(ReportItemEmitterExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:43)
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:46)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:65)
at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:90)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:99)
at org.eclipse.birt.report.engine.presentation.ReportDocumentBuilder.build(ReportDocumentBuilder.java:249)
at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:252)
at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:85)
at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1307)
at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:158)
at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81)
at org.eclipse.birt.report.service.actionhandler.BirtGetPageActionHandler.__checkDocumentExists(BirtGetPageActionHandler.java:58)
at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.prepareParameters(AbstractGetPageActionHandler.java:119)
at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:104)
at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)
at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:388)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:283)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.successfactors.analytics.filters.ReportConvertingFilter.doFilter(ReportConvertingFilter.java:556)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.successfactors.analytics.filters.AuthenticationFilter.doFilter(AuthenticationFilter.java:225)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.seam.web.ContextFilter.doFilter(ContextFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.eclipse.birt.data.engine.core.DataException: Column binding "column1" has referred to a data set column "column1" which does not exist.
at org.eclipse.birt.data.engine.impl.ResultIterator.validateManualBindingExpressions(ResultIterator.java:360)
at org.eclipse.birt.data.engine.impl.ResultIterator.(ResultIterator.java:148)
at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:194)
at org.eclipse.birt.report.engine.data.dte.QueryResultSet.(QueryResultSet.java:98)
at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:168)
at org.eclipse.birt.report.engine.data.dte.DataGenerationEngine.doExecuteQuery(DataGenerationEngine.java:74)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:265)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1875)
at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:80)
... 76 more
Thanks In Advance,
Naveen.
|
|
|
|
|
|
|
Re: Exception while using Birt Joint Dataset [message #972308 is a reply to message #972102] |
Mon, 05 November 2012 09:21   |
Eclipse User |
|
|
|
Michael,
Think, I found the reason for this issue. While using the templates with Joint dataset then the column label will be like "Dataset1::Column1", "Dataset2::column2",..etc. I have developed ODA same as CSV ODA available in birt site.
So for Dataset1 & Dataset2, the column label will be returned as "column1","column2"..etc.
While comparing the 2 list in org.eclipse.birt.data.engine.impl.ResultIterator.validateManualBindingExpressions() method, this issue is occurring.
Do we need to set any properties to avoid this issue ??
And, this method (org.eclipse.birt.data.engine.impl.ResultIterator.validateManualBindingExpressions()) is called only when the "DataEngineContext.mode" is MODE_GENERATION or DIRECT_PRESENTATION.
How can we change the mode and What is the difference between these modes??
Thanks,
Naveen.
|
|
|
|
|
Re: Exception while using Birt Joint Dataset [message #975354 is a reply to message #974560] |
Wed, 07 November 2012 15:25   |
Eclipse User |
|
|
|
I don't think there's an issue with the joint dataSet. This issue is probably with whatever changes you made to the flat file oda. In the template you sent me, the fields in the dataSets appear to be D1Column1 and D2Column1, not column1, like you say your changes make them. So, try this, to see if it fixes the issue when there is a joint dataSet. In each dataSet, go to the output columns section and change the alias to "column1", "column2", etc. Maybe that'll get rid of the confusion. If it does, you might go back and look at the changes you made in the ODA. Let me know.
|
|
|
Re: Exception while using Birt Joint Dataset [message #975874 is a reply to message #975354] |
Thu, 08 November 2012 01:19  |
Eclipse User |
|
|
|
Michael,
Sure. I will try the way you suggested and update. Meanwhile, I found this
My Joint dataset tag looks like this,
<list-property name="columnHints">
<structure>
<property name="columnName">Dataset1::column1</property>
<property name="alias">column1</property>
<text-property name="displayName">Dataset1::column1</text-property>
</structure>
<structure>
<property name="columnName">Dataset2::column2</property>
<property name="alias">column2</property>
<text-property name="displayName">Dataset2::column2</text-property>
</structure>
</list-property>
In org.eclipse.birt.data.engine.impl.ResultIterator.validateManualBindingExpressions() method Birt calls populateValidDataSetColumnNameSet() method.
In populateValidDataSetColumnNameSet() method, both valid column name and alias name will be populated.
In my case, it is populating only the column name ie {"Dataset1::column1","Dataset2::column2"}.
I dont know why this line no 381 in ResultIterator.java ( this.odiResult.getResultClass( ).getFieldAlias( i ) ) is not returning my alais names.
Do i need to make some changes to my custom oda to send alias name?
Thanks,
Naveen.
|
|
|
Powered by
FUDForum. Page generated in 0.05992 seconds