<p>Hello,</p>
<p> </p>
<p>I'm working with BIRT since some month now and integrating it into our webapplication. We use the design API to generate a reportdesign on the fly and add user input to the reports.</p>
<p>As we came to implement the feature of TableGroups we were happy, that this was done straight forward.</p>
<p>On our server we have the java flag "-ea" (enable assertions) set and get an AssertionError when adding a TableGroup to the table.</p>
<p> </p>
<p>I prepared a sample test code that works when run without flag "-ea":</p>
<pre class="_prettyXprint _lang-js">
@Test
public void testCreateReportDesign() throws BirtException {
DesignConfig config = new DesignConfig();
Platform.startup(config);
IDesignEngineFactory designEngineFactory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
IDesignEngine engine = designEngineFactory.createDesignEngine(config);
SessionHandle session = engine.newSessionHandle(ULocale.GERMAN);
final ReportDesignHandle design = session.createDesign();
final ElementFactory elementFactory = design.getElementFactory();
SimpleMasterPageHandle masterPage = elementFactory.newSimpleMasterPage("Page Master");
masterPage.setOrientation(DesignChoiceConstants.PAGE_ORIENTATION_LANDSCAPE);
masterPage.setPageType(DesignChoiceConstants.PAGE_SIZE_A4);
design.getMasterPages().add(masterPage);
// set label on masterpage
LabelHandle label = elementFactory.newLabel("cap_report");
label.setText("testheading");
masterPage.getPageHeader().add(label);
TableHandle table = elementFactory.newTableItem("mainTable", 1);
table.setProperty(IStyleModel.TEXT_ALIGN_PROP, DesignChoiceConstants.TEXT_ALIGN_CENTER);
table.setWidth("100%");
// table.setProperty(TableHandle.DATA_SET_PROP, DATASET +"main");
design.getBody().add(table);
ColumnHandle column = elementFactory.newTableColumn();
table.getColumns().add(column);
TableGroupHandle group = elementFactory.newTableGroup();
group.setName("groupTest");
Expression exp = new Expression("if(1=1){\"1\";}", ExpressionType.JAVASCRIPT);
group.setExpressionProperty(IGroupElementModel.KEY_EXPR_PROP, exp);
table.getGroups().add(group);
}
</pre>
<p>When adding the flag we get the following stacktrace:</p>
<pre class="_prettyXprint _lang-">
java.lang.AssertionError
at org.eclipse.birt.report.model.command.GroupElementCommand.doAdd(GroupElementCommand.java:353)
at org.eclipse.birt.report.model.command.AbstractContentCommand.add(AbstractContentCommand.java:160)
at org.eclipse.birt.report.model.command.AbstractContentCommand.add(AbstractContentCommand.java:143)
at org.eclipse.birt.report.model.command.AbstractContentCommand.add(AbstractContentCommand.java:258)
at org.eclipse.birt.report.model.api.SlotHandle.add(SlotHandle.java:126)
at org.eclipse.birt.report.model.api.SlotHandle.add(SlotHandle.java:80)
at BirtTest.testCreateReportDesign(BirtTest.java:76)
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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
</pre>
<div>
<p> </p>
</div>
<div>What am I doing in wrong? Is the only solution to disable assertions?</div>
<div>What is this namespace check for?</div>
<div> </div>
<div>Many thanks for any answer!</div>
<div>Kind regards, Georg</div>
<div> </div>
<div><u>edit:</u></div>
<div>we are currently using birt via the following maven dependency:</div>
<div>
<pre class="_prettyXprint _lang-js">
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.4.0</version><!--$NO-MVN-MAN-VER$-->
</dependency>
</pre>
</div>