View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2009 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.actions.request;
14  
15  import java.awt.event.ActionEvent;
16  
17  import javax.swing.AbstractAction;
18  import javax.swing.Action;
19  
20  import com.eviware.soapui.impl.wsdl.WsdlOperation;
21  import com.eviware.soapui.impl.wsdl.WsdlRequest;
22  import com.eviware.soapui.impl.wsdl.support.soap.SoapUtils;
23  import com.eviware.soapui.settings.WsdlSettings;
24  import com.eviware.soapui.support.UISupport;
25  import com.eviware.soapui.support.xml.XmlUtils;
26  
27  /***
28   * Recreates a WsdlRequest from its WsdlOperations schema definition
29   * 
30   * @author Ole.Matzura
31   */
32  
33  public class RecreateRequestAction extends AbstractAction
34  {
35  	private final WsdlRequest request;
36  
37  	public RecreateRequestAction( WsdlRequest request )
38  	{
39  		super( "Recreate request" );
40  		this.request = request;
41  		putValue( Action.SMALL_ICON, UISupport.createImageIcon( "/recreate_request.gif" ) );
42  		putValue( Action.SHORT_DESCRIPTION, "Recreates a default request from the schema" );
43  	}
44  
45  	public void actionPerformed( ActionEvent e )
46  	{
47  		boolean createOptional = request.getSettings().getBoolean(
48  				WsdlSettings.XML_GENERATION_ALWAYS_INCLUDE_OPTIONAL_ELEMENTS );
49  		if( !createOptional )
50  		{
51  			Boolean create = UISupport.confirmOrCancel( "Create optional elements in schema?", "Create Request" );
52  			if( create == null )
53  				return;
54  
55  			createOptional = create.booleanValue();
56  		}
57  
58  		WsdlOperation wsdlOperation = ( WsdlOperation )request.getOperation();
59  		String req = wsdlOperation.createRequest( createOptional );
60  		if( req == null )
61  		{
62  			UISupport.showErrorMessage( "Request creation failed" );
63  			return;
64  		}
65  
66  		if( request.getRequestContent() != null && request.getRequestContent().trim().length() > 0 )
67  		{
68  			if( UISupport.confirm( "Keep existing values", "Recreate Request" ) )
69  			{
70  				req = SoapUtils.transferSoapHeaders( request.getRequestContent(), req, wsdlOperation.getInterface()
71  						.getSoapVersion() );
72  
73  				req = XmlUtils.transferValues( request.getRequestContent(), req );
74  			}
75  		}
76  
77  		request.setRequestContent( req );
78  	}
79  }