1
2
3
4
5
6
7
8
9
10 package org.mule.transport.ajax.container;
11
12 import org.mule.api.MuleContext;
13 import org.mule.api.MuleException;
14 import org.mule.api.construct.FlowConstruct;
15 import org.mule.api.endpoint.ImmutableEndpoint;
16 import org.mule.api.endpoint.InboundEndpoint;
17 import org.mule.api.transport.MessageReceiver;
18 import org.mule.api.transport.ReplyToHandler;
19 import org.mule.transport.AbstractConnector;
20 import org.mule.transport.ajax.AjaxMessageReceiver;
21 import org.mule.transport.ajax.AjaxReplyToHandler;
22 import org.mule.transport.ajax.BayeuxAware;
23 import org.mule.transport.ajax.embedded.AjaxConnector;
24 import org.mule.transport.servlet.ServletConnector;
25
26 import org.cometd.DataFilter;
27 import org.mortbay.cometd.AbstractBayeux;
28
29
30
31
32
33 public class AjaxServletConnector extends ServletConnector implements BayeuxAware
34 {
35 public static final String PROTOCOL = "ajax-servlet";
36
37
38
39
40
41 private int interval = INT_VALUE_NOT_SET;
42
43
44
45
46
47 private int maxInterval = INT_VALUE_NOT_SET;
48
49
50
51
52
53 private int multiFrameInterval = INT_VALUE_NOT_SET;
54
55
56
57
58 private int logLevel = INT_VALUE_NOT_SET;
59
60
61
62
63
64 private int timeout = INT_VALUE_NOT_SET;
65
66
67
68
69
70 private boolean jsonCommented = true;
71
72
73
74
75
76 private String filters;
77
78
79
80
81
82 private boolean requestAvailable = true;
83
84
85
86
87
88
89 private int refsThreshold = INT_VALUE_NOT_SET;
90
91
92 protected AbstractBayeux bayeux;
93
94 public AjaxServletConnector(MuleContext context)
95 {
96 super(context);
97 registerSupportedProtocolWithoutPrefix(AjaxConnector.PROTOCOL);
98
99 setInitialStateStopped(true);
100 }
101
102 public AbstractBayeux getBayeux()
103 {
104 return bayeux;
105 }
106
107 public void setBayeux(AbstractBayeux bayeux) throws MuleException
108 {
109 this.bayeux = bayeux;
110 this.getBayeux().setJSONCommented(isJsonCommented());
111 if(getLogLevel() != AbstractConnector.INT_VALUE_NOT_SET) this.getBayeux().setLogLevel(getLogLevel());
112 if(getMaxInterval() != AbstractConnector.INT_VALUE_NOT_SET) this.getBayeux().setMaxInterval(getMaxInterval());
113 if(getInterval() != AbstractConnector.INT_VALUE_NOT_SET) this.getBayeux().setInterval(getMaxInterval());
114 if(getMultiFrameInterval() != AbstractConnector.INT_VALUE_NOT_SET) this.getBayeux().setMultiFrameInterval(getMultiFrameInterval());
115 if(getTimeout() != AbstractConnector.INT_VALUE_NOT_SET) this.getBayeux().setTimeout(getMultiFrameInterval());
116
117 this.setInitialStateStopped(false);
118
119 for (Object receiver : receivers.values())
120 {
121 ((AjaxMessageReceiver)receiver).setBayeux(getBayeux());
122 }
123 start();
124 }
125
126 @Override
127 public String getProtocol()
128 {
129 return PROTOCOL;
130 }
131
132 public int getInterval()
133 {
134 return interval;
135 }
136
137 public void setInterval(int interval)
138 {
139 this.interval = interval;
140 }
141
142 public int getMaxInterval()
143 {
144 return maxInterval;
145 }
146
147 public void setMaxInterval(int maxInterval)
148 {
149 this.maxInterval = maxInterval;
150 }
151
152 public int getMultiFrameInterval()
153 {
154 return multiFrameInterval;
155 }
156
157 public void setMultiFrameInterval(int multiFrameInterval)
158 {
159 this.multiFrameInterval = multiFrameInterval;
160 }
161
162 public int getLogLevel()
163 {
164 return logLevel;
165 }
166
167 public void setLogLevel(int logLevel)
168 {
169 this.logLevel = logLevel;
170 }
171
172 public int getTimeout()
173 {
174 return timeout;
175 }
176
177 public void setTimeout(int timeout)
178 {
179 this.timeout = timeout;
180 }
181
182 public boolean isJsonCommented()
183 {
184 return jsonCommented;
185 }
186
187 public void setJsonCommented(boolean jsonCommented)
188 {
189 this.jsonCommented = jsonCommented;
190 }
191
192 public String getFilters()
193 {
194 return filters;
195 }
196
197 public void setFilters(String filters)
198 {
199 this.filters = filters;
200 }
201
202 public boolean isRequestAvailable()
203 {
204 return requestAvailable;
205 }
206
207 public void setRequestAvailable(boolean requestAvailable)
208 {
209 this.requestAvailable = requestAvailable;
210 }
211
212 public int getRefsThreshold()
213 {
214 return refsThreshold;
215 }
216
217 public void setRefsThreshold(int refsThreshold)
218 {
219 this.refsThreshold = refsThreshold;
220 }
221
222 @Override
223 public ReplyToHandler getReplyToHandler(ImmutableEndpoint endpoint)
224 {
225 return new AjaxReplyToHandler(getDefaultResponseTransformers(endpoint), this);
226 }
227
228 @Override
229 protected MessageReceiver createReceiver(FlowConstruct flowConstruct, InboundEndpoint endpoint) throws Exception
230 {
231 AjaxMessageReceiver receiver = (AjaxMessageReceiver) super.createReceiver(flowConstruct, endpoint);
232
233 receiver.setBayeux(getBayeux());
234 return receiver;
235 }
236 }