Bug 123722 Java based scripting -> getExpressionValue(int i) of IRowData returns unreasonable value
public void onPrepare( IRow row, IReportContext reportContext ) { try { row.setBookmark( "\"row-bookmark\"" ); System.out.println( row.getBookmark( ) ); } catch ( Exception e ) { e.printStackTrace( ); } } public void onCreate(IRowInstance rowInstance, IReportContext reportContext) { try { IRowData rowData = rowInstance.getRowData( ); Object int2 = rowData.getExpressionValue( 1 ); System.out.println( int2 ); } catch ( Exception e ) { e.printStackTrace( ); } } Consider the script above, according to Javadoc, rowData.getExpressionValue( 1 ) will return the first data expr. of the row, i.e. the value of the first column. However, it was noticed that "row-bookmark" was returned instead. And if i used rowData.getExpressionValue( 2 ), then i got the right value. So if it was the correct implementation, it should be clearly stated in Javadoc.
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/executor/TableItemExecutor.java
{
			for ( int i = 0; i < band.getRowCount( ); i++ )
			{
				accessRow( band.getRow( i ), emitter, rowData );
			}
		}
	}
	/**
	 * not all row design create corrsponds row content. To some row designs,
	 * they share one row content, each design creates only cells of that row.
	 * If the row start is true, the next row design should call startRow().
	 */
	transient private boolean rowClosed = true;
	/**
	 * output the row. row is output as: row start, cells*, row end.
	 * 
	 * @param rowIndex
	 *            the index in the rows
	 * @param row
	 *            row design
	 * @param emitter
	 *            output emitter
	 */
	protected void accessRow( RowDesign row, IContentEmitter emitter,
			IRowData rowData )
	{
		if ( rowClosed )
		{
			IRowContent rowContent = report.createRowContent( );
			rowContent.setRowID( rowId++ );