View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2008 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 com.eviware.soapui.impl.support.components.ResponseMessageXmlEditor;
16  import com.eviware.soapui.model.iface.MessageExchange;
17  import com.eviware.soapui.support.editor.xml.support.DefaultXmlDocument;
18  
19  import java.beans.PropertyChangeEvent;
20  
21  public class MessageExchangeResponseMessageEditor extends ResponseMessageXmlEditor<MessageExchangeModelItem, DefaultXmlDocument>
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 = getDocument();
63  
64           if( messageExchange != null && messageExchange.getOperation() != null )
65              defaultXmlDocument.setTypeSystem(
66                      messageExchange.getOperation().getInterface().getDefinitionContext().getInterfaceDefinition().getSchemaTypeSystem() );
67  
68           defaultXmlDocument.setXml( messageExchange == null ? null : messageExchange.getResponseContentAsXml() );
69        }
70        catch( Exception e )
71        {
72           e.printStackTrace();
73        }
74     }
75  
76     @Override
77     public void release()
78     {
79        super.release();
80  
81        messageExchangeModelItem.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
82     }
83  }