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.SoapUI;
16  import com.eviware.soapui.impl.support.components.RequestMessageXmlEditor;
17  import com.eviware.soapui.model.iface.MessageExchange;
18  import com.eviware.soapui.support.editor.xml.support.DefaultXmlDocument;
19  
20  import java.beans.PropertyChangeEvent;
21  
22  public class MessageExchangeRequestMessageEditor extends RequestMessageXmlEditor<MessageExchangeModelItem, DefaultXmlDocument>
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 = getDocument();
50  
51           if( messageExchange != null && messageExchange.getOperation() != null )
52              defaultXmlDocument.setTypeSystem(
53                      messageExchange.getOperation().getInterface().getDefinitionContext().getInterfaceDefinition().getSchemaTypeSystem() );
54  
55           defaultXmlDocument.setXml( messageExchange == null ? null : messageExchange.getRequestContentAsXml() );
56        }
57        catch( Throwable e )
58        {
59           SoapUI.logError( e );
60        }
61     }
62  
63     @Override
64     public void propertyChange( PropertyChangeEvent evt )
65     {
66        if( evt.getSource() == messageExchangeModelItem &&
67                evt.getPropertyName().equals( MessageExchangeModelItem.MESSAGE_EXCHANGE ) )
68        {
69           updateXml();
70        }
71        else
72        {
73           super.propertyChange( evt );
74        }
75     }
76  
77     @Override
78     public void release()
79     {
80        super.release();
81  
82        messageExchangeModelItem.removePropertyChangeListener( MessageExchangeModelItem.MESSAGE_EXCHANGE, this );
83     }
84  }