String.valueOf( evaluator.evaluate( pbh.getExpression( ) ) ) );
evaluator.evaluateGlobal( pbh.getExpression( ) ) );
	public void processAction( Action action, StructureSource source )	{		if ( ActionType.URL_REDIRECT_LITERAL.equals( action.getType( ) ) )		{			URLValue uv = (URLValue) action.getValue( );			String sa = uv.getBaseUrl( );			String target = null;			if ( StructureType.SERIES_DATA_POINT.equals( source.getType( ) ) )			{				final DataPointHints dph = (DataPointHints) source.getSource( );				try				{					final ActionHandle handle = ModuleUtil.deserializeAction( sa );					target = handle.getTargetWindow( );					// use engine api to convert actionHandle to a final url					// value.					sa = handler.getURL( new IAction( ) {						public int getType( )						{							if ( DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals( handle.getLinkType( ) ) )								return IAction.ACTION_HYPERLINK;							if ( DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals( handle.getLinkType( ) ) )								return IAction.ACTION_BOOKMARK;							if ( DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals( handle.getLinkType( ) ) )								return IAction.ACTION_DRILLTHROUGH;							return 0;						}						public String getBookmark( )						{							return (String) dph.getUserValue( handle.getTargetBookmark( ) );						}						public String getActionString( )						{							if ( DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals( handle.getLinkType( ) ) )								return (String) dph.getUserValue( handle.getURI( ) );							if ( DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals( handle.getLinkType( ) ) )								return (String) dph.getUserValue( handle.getTargetBookmark( ) );							return null;						}						public String getReportName( )						{							return handle.getReportName( );						}						public Map getParameterBindings( )						{							Map map = new HashMap( );							for ( Iterator itr = handle.getParamBindings( )									.iterator( ); itr.hasNext( ); )							{								ParamBindingHandle pbh = (ParamBindingHandle) itr.next( );								map.put( pbh.getParamName( ),										(String) dph.getUserValue( pbh.getExpression( ) ) );							}							return map;						}						public Map getSearchCriteria( )						{							Map map = new HashMap( );							for ( Iterator itr = handle.getSearch( ).iterator( ); itr.hasNext( ); )							{								SearchKeyHandle skh = (SearchKeyHandle) itr.next( );								map.put( skh.getExpression( ),										(String) dph.getUserValue( skh.getExpression( ) ) );							}							return map;						}						public String getTargetWindow( )						{							return handle.getTargetWindow( );						}						public String getFormat( )						{							return handle.getFormatType( );						}					},							context );				}				catch ( Exception e )				{					sa = ""; //$NON-NLS-1$					logger.log( e );				}			}			else			{				try				{					final ActionHandle handle = ModuleUtil.deserializeAction( sa );					target = handle.getTargetWindow( );					// use engine api to convert actionHandle to a final url					// value.					sa = handler.getURL( new IAction( ) {						public int getType( )						{							if ( DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals( handle.getLinkType( ) ) )								return IAction.ACTION_HYPERLINK;							if ( DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals( handle.getLinkType( ) ) )								return IAction.ACTION_BOOKMARK;							if ( DesignChoiceConstants.ACTION_LINK_TYPE_DRILL_THROUGH.equals( handle.getLinkType( ) ) )								return IAction.ACTION_DRILLTHROUGH;							return 0;						}						public String getBookmark( )						{							return String.valueOf( evaluator.evaluate( handle.getTargetBookmark( ) ) );						}						public String getActionString( )						{							if ( DesignChoiceConstants.ACTION_LINK_TYPE_HYPERLINK.equals( handle.getLinkType( ) ) )								return String.valueOf( evaluator.evaluate( handle.getURI( ) ) );							if ( DesignChoiceConstants.ACTION_LINK_TYPE_BOOKMARK_LINK.equals( handle.getLinkType( ) ) )								return String.valueOf( evaluator.evaluate( handle.getTargetBookmark( ) ) );							return null;						}						public String getReportName( )						{							return handle.getReportName( );						}						public Map getParameterBindings( )						{							Map map = new HashMap( );							for ( Iterator itr = handle.getParamBindings( )									.iterator( ); itr.hasNext( ); )							{								ParamBindingHandle pbh = (ParamBindingHandle) itr.next( );								map.put( pbh.getParamName( ),										String.valueOf( evaluator.evaluate( pbh.getExpression( ) ) ) );							}							return map;						}						public Map getSearchCriteria( )						{							Map map = new HashMap( );							for ( Iterator itr = handle.getSearch( ).iterator( ); itr.hasNext( ); )							{								SearchKeyHandle skh = (SearchKeyHandle) itr.next( );								map.put( skh.getExpression( ),										String.valueOf( evaluator.evaluate( skh.getExpression( ) ) ) );							}							return map;						}						public String getTargetWindow( )						{							return handle.getTargetWindow( );						}						public String getFormat( )						{							return handle.getFormatType( );						}					},							context );				}				catch ( Exception e )				{					sa = ""; //$NON-NLS-1$					logger.log( e );				}			}			uv.setBaseUrl( sa );			uv.setTarget( target );		}	}