new BIRTScriptClassLoader( ),
new BIRTScriptClassLoader( appClassLoader ),
	public void onRowSets( IRowSet[] rowSets ) throws BirtException	{		// catch unwanted null handle case		if ( handle == null )		{			return;		}		String javaHandlerClass = handle.getEventHandlerClass( );		if ( javaHandlerClass != null && javaHandlerClass.length( ) > 0 )		{			// use java handler if available.			cm.setScript( javaHandlerClass );		}		// prepare the chart model.		rtc = Generator.instance( ).prepare( cm,				new BIRTExternalContext( context ),				new BIRTScriptClassLoader( ),				ULocale.getDefault( ) );		// check		if ( rowSets == null				|| rowSets.length != 1				|| rowSets[0] == null				|| queries == null				|| queries[0] == null )		{			// if the Data rows are null/empty, do nothing.			return;		}		// Evaluate the expressions so that they are registered by the DtE		// in the Report Document		IRowSet rowSet = rowSets[0];		Map expressions = queries[0].getResultSetExpressions( );		while ( rowSet.next( ) )		{			for ( Iterator iter = expressions.keySet( ).iterator( ); iter.hasNext( ); )			{				String colName = (String) iter.next( );				String expr = ExpressionUtil.createRowExpression( JavascriptEvalUtil.transformToJsConstants( colName ) );				rowSet.evaluate( expr );			}		}	}