1
2
3
4
5
6
7
8
9
10
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 }