View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2008 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 com.eviware.soapui.impl.support.AbstractHttpRequest;
16  import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
17  import com.eviware.soapui.impl.wsdl.support.CompressionSupport;
18  import com.eviware.soapui.model.iface.SubmitContext;
19  import com.eviware.soapui.model.settings.Settings;
20  import com.eviware.soapui.settings.HttpSettings;
21  import org.apache.log4j.Logger;
22  
23  public class HttpCompressionRequestFilter extends AbstractRequestFilter
24  {
25     private final static Logger log = Logger.getLogger( HttpCompressionRequestFilter.class );
26  
27     @Override
28     public void filterAbstractHttpRequest( SubmitContext context, AbstractHttpRequest<?> httpRequest )
29     {
30        String requestContent = ( String ) context.getProperty( BaseHttpRequestTransport.REQUEST_CONTENT );
31        if( requestContent == null )
32        {
33           log.warn( "Missing request content in context, skipping property expansion" );
34        }
35        else
36        {
37           Settings settings = httpRequest.getSettings();
38           String compressionAlg = settings.getString( HttpSettings.REQUEST_COMPRESSION, "None" );
39           if( !"None".equals( compressionAlg ) )
40           {
41              try
42              {
43                 requestContent = new String( CompressionSupport.compress( compressionAlg, requestContent.getBytes() ) );
44              }
45              catch( Exception e )
46              {
47                 e.printStackTrace();
48              }
49           }
50  
51           if( requestContent != null )
52           {
53              context.setProperty( BaseHttpRequestTransport.REQUEST_CONTENT, requestContent );
54           }
55        }
56  
57     }
58  }