View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2007 eviware.com
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.model.propertyexpansion.resolvers;
14  
15  import com.eviware.soapui.model.propertyexpansion.PropertyExpansion;
16  import com.eviware.soapui.model.propertyexpansion.PropertyExpansionContext;
17  import com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils;
18  
19  public class ContextPropertyResolver implements PropertyResolver
20  {
21  	public String resolveProperty( PropertyExpansionContext context, String propertyName, boolean globalOverride )
22  	{
23  		Object property = null;
24  		String xpath = null ;
25  
26  		int sepIx = propertyName.indexOf( PropertyExpansion.PROPERTY_SEPARATOR );
27  		if( sepIx == 0 )
28  		{
29  			propertyName = propertyName.substring( 1 );
30  			sepIx = propertyName.indexOf( PropertyExpansion.PROPERTY_SEPARATOR );
31  		}
32  		
33  		if( sepIx > 0 )
34  		{
35  			xpath = propertyName.substring( sepIx+1 );
36  			propertyName = propertyName.substring( 0, sepIx );
37  		}
38  		
39  		if( globalOverride )
40  			property = PropertyExpansionUtils.getGlobalProperty( propertyName );
41  		
42  		if( property == null )
43  			property = context.getProperty( propertyName );
44  			
45  		if( property != null && xpath != null )
46  		{
47  			property = ResolverUtils.extractXPathPropertyValue( property, 
48  						PropertyExpansionUtils.expandProperties( context, xpath ));
49  		}
50  
51  		return property == null ? null : property.toString();
52  	}
53  
54  }