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.impl.wsdl.mock;
14  
15  import java.util.Collection;
16  import java.util.Map;
17  import java.util.Set;
18  
19  import com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext;
20  import com.eviware.soapui.model.mock.MockRunContext;
21  import com.eviware.soapui.model.testsuite.TestCase;
22  import com.eviware.soapui.model.testsuite.TestRunContext;
23  import com.eviware.soapui.model.testsuite.TestRunner;
24  import com.eviware.soapui.model.testsuite.TestStep;
25  import com.eviware.soapui.model.testsuite.TestStepProperty;
26  import com.eviware.soapui.support.types.StringToObjectMap;
27  import com.eviware.soapui.support.types.StringToStringMap;
28  
29  /***
30   * MockRunContext available during dispatching of a WsdlMockRequest
31   *  
32   * @author ole.matzura
33   */
34  
35  public class WsdlMockRunContext implements MockRunContext, Map<String,Object>, TestRunContext
36  {
37  	private StringToObjectMap properties;
38  	private final WsdlMockService mockService;
39  	private final WsdlTestRunContext context; 
40  	
41  	public WsdlMockRunContext( WsdlMockService mockService, WsdlTestRunContext context )
42  	{
43  		this.mockService = mockService;
44  		this.context = context;
45  		
46  		properties = context == null ? new StringToObjectMap() : context.getProperties(); 
47  	}
48  
49  	public WsdlMockService getMockService()
50  	{
51  		return mockService;
52  	}
53  
54  	public Object getProperty( String name )
55  	{
56  		return get( name );
57  	}
58  
59  	public boolean hasProperty( String name )
60  	{
61  		return properties.containsKey( name );
62  	}
63  
64  	public Object removeProperty( String name )
65  	{
66  		return properties.remove( name );
67  	}
68  
69  	public void setProperty( String name, Object value )
70  	{
71  		if( context != null )
72  		{
73  			int ix = name.indexOf( PROPERTY_SEPARATOR );
74  			if( ix > 0 )
75  			{
76  				String teststepname = name.substring(0, ix);
77  				TestStep refTestStep = context.getTestCase().getTestStepByName( teststepname );
78  				if( refTestStep != null )
79  				{
80  					TestStepProperty property = refTestStep.getProperty( name.substring(ix+1));
81  					if( property != null && !property.isReadOnly() )
82  					{
83  						property.setValue( value.toString() );
84  						return;
85  					}
86  				}
87  			}
88  		}
89  		
90  		properties.put( name, value );
91  	}
92  
93  	public StringToStringMap toStringToStringMap()
94  	{
95  		StringToStringMap result = new StringToStringMap();
96  		
97  		for( String key : properties.keySet() )
98  		{
99  			Object value = properties.get( key );
100 			if( value != null )
101 				result.put( key, value.toString() );
102 		}
103 		
104 		return result;
105 	}
106 
107 	public void clear()
108 	{
109 		properties.clear();
110 	}
111 
112 	public Object clone()
113 	{
114 		return properties.clone();
115 	}
116 
117 	public boolean containsKey( Object arg0 )
118 	{
119 		return properties.containsKey( arg0 );
120 	}
121 
122 	public boolean containsValue( Object arg0 )
123 	{
124 		return properties.containsValue( arg0 );
125 	}
126 
127 	public Set<Entry<String, Object>> entrySet()
128 	{
129 		return properties.entrySet();
130 	}
131 
132 	public boolean equals( Object arg0 )
133 	{
134 		return properties.equals( arg0 );
135 	}
136 
137 	public Object get( Object arg0 )
138 	{
139 		return properties.get( arg0 );
140 	}
141 
142 	public int hashCode()
143 	{
144 		return properties.hashCode();
145 	}
146 
147 	public boolean isEmpty()
148 	{
149 		return properties.isEmpty();
150 	}
151 
152 	public Set<String> keySet()
153 	{
154 		return properties.keySet();
155 	}
156 
157 	public Object put( String arg0, Object arg1 )
158 	{
159 		return properties.put( arg0, arg1 );
160 	}
161 
162 	public void putAll( Map<? extends String, ? extends Object> arg0 )
163 	{
164 		properties.putAll( arg0 );
165 	}
166 
167 	public Object remove( Object arg0 )
168 	{
169 		return properties.remove( arg0 );
170 	}
171 
172 	public int size()
173 	{
174 		return properties.size();
175 	}
176 
177 	public String toString()
178 	{
179 		return properties.toString();
180 	}
181 
182 	public Collection<Object> values()
183 	{
184 		return properties.values();
185 	}
186 
187 	public TestStep getCurrentStep()
188 	{
189 		return context == null ? null : context.getCurrentStep();
190 	}
191 
192 	public int getCurrentStepIndex()
193 	{
194 		return context == null ? -1 : context.getCurrentStepIndex();
195 	}
196 
197 	public Object getProperty( String testStep, String propertyName )
198 	{
199 		return context == null ? null : context.getProperty( testStep, propertyName );
200 	}
201 
202 	public TestRunner getTestRunner()
203 	{
204 		return context == null ? null : context.getTestRunner();
205 	}
206 
207 	public TestCase getTestCase()
208 	{
209 		return context == null ? null : context.getTestCase();
210 	}
211 }