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.support;
14  
15  import java.beans.PropertyChangeEvent;
16  
17  import com.eviware.soapui.impl.support.components.ResponseMessageXmlEditor;
18  import com.eviware.soapui.model.iface.MessageExchange;
19  import com.eviware.soapui.support.editor.xml.support.DefaultXmlDocument;
20  
21  public class MessageExchangeResponseMessageEditor extends
22  		ResponseMessageXmlEditor<MessageExchangeModelItem, DefaultXmlDocument>
23  {
24  	private final MessageExchangeModelItem messageExchangeModelItem;
25  
26  	public MessageExchangeResponseMessageEditor( MessageExchange messageExchange )
27  	{
28  		this( new MessageExchangeModelItem( "message exchange response", messageExchange ) );
29  	}
30  
31  	public MessageExchangeResponseMessageEditor( 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  	@Override
45  	public void propertyChange( PropertyChangeEvent evt )
46  	{
47  		if( evt.getSource() == messageExchangeModelItem
48  				&& evt.getPropertyName().equals( MessageExchangeModelItem.MESSAGE_EXCHANGE ) )
49  		{
50  			updateXml();
51  		}
52  		else
53  		{
54  			super.propertyChange( evt );
55  		}
56  	}
57  
58  	public void updateXml()
59  	{
60  		try
61  		{
62  			MessageExchange messageExchange = messageExchangeModelItem.getMessageExchange();
63  			DefaultXmlDocument defaultXmlDocument = getDocument();
64  
65  			if( messageExchange != null && messageExchange.getOperation() != null )
66  				defaultXmlDocument.setTypeSystem( messageExchange.getOperation().getInterface().getDefinitionContext()
67  						.getInterfaceDefinition().getSchemaTypeSystem() );
68  
69  			defaultXmlDocument.setXml( messageExchange == null ? null : messageExchange.getResponseContentAsXml() );
70  		}
71  		catch( Exception e )
72  		{
73  			e.printStackTrace();
74  		}
75  	}
76  
77  	@Override
78  	public void release()
79  	{
80  		super.release();
81  
82  		messageExchangeModelItem.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
83  	}
84  }