View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 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.support.editor.inspectors.jms.property;
14  
15  import java.beans.PropertyChangeEvent;
16  import java.util.ArrayList;
17  import java.util.List;
18  
19  import com.eviware.soapui.config.JMSPropertyConfig;
20  import com.eviware.soapui.impl.support.AbstractHttpRequest;
21  import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint;
22  import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.JMSUtils;
23  import com.eviware.soapui.model.ModelItem;
24  import com.eviware.soapui.support.editor.Editor;
25  import com.eviware.soapui.support.editor.EditorInspector;
26  import com.eviware.soapui.support.editor.inspectors.jms.property.JMSPropertyInspectorModel.AbstractJMSPropertyModel;
27  import com.eviware.soapui.support.editor.registry.RequestInspectorFactory;
28  import com.eviware.soapui.support.editor.registry.ResponseInspectorFactory;
29  import com.eviware.soapui.support.types.StringToStringMap;
30  
31  public class JMSPropertyInspectorFactory implements RequestInspectorFactory, ResponseInspectorFactory
32  {
33  	public static final String INSPECTOR_ID = "JMS Properties";
34  
35  	public String getInspectorId()
36  	{
37  		return INSPECTOR_ID;
38  	}
39  
40  	public EditorInspector<?> createRequestInspector( Editor<?> editor, ModelItem modelItem )
41  	{
42  		if( modelItem instanceof AbstractHttpRequest<?> )
43  		{
44  			JMSPropertyInspector inspector = new JMSPropertyInspector(
45  					( JMSPropertyInspectorModel )new WsdlRequestJMSPropertiesModel( ( AbstractHttpRequest<?> )modelItem ) );
46  			inspector.setEnabled( JMSUtils.checkIfJMS( modelItem ) );
47  			return inspector;
48  		}
49  		return null;
50  	}
51  
52  	public EditorInspector<?> createResponseInspector( Editor<?> editor, ModelItem modelItem )
53  	{
54  
55  		return null;
56  	}
57  
58  	private class WsdlRequestJMSPropertiesModel extends AbstractJMSPropertyModel<AbstractHttpRequest<?>>
59  	{
60  		AbstractHttpRequest<?> request;
61  		JMSPropertyInspector inspector;
62  
63  		public WsdlRequestJMSPropertiesModel( AbstractHttpRequest<?> wsdlRequest )
64  		{
65  			super( false, wsdlRequest, "jmsProperty" );
66  			this.request = wsdlRequest;
67  			request.addPropertyChangeListener( this );
68  		}
69  
70  		public void propertyChange( PropertyChangeEvent evt )
71  		{
72  			if( request.getEndpoint() != null && evt.getPropertyName().equals( AbstractHttpRequest.ENDPOINT_PROPERTY ) )
73  			{
74  				inspector.setEnabled( request.getEndpoint().startsWith( JMSEndpoint.JMS_ENDPIONT_PREFIX ) );
75  			}
76  			super.propertyChange( evt );
77  		}
78  
79  		@Override
80  		public void release()
81  		{
82  			super.release();
83  			request.removePropertyChangeListener( this );
84  		}
85  
86  		public StringToStringMap getJMSProperties()
87  		{
88  			List<JMSPropertyConfig> propertyList = request.getJMSPropertiesConfig().getJMSProperties();
89  			StringToStringMap stringToStringMap = new StringToStringMap( propertyList.size() );
90  			for( JMSPropertyConfig jmsProperty : propertyList )
91  			{
92  				stringToStringMap.put( jmsProperty.getName(), jmsProperty.getValue() );
93  			}
94  			return stringToStringMap;
95  		}
96  
97  		public void setJMSProperties( StringToStringMap stringToStringMap )
98  		{
99  			String[] keyList = stringToStringMap.getKeys();
100 			List<JMSPropertyConfig> propertyList = new ArrayList<JMSPropertyConfig>();
101 			for( String key : keyList )
102 			{
103 				JMSPropertyConfig jmsPropertyConfig = JMSPropertyConfig.Factory.newInstance();
104 				jmsPropertyConfig.setName( key );
105 				jmsPropertyConfig.setValue( stringToStringMap.get( key ) );
106 				propertyList.add( jmsPropertyConfig );
107 			}
108 			List<JMSPropertyConfig> propertyList2 = request.getJMSPropertiesConfig().getJMSProperties();
109 			propertyList2.clear();
110 			propertyList2.addAll( propertyList );
111 		}
112 
113 		public void setInspector( JMSPropertyInspector inspector )
114 		{
115 			this.inspector = inspector;
116 		}
117 	}
118 
119 }