Bug 123523 Previewing a scripted data set mapped to a java event handler throws NPE
When previewing a scripted data set we try to get a class loader from the ExecutionContext. (See ScriptExecutor.getClassUsingCustomClassPath). The context will be null in this case. The reason for using the context is to use cached class loaders when possible. Need to use some other mechanism to get the class loader if the context is null. We can either provide an external map to use as cache, or not bother with caching at all.
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/script/internal/ScriptExecutor.java
{
	public static final String PROPERTYSEPARATOR = ";";
	public static final String WEBAPP_CLASSPATH_KEY = "webapplication.projectclasspath";
	public static final String WORKSPACE_CLASSPATH_KEY = "workspace.projectclasspath";
	public static final String PROJECT_CLASSPATH_KEY = "user.projectclasspath";
	protected static Logger log = Logger.getLogger( ScriptExecutor.class
			.getName( ) );
	protected static JSScriptStatus handleJS( Object scope, Expression js,
			ExecutionContext context )
	{
		return handleJSInternal( scope, js, context );
	}
	protected static JSScriptStatus handleJS( Object scope, String js,
			ExecutionContext context )
	{
		return handleJSInternal( scope, js, context );
	}
	private static JSScriptStatus handleJSInternal( Object scope, Object js,
			ExecutionContext context )
	{
		if ( js != null )
		{
			if ( !( js instanceof String || js instanceof Expression ) )
				return JSScriptStatus.NO_RUN;
			try
			{
				if ( scope != null )
					context.newScope( scope );
				Object result = null;
				if ( js instanceof String )