View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 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.submit.filters;
14  
15  import org.apache.commons.httpclient.HttpVersion;
16  import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
17  import org.apache.commons.httpclient.methods.RequestEntity;
18  
19  import com.eviware.soapui.impl.support.AbstractHttpRequest;
20  import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
21  import com.eviware.soapui.impl.wsdl.submit.transports.http.ExtendedHttpMethod;
22  import com.eviware.soapui.model.iface.SubmitContext;
23  import com.eviware.soapui.model.settings.Settings;
24  import com.eviware.soapui.settings.HttpSettings;
25  
26  public class PostPackagingRequestFilter extends AbstractRequestFilter
27  {
28  
29  	@Override
30  	public void filterAbstractHttpRequest( SubmitContext context, AbstractHttpRequest<?> request )
31  	{
32  		ExtendedHttpMethod httpMethod = ( ExtendedHttpMethod )context.getProperty( BaseHttpRequestTransport.HTTP_METHOD );
33  		Settings settings = request.getSettings();
34  
35  		// chunking?
36  		if( httpMethod.getParams().getVersion().equals( HttpVersion.HTTP_1_1 )
37  				&& httpMethod instanceof EntityEnclosingMethod )
38  		{
39  			EntityEnclosingMethod entityEnclosingMethod = ( ( EntityEnclosingMethod )httpMethod );
40  			long limit = settings.getLong( HttpSettings.CHUNKING_THRESHOLD, -1 );
41  			RequestEntity requestEntity = entityEnclosingMethod.getRequestEntity();
42  			entityEnclosingMethod.setContentChunked( limit >= 0 && requestEntity != null ? requestEntity
43  					.getContentLength() > limit : false );
44  		}
45  	}
46  
47  }