if ( dataExpr == null ) return null;  try { Context cx = Context.enter( ); if ( dataExpr instanceof IScriptExpression ) { Object value = JavascriptEvalUtil.evaluateRawScript( cx, scope, ( (IScriptExpression) dataExpr ).getText( ), "source", 0 ); value = DataTypeUtil.convert( JavascriptEvalUtil.convertJavascriptValue( value ), dataExpr.getDataType( ) ); return value; } else if ( dataExpr instanceof IConditionalExpression ) { if( dataExpr.getHandle( )!= null ) return new Boolean(((NEvaluator)dataExpr.getHandle( )).evaluate( cx, scope ));  IScriptExpression opr = ( (IConditionalExpression) dataExpr ).getExpression( ); int oper = ( (IConditionalExpression) dataExpr ).getOperator( ); IScriptExpression operand1 = ( (IConditionalExpression) dataExpr ).getOperand1( ); IScriptExpression operand2 = ( (IConditionalExpression) dataExpr ).getOperand2( );  return ScriptEvalUtil.evalConditionalExpr( evaluateRawExpression( opr, scope ), oper, evaluateRawExpression( operand1, scope ), evaluateRawExpression( operand2, scope ) ); } else { assert false; return null; }  } finally { Context.exit( ); }
return doEvaluateRawExpression( dataExpr, scope, false );
	public static Object evaluateRawExpression( IBaseExpression dataExpr,			Scriptable scope ) throws BirtException	{		if ( dataExpr == null )			return null;				try		{			Context cx = Context.enter( );			if ( dataExpr instanceof IScriptExpression )			{				Object value = JavascriptEvalUtil.evaluateRawScript( cx,						scope,						( (IScriptExpression) dataExpr ).getText( ),						"source",						0 );				value = DataTypeUtil.convert( JavascriptEvalUtil.convertJavascriptValue( value ),						dataExpr.getDataType( ) );				return value;			}			else if ( dataExpr instanceof IConditionalExpression )			{				if( dataExpr.getHandle( )!= null )					return new Boolean(((NEvaluator)dataExpr.getHandle( )).evaluate( cx, scope ));								IScriptExpression opr = ( (IConditionalExpression) dataExpr ).getExpression( );				int oper = ( (IConditionalExpression) dataExpr ).getOperator( );				IScriptExpression operand1 = ( (IConditionalExpression) dataExpr ).getOperand1( );				IScriptExpression operand2 = ( (IConditionalExpression) dataExpr ).getOperand2( );								return ScriptEvalUtil.evalConditionalExpr( evaluateRawExpression( opr,						scope ),						oper,						evaluateRawExpression( operand1, scope ),						evaluateRawExpression( operand2, scope ) );			}			else			{				assert false;				return null;			}					}		finally		{			Context.exit( );		}	}