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