1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.support.editor.inspectors.httpheaders;
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.editor.inspectors.AbstractXmlInspector;
23 import com.eviware.soapui.support.types.StringToStringMap;
24
25 public interface HttpHeadersInspectorModel
26 {
27 public StringToStringMap getHeaders();
28
29 public void addPropertyChangeListener(PropertyChangeListener listener);
30
31 public void setHeaders(StringToStringMap headers);
32
33 public void removePropertyChangeListener(PropertyChangeListener listener);
34
35 public boolean isReadOnly();
36
37 public void release();
38
39 public void setInspector(AbstractXmlInspector inspector);
40
41 public static abstract class AbstractHeadersModel<T extends ModelItem> implements HttpHeadersInspectorModel,
42 PropertyChangeListener
43 {
44 private boolean readOnly;
45 private PropertyChangeSupport propertyChangeSupport;
46 private final T modelItem;
47 private final String propertyName;
48
49 protected AbstractHeadersModel(boolean readOnly, T modelItem, String propertyName)
50 {
51 this.readOnly = readOnly;
52 this.modelItem = modelItem;
53 this.propertyName = propertyName;
54 propertyChangeSupport = new PropertyChangeSupport(this);
55 modelItem.addPropertyChangeListener(propertyName, this);
56 }
57
58 public void addPropertyChangeListener(PropertyChangeListener listener)
59 {
60 propertyChangeSupport.addPropertyChangeListener(listener);
61 }
62
63 public boolean isReadOnly()
64 {
65 return readOnly;
66 }
67
68 public void removePropertyChangeListener(PropertyChangeListener listener)
69 {
70 propertyChangeSupport.removePropertyChangeListener(listener);
71 }
72
73 public void propertyChange(PropertyChangeEvent evt)
74 {
75 propertyChangeSupport.firePropertyChange(evt);
76 }
77
78 public void release()
79 {
80 modelItem.removePropertyChangeListener(propertyName, this);
81 }
82
83 public T getModelItem()
84 {
85 return modelItem;
86 }
87
88 public void setHeaders(StringToStringMap headers)
89 {
90 if (!readOnly)
91 throw new NotImplementedException();
92 }
93
94 public void setInspector(AbstractXmlInspector inspector)
95 {
96 }
97 }
98 }