1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.editor.inspectors.jms.property;
14
15 import java.beans.PropertyChangeEvent;
16 import java.beans.PropertyChangeListener;
17 import java.beans.PropertyChangeSupport;
18
19 import sun.reflect.generics.reflectiveObjects.NotImplementedException;
20
21 import com.eviware.soapui.model.ModelItem;
22 import com.eviware.soapui.support.types.StringToStringMap;
23
24 public interface JMSPropertyInspectorModel
25 {
26 public StringToStringMap getJMSProperties();
27
28 public void addPropertyChangeListener( PropertyChangeListener listener );
29
30 public void setJMSProperties( StringToStringMap jmsProperties );
31
32 public void removePropertyChangeListener( PropertyChangeListener listener );
33
34 public boolean isReadOnly();
35
36 public void release();
37
38 public void setInspector(JMSPropertyInspector inspector);
39
40 public static abstract class AbstractJMSPropertyModel<T extends ModelItem> implements JMSPropertyInspectorModel,
41 PropertyChangeListener
42 {
43 private boolean readOnly;
44 private PropertyChangeSupport propertyChangeSupport;
45 private final T modelItem;
46 private final String propertyName;
47
48 protected AbstractJMSPropertyModel( boolean readOnly, T modelItem, String propertyName )
49 {
50 this.readOnly = readOnly;
51 this.modelItem = modelItem;
52 this.propertyName = propertyName;
53 propertyChangeSupport = new PropertyChangeSupport( this );
54 modelItem.addPropertyChangeListener( propertyName, this );
55 }
56
57 public void addPropertyChangeListener( PropertyChangeListener listener )
58 {
59 propertyChangeSupport.addPropertyChangeListener( listener );
60 }
61
62 public boolean isReadOnly()
63 {
64 return readOnly;
65 }
66
67 public void removePropertyChangeListener( PropertyChangeListener listener )
68 {
69 propertyChangeSupport.removePropertyChangeListener( listener );
70 }
71
72 public void propertyChange( PropertyChangeEvent evt )
73 {
74 propertyChangeSupport.firePropertyChange( evt );
75 }
76
77 public void release()
78 {
79 modelItem.removePropertyChangeListener( propertyName, this );
80 }
81
82 public T getModelItem()
83 {
84 return modelItem;
85 }
86
87 public void setJMSProperties( StringToStringMap jmsPorperties )
88 {
89 if( !readOnly )
90 throw new NotImplementedException();
91 }
92 }
93 }