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.support;
14  
15  import java.beans.PropertyChangeEvent;
16  
17  import com.eviware.soapui.SoapUI;
18  import com.eviware.soapui.impl.wsdl.panels.request.components.RequestMessageXmlEditor;
19  import com.eviware.soapui.impl.wsdl.panels.request.components.editor.support.DefaultXmlDocument;
20  import com.eviware.soapui.model.iface.MessageExchange;
21  
22  public class MessageExchangeRequestMessageEditor extends RequestMessageXmlEditor<MessageExchangeModelItem>
23  {
24  	private final MessageExchangeModelItem messageExchangeModelItem;
25  
26  	public MessageExchangeRequestMessageEditor( MessageExchange messageExchange  )
27  	{
28  		this( new MessageExchangeModelItem( "message exchange request", messageExchange ));
29  	}
30  	
31  	public MessageExchangeRequestMessageEditor( MessageExchangeModelItem messageExchangeModelItem  )
32  	{
33  		super( new DefaultXmlDocument(), messageExchangeModelItem );
34  		this.messageExchangeModelItem = messageExchangeModelItem;
35  		
36  		if( messageExchangeModelItem.getMessageExchange() != null )
37  			updateXml();
38  		
39  		messageExchangeModelItem.addPropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
40  		
41  		setEditable( false );
42  	}
43  
44  	public void updateXml()
45  	{
46  		try
47  		{
48  			MessageExchange messageExchange = messageExchangeModelItem.getMessageExchange();
49  			DefaultXmlDocument defaultXmlDocument = ((DefaultXmlDocument)getXmlDocument());
50  			
51  			if( messageExchange != null )
52  				defaultXmlDocument.setTypeSystem( messageExchange.getOperation().getInterface().getWsdlContext().getSchemaTypeSystem() );
53  
54  			defaultXmlDocument.setXml( messageExchange == null ? null : messageExchange.getRequestContent() );
55  		}
56  		catch( Throwable e )
57  		{
58  			SoapUI.logError( e );
59  		}
60  	}
61  
62  	@Override
63  	public void propertyChange( PropertyChangeEvent evt )
64  	{
65  		if( evt.getSource() == messageExchangeModelItem && 
66  			 evt.getPropertyName().equals( MessageExchangeModelItem.MESSAGE_EXCHANGE ))
67  		{
68  			updateXml();
69  		}
70  		else
71  		{
72  			super.propertyChange( evt );
73  		}
74  	}
75  
76  	@Override
77  	public void release()
78  	{
79  		super.release();
80  		
81  		messageExchangeModelItem.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
82  	}
83  }