001 /**
002 * Copyright (C) 2009-2011 the original author or authors.
003 * See the notice.md file distributed with this work for additional
004 * information regarding copyright ownership.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.fusesource.restygwt.example.client.dispatcher;
020
021 import org.fusesource.restygwt.client.cache.DefaultQueueableCacheStorage;
022 import org.fusesource.restygwt.client.cache.QueueableCacheStorage;
023 import org.fusesource.restygwt.client.cache.VolatileQueueableCacheStorage;
024 import org.fusesource.restygwt.client.callback.CachingCallbackFilter;
025 import org.fusesource.restygwt.client.callback.CallbackFactory;
026 import org.fusesource.restygwt.client.callback.CallbackFilter;
027 import org.fusesource.restygwt.client.callback.DefaultCallbackFactory;
028 import org.fusesource.restygwt.client.callback.RestfulCachingCallbackFilter;
029 import org.fusesource.restygwt.client.callback.RetryingCallbackFactory;
030 import org.fusesource.restygwt.client.callback.XSRFToken;
031 import org.fusesource.restygwt.client.callback.XSRFTokenCallbackFilter;
032 import org.fusesource.restygwt.client.dispatcher.CachingDispatcherFilter;
033 import org.fusesource.restygwt.client.dispatcher.DefaultDispatcherFilter;
034 import org.fusesource.restygwt.client.dispatcher.DefaultFilterawareDispatcher;
035 import org.fusesource.restygwt.client.dispatcher.DispatcherFilter;
036 import org.fusesource.restygwt.client.dispatcher.FilterawareDispatcher;
037 import org.fusesource.restygwt.client.dispatcher.RestfulCachingDispatcherFilter;
038 import org.fusesource.restygwt.client.dispatcher.XSRFTokenDispatcherFilter;
039
040 /**
041 * this factory can be used to create a Dispatcher which can be used as dispatcher Option on
042 * the RestService interface.<br />
043 * <code><pre>
044 * public class RestfulRetryingDispatcherSingleton implements Dispatcher{
045 *
046 * public static Dispatcher INSTANCE = new DispatcherFactory().restfulCachingDispatcher();
047 *
048 * // do not allow concrete instances of this class
049 * private RestfulRetryingDispatcherSingleton(){
050 * throw new Error("never called");
051 * }
052 *
053 * public Request send(Method method, RequestBuilder builder) throws RequestException {
054 * return null; // dummy
055 * }
056 * }
057 * </pre></code>
058 *
059 * @author kristian
060 *
061 */
062 public class DispatcherFactory {
063
064 public static final XSRFToken xsrf = new XSRFToken();
065
066 public FilterawareDispatcher xsrfProtectionDispatcher(){
067 DispatcherFilter xsrfDispatcherFilter = new XSRFTokenDispatcherFilter(xsrf);
068
069 CallbackFilter xsrfCallbackFilter = new XSRFTokenCallbackFilter(xsrf);
070 CallbackFactory callbackFactory = new DefaultCallbackFactory(xsrfCallbackFilter);
071 DispatcherFilter defaultDispatcherFilter = new DefaultDispatcherFilter(callbackFactory);
072
073 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(xsrfDispatcherFilter, defaultDispatcherFilter);
074
075 return dispatcher;
076 }
077
078 public FilterawareDispatcher cachingDispatcher(){
079 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
080
081 CallbackFilter cachingCallbackFilter = new CachingCallbackFilter(cache);
082 CallbackFactory callbackFactory = new DefaultCallbackFactory(cachingCallbackFilter);
083 DispatcherFilter cachingDispatcherFilter = new CachingDispatcherFilter(cache,callbackFactory);
084
085 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(cachingDispatcherFilter);
086
087 return dispatcher;
088 }
089
090 public FilterawareDispatcher cachingXSRFProtectionDispatcher(){
091 DispatcherFilter xsrfDispatcherFilter = new XSRFTokenDispatcherFilter(xsrf);
092
093 CallbackFilter xsrfCallbackFilter = new XSRFTokenCallbackFilter(xsrf);
094
095 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
096
097 CallbackFilter cachingCallbackFilter = new CachingCallbackFilter(cache);
098 CallbackFactory callbackFactory = new DefaultCallbackFactory(xsrfCallbackFilter, cachingCallbackFilter);
099 DispatcherFilter cachingDispatcherFilter = new CachingDispatcherFilter(cache, callbackFactory);
100
101 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(xsrfDispatcherFilter, cachingDispatcherFilter);
102
103 return dispatcher;
104 }
105
106 public FilterawareDispatcher retryingDispatcher(){
107 QueueableCacheStorage cache = new VolatileQueueableCacheStorage();
108
109 CallbackFilter cachingCallbackFilter = new CachingCallbackFilter(cache);
110 CallbackFactory callbackFactory = new RetryingCallbackFactory(cachingCallbackFilter);
111 DispatcherFilter cachingDispatcherFilter = new CachingDispatcherFilter(cache, callbackFactory);
112
113 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(cachingDispatcherFilter);
114
115 return dispatcher;
116 }
117
118 public FilterawareDispatcher retryingCachingDispatcher(){
119 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
120
121 CallbackFilter cachingCallbackFilter = new CachingCallbackFilter(cache);
122 CallbackFactory callbackFactory = new RetryingCallbackFactory(cachingCallbackFilter);
123 DispatcherFilter cachingDispatcherFilter = new CachingDispatcherFilter(cache, callbackFactory);
124
125 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(cachingDispatcherFilter);
126
127 return dispatcher;
128 }
129
130 public FilterawareDispatcher retryingCachingXSRFProtectionDispatcher(){
131 DispatcherFilter xsrfDispatcherFilter = new XSRFTokenDispatcherFilter(xsrf);
132
133 CallbackFilter xsrfCallbackFilter = new XSRFTokenCallbackFilter(xsrf);
134
135 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
136
137 CallbackFilter cachingCallbackFilter = new CachingCallbackFilter(cache);
138 CallbackFactory callbackFactory = new RetryingCallbackFactory(xsrfCallbackFilter, cachingCallbackFilter);
139 DispatcherFilter cachingDispatcherFilter = new CachingDispatcherFilter(cache, callbackFactory);
140
141 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(xsrfDispatcherFilter, cachingDispatcherFilter);
142
143 return dispatcher;
144 }
145
146 public FilterawareDispatcher restfulCachingDispatcher(){
147 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
148
149 CallbackFilter cachingCallbackFilter = new RestfulCachingCallbackFilter(cache);
150 CallbackFactory callbackFactory = new DefaultCallbackFactory(cachingCallbackFilter);
151 DispatcherFilter cachingDispatcherFilter = new RestfulCachingDispatcherFilter(cache, callbackFactory);
152
153 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(cachingDispatcherFilter);
154
155 return dispatcher;
156 }
157
158 public FilterawareDispatcher restfulCachingXSRFProtectionDispatcher(){
159 DispatcherFilter xsrfDispatcherFilter = new XSRFTokenDispatcherFilter(xsrf);
160
161 CallbackFilter xsrfCallbackFilter = new XSRFTokenCallbackFilter(xsrf);
162
163 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
164
165 CallbackFilter cachingCallbackFilter = new RestfulCachingCallbackFilter(cache);
166 CallbackFactory callbackFactory = new DefaultCallbackFactory(xsrfCallbackFilter, cachingCallbackFilter);
167 DispatcherFilter cachingDispatcherFilter = new RestfulCachingDispatcherFilter(cache, callbackFactory);
168
169 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(xsrfDispatcherFilter, cachingDispatcherFilter);
170
171 return dispatcher;
172 }
173
174 public FilterawareDispatcher restfulRetryingCachingDispatcher(){
175 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
176
177 CallbackFilter cachingCallbackFilter = new RestfulCachingCallbackFilter(cache);
178 CallbackFactory callbackFactory = new RetryingCallbackFactory(cachingCallbackFilter);
179 DispatcherFilter cachingDispatcherFilter = new RestfulCachingDispatcherFilter(cache, callbackFactory);
180
181 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(cachingDispatcherFilter);
182
183 return dispatcher;
184 }
185
186 public FilterawareDispatcher restfulRetryingCachingXSRFProtectionDispatcher(){
187 DispatcherFilter xsrfDispatcherFilter = new XSRFTokenDispatcherFilter(xsrf);
188
189 CallbackFilter xsrfCallbackFilter = new XSRFTokenCallbackFilter(xsrf);
190
191 QueueableCacheStorage cache = new DefaultQueueableCacheStorage();
192
193 CallbackFilter cachingCallbackFilter = new RestfulCachingCallbackFilter(cache);
194 CallbackFactory callbackFactory = new RetryingCallbackFactory(xsrfCallbackFilter, cachingCallbackFilter);
195 DispatcherFilter cachingDispatcherFilter = new RestfulCachingDispatcherFilter(cache, callbackFactory);
196
197 FilterawareDispatcher dispatcher = new DefaultFilterawareDispatcher(xsrfDispatcherFilter, cachingDispatcherFilter);
198
199 return dispatcher;
200 }
201
202 }