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.ResponseMessageXmlEditor;
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 MessageExchangeResponseMessageEditor extends ResponseMessageXmlEditor<MessageExchangeModelItem>
22  {
23  	private final MessageExchangeModelItem messageExchangeModelItem;
24  
25  	public MessageExchangeResponseMessageEditor( MessageExchange messageExchange  )
26  	{
27  		this( new MessageExchangeModelItem( "message exchange response", messageExchange ));
28  	}
29  	
30  	public MessageExchangeResponseMessageEditor( 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  	@Override
44  	public void propertyChange( PropertyChangeEvent evt )
45  	{
46  		if( evt.getSource() == messageExchangeModelItem && 
47  			 evt.getPropertyName().equals( MessageExchangeModelItem.MESSAGE_EXCHANGE ))
48  		{
49  			updateXml();
50  		}
51  		else
52  		{
53  			super.propertyChange( evt );
54  		}
55  	}
56  
57  	public void updateXml()
58  	{
59  		try
60  		{
61  			MessageExchange messageExchange = messageExchangeModelItem.getMessageExchange();
62  			DefaultXmlDocument defaultXmlDocument = ((DefaultXmlDocument)getXmlDocument());
63  			
64  			if( messageExchange != null && messageExchange.getOperation() != null  )
65  				defaultXmlDocument.setTypeSystem( messageExchange.getOperation().getInterface().getWsdlContext().getSchemaTypeSystem() );
66  
67  			defaultXmlDocument.setXml( messageExchange == null ? null : messageExchange.getResponseContent() );
68  		}
69  		catch( Exception e )
70  		{
71  			e.printStackTrace();
72  		}
73  	}
74  
75  	@Override
76  	public void release()
77  	{
78  		super.release();
79  		
80  		messageExchangeModelItem.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
81  	}
82  }