External JS function not found in RenderTask
Hi,<br />
<br />
I deploy BIRT reports in servlets. On the java side, I use RunTask.run() and RenderTask.render() after each other.<br />
On the reporting side, I have various calls to external javascript functions which are situated inside a *.js file in the library folder. The functions are called in a chart's beforeDrawAxisLabel() functions etc, but also from the expression of Y Series -> Interactivity -> Tooltip Text Expression.<br />
<br />
Now, when I run the RunTask, it works without problems; I log some text inside the js functions and can therefore approve that the function is called.<br />
Next the RenderTask is run based on the rptdocument which was created before. But when running RenderTask.render() the BIRT Engine throws the exception that it can't find the js function (which was there before!)<br />
<br />
It should be noticed that I did call the exact same javascript function before in a non-servlet context (a very similar eclipse project where I can use the report designer preview) and there it gave NO exception. Thus, the javascript file itself and the call and everything should be setup correctly...<br />
<br />
Please help as it drives me NUTS!<br />
Thanks in advance for your help!<br />
<br />
I'm working with BIRT 4.2.1, Eclipse Juno SR1, Java 1.7.0_09-b05 and TomCat 7.0.32<br />
<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
SEVERE: ChartReportItemPresentationImpl: onRowSets(...) - failed
Feb 27, 2013 4:16:57 PM org.eclipse.birt.chart.reportitem.ChartReportItemPresentationBase isNoDataException
WARNING: Exception
org.eclipse.birt.chart.exception.ChartException: There are errors evaluating script "var aggregationPeriodString = data["joinPeriodGroup/Date Ranger Data::joinPeriod"];
var aggregationPeriod = params["aggregationPeriod"];
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriodString", aggregationPeriodString);
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriod", aggregationPeriod);
//var aggregationPeriodDescription = icsc.getExternalContext().getScriptable().evaluate("getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);");
var aggregationPeriodDescription = getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);
quantity = 0;
if (data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"] != null){
quantity = data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"];
}
data["userGroupingDimension/UrmLogDataSet::userGrouping"] + " (" + aggregationPeriodDescription + "): " + quantity;":
ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.evaluateRowSet(DataProcessor.java:1459)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.mapToChartResultSet(DataProcessor.java:368)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.generateRuntimeSeries(DataProcessor.java:507)
at org.eclipse.birt.chart.factory.Generator.bindData(Generator.java:721)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationBase.bindData(ChartReportItemPresentationBase.java:729)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationBase.onRowSets(ChartReportItemPresentationBase.java:855)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationProxy.onRowSets(ChartReportItemPresentationProxy.java:108)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.processExtendedContent(LocalizedContentVisitor.java:1022)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.localizeForeign(LocalizedContentVisitor.java:578)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.localize(LocalizedContentVisitor.java:163)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:37)
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:92)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
at org.eclipse.birt.report.engine.api.impl.RenderTask$PageRangeRender.render(RenderTask.java:621)
at org.eclipse.birt.report.engine.api.impl.RenderTask.render(RenderTask.java:294)
at de.asweb.reportViewer.ReportHandler.getPdfReport(ReportHandler.java:356)
at de.asweb.reportViewer.ReportHandler.getReport(ReportHandler.java:185)
at de.asweb.reportViewer.ReportControllerServlet.handleRequest(ReportControllerServlet.java:49)
at de.asweb.reportViewer.ReportControllerServlet.doGet(ReportControllerServlet.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.birt.core.exception.CoreException: There are errors evaluating script "var aggregationPeriodString = data["joinPeriodGroup/Date Ranger Data::joinPeriod"];
var aggregationPeriod = params["aggregationPeriod"];
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriodString", aggregationPeriodString);
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriod", aggregationPeriod);
//var aggregationPeriodDescription = icsc.getExternalContext().getScriptable().evaluate("getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);");
var aggregationPeriodDescription = getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);
quantity = 0;
if (data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"] != null){
quantity = data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"];
}
data["userGroupingDimension/UrmLogDataSet::userGrouping"] + " (" + aggregationPeriodDescription + "): " + quantity;":
ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:295)
at org.eclipse.birt.core.script.ScriptContext.evaluate(ScriptContext.java:154)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:781)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:761)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluateInlineScript(ExecutionContext.java:749)
at org.eclipse.birt.report.engine.data.dte.CubeResultSet.evaluate(CubeResultSet.java:197)
at org.eclipse.birt.chart.reportitem.BIRTCubeResultSetEvaluator.evaluate(BIRTCubeResultSetEvaluator.java:128)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.evaluateRowSet(DataProcessor.java:1439)
... 37 more
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3654)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3632)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3717)
at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1758)
at org.mozilla.javascript.ScriptRuntime.getNameFunctionAndThis(ScriptRuntime.java:2135)
at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:95)
at org.mozilla.javascript.gen.c44._c0(<inline>:6)
at org.mozilla.javascript.gen.c44.call(<inline>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
at org.mozilla.javascript.gen.c44.call(<inline>)
at org.mozilla.javascript.gen.c44.exec(<inline>)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:290)
... 44 more
Feb 27, 2013 4:16:57 PM org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor processExtendedContent
SEVERE: There are errors evaluating script "var aggregationPeriodString = data["joinPeriodGroup/Date Ranger Data::joinPeriod"];
var aggregationPeriod = params["aggregationPeriod"];
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriodString", aggregationPeriodString);
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriod", aggregationPeriod);
//var aggregationPeriodDescription = icsc.getExternalContext().getScriptable().evaluate("getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);");
var aggregationPeriodDescription = getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);
quantity = 0;
if (data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"] != null){
quantity = data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"];
}
data["userGroupingDimension/UrmLogDataSet::userGrouping"] + " (" + aggregationPeriodDescription + "): " + quantity;":
ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
org.eclipse.birt.chart.exception.ChartException: There are errors evaluating script "var aggregationPeriodString = data["joinPeriodGroup/Date Ranger Data::joinPeriod"];
var aggregationPeriod = params["aggregationPeriod"];
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriodString", aggregationPeriodString);
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriod", aggregationPeriod);
//var aggregationPeriodDescription = icsc.getExternalContext().getScriptable().evaluate("getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);");
var aggregationPeriodDescription = getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);
quantity = 0;
if (data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"] != null){
quantity = data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"];
}
data["userGroupingDimension/UrmLogDataSet::userGrouping"] + " (" + aggregationPeriodDescription + "): " + quantity;":
ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.evaluateRowSet(DataProcessor.java:1459)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.mapToChartResultSet(DataProcessor.java:368)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.generateRuntimeSeries(DataProcessor.java:507)
at org.eclipse.birt.chart.factory.Generator.bindData(Generator.java:721)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationBase.bindData(ChartReportItemPresentationBase.java:729)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationBase.onRowSets(ChartReportItemPresentationBase.java:855)
at org.eclipse.birt.chart.reportitem.ChartReportItemPresentationProxy.onRowSets(ChartReportItemPresentationProxy.java:108)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.processExtendedContent(LocalizedContentVisitor.java:1022)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.localizeForeign(LocalizedContentVisitor.java:578)
at org.eclipse.birt.report.engine.presentation.LocalizedContentVisitor.localize(LocalizedContentVisitor.java:163)
at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:37)
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:92)
at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100)
at org.eclipse.birt.report.engine.api.impl.RenderTask$PageRangeRender.render(RenderTask.java:621)
at org.eclipse.birt.report.engine.api.impl.RenderTask.render(RenderTask.java:294)
at de.asweb.reportViewer.ReportHandler.getPdfReport(ReportHandler.java:356)
at de.asweb.reportViewer.ReportHandler.getReport(ReportHandler.java:185)
at de.asweb.reportViewer.ReportControllerServlet.handleRequest(ReportControllerServlet.java:49)
at de.asweb.reportViewer.ReportControllerServlet.doGet(ReportControllerServlet.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.birt.core.exception.CoreException: There are errors evaluating script "var aggregationPeriodString = data["joinPeriodGroup/Date Ranger Data::joinPeriod"];
var aggregationPeriod = params["aggregationPeriod"];
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriodString", aggregationPeriodString);
//icsc.getExternalContext().getScriptable().setGlobalVariable("aggregationPeriod", aggregationPeriod);
//var aggregationPeriodDescription = icsc.getExternalContext().getScriptable().evaluate("getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);");
var aggregationPeriodDescription = getAggregationPeriodDescription(aggregationPeriodString, aggregationPeriod);
quantity = 0;
if (data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"] != null){
quantity = data["LogUserCountSummaryField/UrmLogDataSet::LOGUSER"];
}
data["userGroupingDimension/UrmLogDataSet::userGrouping"] + " (" + aggregationPeriodDescription + "): " + quantity;":
ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:295)
at org.eclipse.birt.core.script.ScriptContext.evaluate(ScriptContext.java:154)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:781)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:761)
at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluateInlineScript(ExecutionContext.java:749)
at org.eclipse.birt.report.engine.data.dte.CubeResultSet.evaluate(CubeResultSet.java:197)
at org.eclipse.birt.chart.reportitem.BIRTCubeResultSetEvaluator.evaluate(BIRTCubeResultSetEvaluator.java:128)
at org.eclipse.birt.chart.internal.datafeed.DataProcessor.evaluateRowSet(DataProcessor.java:1439)
... 37 more
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "getAggregationPeriodDescription" is not defined. (<inline>#6)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3654)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3632)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3717)
at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1758)
at org.mozilla.javascript.ScriptRuntime.getNameFunctionAndThis(ScriptRuntime.java:2135)
at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:95)
at org.mozilla.javascript.gen.c44._c0(<inline>:6)
at org.mozilla.javascript.gen.c44.call(<inline>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
at org.mozilla.javascript.gen.c44.call(<inline>)
at org.mozilla.javascript.gen.c44.exec(<inline>)
at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:290)
... 44 more</pre>
here are some excerpts of the java code:<br />
<pre class='_prettyXprint _lang-auto _linenums:0'>
BIRT ENGINE:
package de.asweb.reportViewer.birt;
import javax.servlet.ServletContext;
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.IPlatformContext;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
public class BirtEngine {
private static IReportEngine birtEngine = null;
private BirtEngine() {
}
public static synchronized IReportEngine getBirtEngine(ServletContext sc) {
if (birtEngine == null) {
EngineConfig config = new EngineConfig( );
System.out.println("Servlet context: " + sc.getRealPath("/"));
config.setResourcePath(sc.getRealPath("/WEB-INF/reports") + "\\library_elements");
config.setBIRTHome(sc.getRealPath("/WEB-INF/reports") + "\\library_elements");
System.out.println("BIRT Engine resource path set to: " + config.getResourcePath());
try {
//Platform.startup();
// TODO checken, stattdessen:
Platform.startup(config);
} catch (BirtException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
IReportEngineFactory factory = (IReportEngineFactory)Platform.createFactoryObject
(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
birtEngine = factory.createReportEngine(config);
}
return birtEngine;
}
}
EXCERPTS FROM MY REPORTHANDLER CLASS:
public String getReport(){
(.....)
reportRelativePath = "/WEB-INF/reports";
reportRealPath = sc.getRealPath(reportRelativePath);
IRenderTask renderTask = null;
try {
IReportRunnable design = birtReportEngine.openReportDesign(reportRealPath + "/" + reportName + ".rptdesign");
//
Run Task
IRunTask runTask = birtReportEngine.createRunTask(design);
runTask.getAppContext().put("mitarbeiterMap", mitarbeiterMap);
runTask.getAppContext().put("allMitarbeiterList", allMitarbeiterList);
runTask.getAppContext().put("reportName", reportName);
setRunTaskParams(runTask);
runTask.run(reportRealPath + "/gen_docs/" + reportName + ".rptdocument");
runTask.close();
System.out.println("+++++ RunTask successfully finished, rptdocument: " + reportRealPath + "/gen_docs/" + reportName + ".rptdocument");
//
Render Task
IReportDocument rptdoc = birtReportEngine.openReportDocument(reportRealPath + "/gen_docs/" + reportName + ".rptdocument");
renderTask = birtReportEngine.createRenderTask(rptdoc);
setRenderTaskParams(renderTask);
} catch (EngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String outputType = null;
if (request.getParameter("submitHTML") != null){
outputType = "html";
request.setAttribute("outputType", "html");
} else if (request.getParameter("submitPDF") != null){
outputType = "pdf";
request.setAttribute("outputType", "pdf");
} else {
outputType = "html";
request.setAttribute("outputType", "html");
}
switch (outputType){
case "html":
return getHtmlReport(renderTask);
case "pdf":
return getPdfReport(renderTask);
default:
return getHtmlReport(renderTask);
}
}
private String getHtmlReport(IRenderTask renderTask){
String outputFilename = reportRealPath + "/gen_docs/" + reportName + ".html";
try{
// HTML HTML HTML
HTMLRenderOption renderOption = new HTMLRenderOption();
renderOption.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
renderOption.setEmbeddable(true);
renderOption.setBaseURL(reportRealPath + "/libaray_elements");
renderOption.setImageHandler(new HTMLServerImageHandler());
renderOption.setBaseImageURL(request.getContextPath()+"/images");
renderOption.setImageDirectory(sc.getRealPath("/") + "/images");
renderOption.setOutputFileName(outputFilename);
renderTask.setRenderOption(renderOption);
renderTask.render();
renderTask.close();
// HTML HTML HTML
// html to string
File file = new File(outputFilename);
StringBuilder fileContents = new StringBuilder((int)file.length());
Scanner scanner = null;
try {
scanner = new Scanner(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String lineSeparator = System.getProperty("line.separator");
try {
while(scanner.hasNextLine()) {
fileContents.append(scanner.nextLine() + lineSeparator);
}
return fileContents.toString();
} finally {
scanner.close();
}
} catch (EngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "Report konnte nicht erzeugt werden. Bitte nicht hauen!";
}
</pre>
<br />
Attachements: BirtEngine class where I instantiate the BIRT Engine<br />
ReportHandler class which does all the report generation stuff