vayacondios-server 0.2.11 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -1
- data/.travis.yml +2 -0
- data/Gemfile +15 -9
- data/LICENSE.md +2 -6
- data/Procfile +1 -1
- data/README.md +656 -111
- data/Rakefile +89 -6
- data/bin/vcd +10 -0
- data/bin/vcd-server +8 -0
- data/config/database.yml +6 -0
- data/config/spec.example.yml +18 -0
- data/config/vayacondios.example.yml +15 -0
- data/config/vcd-server.rb +37 -0
- data/examples/configuration.rb +56 -0
- data/examples/event_stream.rb +19 -0
- data/examples/simple.rb +61 -0
- data/features/event.feature +319 -0
- data/features/events.feature +208 -0
- data/features/stash.feature +840 -0
- data/features/stashes.feature +492 -0
- data/features/step_definitions/stash_steps.rb +113 -0
- data/features/stream.feature +30 -0
- data/features/support/em.rb +14 -0
- data/features/support/env.rb +13 -0
- data/lib/vayacondios/configuration.rb +63 -0
- data/lib/vayacondios/server/api.rb +126 -0
- data/lib/vayacondios/server/api_options.rb +56 -0
- data/lib/vayacondios/server/configuration.rb +23 -0
- data/lib/vayacondios/server/driver.rb +71 -0
- data/lib/vayacondios/server/drivers/mongo.rb +126 -0
- data/lib/vayacondios/server/handlers/document_handler.rb +81 -0
- data/lib/vayacondios/server/handlers/event_handler.rb +31 -26
- data/lib/vayacondios/server/handlers/events_handler.rb +31 -0
- data/lib/vayacondios/server/handlers/stash_handler.rb +69 -0
- data/lib/vayacondios/server/handlers/stashes_handler.rb +49 -0
- data/lib/vayacondios/server/handlers/stream_handler.rb +39 -0
- data/lib/vayacondios/server/models/document.rb +87 -0
- data/lib/vayacondios/server/models/event.rb +198 -0
- data/lib/vayacondios/server/models/stash.rb +100 -0
- data/lib/vayacondios/server.rb +35 -0
- data/lib/vayacondios-server.rb +19 -13
- data/lib/vayacondios.rb +22 -0
- data/pom.xml +124 -4
- data/spec/configuration_spec.rb +41 -0
- data/spec/server/api_options_spec.rb +32 -0
- data/spec/server/api_spec.rb +279 -0
- data/spec/server/configuration_spec.rb +27 -0
- data/spec/server/drivers/mongo_spec.rb +107 -0
- data/spec/server/handlers/event_handler_spec.rb +62 -0
- data/spec/server/handlers/events_handler_spec.rb +51 -0
- data/spec/server/handlers/stash_handler_spec.rb +68 -0
- data/spec/server/handlers/stashes_handler_spec.rb +50 -0
- data/spec/server/handlers/stream_handler_spec.rb +5 -0
- data/spec/server/models/document_spec.rb +9 -0
- data/spec/server/models/event_spec.rb +185 -0
- data/spec/server/models/stash_spec.rb +95 -0
- data/spec/spec_helper.rb +23 -3
- data/spec/support/database_helper.rb +42 -0
- data/spec/support/log_helper.rb +19 -0
- data/spec/support/shared_context_for_events.rb +22 -0
- data/spec/support/shared_context_for_stashes.rb +24 -0
- data/spec/support/shared_examples_for_handlers.rb +32 -0
- data/src/main/java/com/infochimps/vayacondios/BaseClient.java +342 -0
- data/src/main/java/com/infochimps/vayacondios/HTTPClient.java +426 -0
- data/src/main/java/com/infochimps/vayacondios/VayacondiosClient.java +487 -65
- data/src/main/java/com/infochimps/vayacondios/test/IntegrationTest.java +3 -0
- data/src/test/java/com/infochimps/vayacondios/BaseClientTest.java +50 -0
- data/src/test/java/com/infochimps/vayacondios/HTTPClientIT.java +267 -0
- data/vayacondios-server.gemspec +9 -9
- metadata +127 -122
- checksums.yaml +0 -15
- data/.rspec +0 -2
- data/.yardopts +0 -10
- data/Guardfile +0 -41
- data/app/http_shim.rb +0 -71
- data/bin/vcd.sh +0 -27
- data/config/http_shim.rb +0 -43
- data/config/vayacondios.example.yaml +0 -7
- data/config/vayacondios.yaml +0 -7
- data/examples/java/ItemSetTest.java +0 -76
- data/lib/tasks/publish.rake +0 -23
- data/lib/tasks/spec.rake +0 -11
- data/lib/tasks/yard.rake +0 -2
- data/lib/vayacondios/client/config.rb +0 -7
- data/lib/vayacondios/client/configliere.rb +0 -38
- data/lib/vayacondios/client/cube_client.rb +0 -39
- data/lib/vayacondios/client/http_client.rb +0 -49
- data/lib/vayacondios/client/itemset.rb +0 -130
- data/lib/vayacondios/client/legacy_switch.rb +0 -43
- data/lib/vayacondios/client/notifier.rb +0 -123
- data/lib/vayacondios/client/zabbix_client.rb +0 -148
- data/lib/vayacondios/legacy_switch.rb +0 -43
- data/lib/vayacondios/server/errors/bad_request.rb +0 -6
- data/lib/vayacondios/server/errors/not_found.rb +0 -6
- data/lib/vayacondios/server/handlers/config_handler.rb +0 -32
- data/lib/vayacondios/server/handlers/itemset_handler.rb +0 -60
- data/lib/vayacondios/server/legacy_switch.rb +0 -43
- data/lib/vayacondios/server/model/config_document.rb +0 -89
- data/lib/vayacondios/server/model/document.rb +0 -25
- data/lib/vayacondios/server/model/event_document.rb +0 -94
- data/lib/vayacondios/server/model/itemset_document.rb +0 -126
- data/lib/vayacondios/server/rack/extract_methods.rb +0 -35
- data/lib/vayacondios/server/rack/jsonize.rb +0 -43
- data/lib/vayacondios/server/rack/params.rb +0 -50
- data/lib/vayacondios/server/rack/path.rb +0 -23
- data/lib/vayacondios/server/rack/path_validation.rb +0 -22
- data/lib/vayacondios/version.rb +0 -3
- data/lib/vayacondios-client.rb +0 -22
- data/scripts/hadoop_monitor/configurable.rb +0 -66
- data/scripts/hadoop_monitor/hadoop_attempt_scraper.rb +0 -45
- data/scripts/hadoop_monitor/hadoop_client.rb +0 -273
- data/scripts/hadoop_monitor/hadoop_monitor.rb +0 -101
- data/scripts/hadoop_monitor/hadoopable.rb +0 -65
- data/scripts/hadoop_monitor/machine_monitor.rb +0 -115
- data/scripts/s3_cataloger/buckets +0 -33
- data/scripts/s3_cataloger/foreach_bucket +0 -88
- data/scripts/s3_cataloger/parse_ls.py +0 -391
- data/spec/client/itemset_legacy_spec.rb +0 -55
- data/spec/client/itemset_spec.rb +0 -60
- data/spec/client/notifier_spec.rb +0 -120
- data/spec/server/config_spec.rb +0 -113
- data/spec/server/event_spec.rb +0 -103
- data/spec/server/itemset_legacy_spec.rb +0 -320
- data/spec/server/itemset_spec.rb +0 -317
- data/spec/server/rack/extract_methods_spec.rb +0 -60
- data/spec/server/rack/path_spec.rb +0 -36
- data/spec/server/rack/path_validation_spec.rb +0 -22
- data/spec/server/server_spec.rb +0 -20
- data/spec/support/mongo_cleaner.rb +0 -32
- data/src/main/java/ItemSetTest.java +0 -76
- data/src/main/java/com/infochimps/util/CurrentClass.java +0 -26
- data/src/main/java/com/infochimps/util/DebugUtil.java +0 -38
- data/src/main/java/com/infochimps/util/HttpHelper.java +0 -181
- data/src/main/java/com/infochimps/vayacondios/ItemSets.java +0 -373
- data/src/main/java/com/infochimps/vayacondios/LinkToVCD.java +0 -18
- data/src/main/java/com/infochimps/vayacondios/MemoryVCDShim.java +0 -84
- data/src/main/java/com/infochimps/vayacondios/Organization.java +0 -62
- data/src/main/java/com/infochimps/vayacondios/PathBuilder.java +0 -13
- data/src/main/java/com/infochimps/vayacondios/StandardVCDLink.java +0 -218
- data/src/main/java/com/infochimps/vayacondios/VCDIntegrationTest.java +0 -108
- data/src/test/java/com/infochimps/vayacondios/TestVayacondiosInMemory.java +0 -78
- data/vayacondios-client.gemspec +0 -25
@@ -1,373 +0,0 @@
|
|
1
|
-
package com.infochimps.vayacondios;
|
2
|
-
|
3
|
-
import static com.infochimps.util.CurrentClass.getLogger;
|
4
|
-
import com.infochimps.util.DebugUtil;
|
5
|
-
|
6
|
-
import com.google.gson.Gson;
|
7
|
-
import com.google.gson.GsonBuilder;
|
8
|
-
import com.google.gson.JsonElement;
|
9
|
-
import com.google.gson.JsonIOException;
|
10
|
-
import com.google.gson.JsonObject;
|
11
|
-
import com.google.gson.JsonParser;
|
12
|
-
import com.google.gson.JsonPrimitive;
|
13
|
-
import com.google.gson.JsonParseException;
|
14
|
-
import com.google.gson.JsonSerializer;
|
15
|
-
import com.google.gson.JsonSerializationContext;
|
16
|
-
import com.google.gson.JsonSyntaxException;
|
17
|
-
|
18
|
-
import java.io.BufferedReader;
|
19
|
-
import java.util.HashMap;
|
20
|
-
import java.io.FileNotFoundException;
|
21
|
-
import java.io.InputStream;
|
22
|
-
import java.io.OutputStream;
|
23
|
-
import java.io.OutputStreamWriter;
|
24
|
-
import java.io.IOException;
|
25
|
-
import java.lang.reflect.Type;
|
26
|
-
import java.lang.reflect.InvocationTargetException;
|
27
|
-
import java.net.HttpURLConnection;
|
28
|
-
import java.util.ArrayList;
|
29
|
-
import java.util.List;
|
30
|
-
|
31
|
-
import java.net.URL;
|
32
|
-
|
33
|
-
import org.slf4j.Logger;
|
34
|
-
|
35
|
-
/**
|
36
|
-
* This is the first level of the Vayacondios path-building hierarchy
|
37
|
-
* that is capable of directly manipulating itemsets.
|
38
|
-
*/
|
39
|
-
public class ItemSets<LinkType extends LinkToVCD> extends Organization {
|
40
|
-
public ItemSets(PathBuilder delegate) { super(delegate); }
|
41
|
-
|
42
|
-
/**
|
43
|
-
* @param linkClass for testing purposes. can be used to shim up a
|
44
|
-
* dummy vayacondios session.
|
45
|
-
*/
|
46
|
-
public ItemSets(Organization org, LinkType linkToVCD) {
|
47
|
-
super(org);
|
48
|
-
_org = org;
|
49
|
-
(_vcdLink = linkToVCD).setParent(this);
|
50
|
-
}
|
51
|
-
|
52
|
-
//----------------------------------------------------------------------------
|
53
|
-
// next in path hierarchy
|
54
|
-
//----------------------------------------------------------------------------
|
55
|
-
|
56
|
-
/**
|
57
|
-
* @param topic Vayacondios topic. see Vayacondios documentation for
|
58
|
-
* details.
|
59
|
-
* @return new Topic path builder for this organization
|
60
|
-
*/
|
61
|
-
public Topic topic(String topic) { return new Topic(this, topic); }
|
62
|
-
|
63
|
-
//----------------------------------------------------------------------------
|
64
|
-
// public operations
|
65
|
-
//----------------------------------------------------------------------------
|
66
|
-
|
67
|
-
/**
|
68
|
-
* Fetches the current value of an itemset.
|
69
|
-
*
|
70
|
-
* @param topic A Vayacondios topic has many ids. See vayacondios
|
71
|
-
* documentation for further details.
|
72
|
-
* @param id A Vayacondios id, together with the server,
|
73
|
-
* organization, and topic, specifies a unique
|
74
|
-
* itemset.
|
75
|
-
* @return a collection of items
|
76
|
-
*/
|
77
|
-
public List<Item> fetch(String topic, String id) throws IOException {
|
78
|
-
return _vcdLink.fetch(topic, id);
|
79
|
-
}
|
80
|
-
|
81
|
-
/**
|
82
|
-
* Creates a new itemset with the specified topic and id, clobbering
|
83
|
-
* any existing itemset with the same topic and id.
|
84
|
-
*
|
85
|
-
* @param topic A Vayacondios topic has many ids. See vayacondios
|
86
|
-
* documentation for further details.
|
87
|
-
* @param id A Vayacondios id, together with the server,
|
88
|
-
* organization, and topic, specifies a unique
|
89
|
-
* itemset.
|
90
|
-
* @param items items whose existence should be ensured in the set.
|
91
|
-
*/
|
92
|
-
public void create(String topic,
|
93
|
-
String id,
|
94
|
-
List<Item> items) throws IOException {
|
95
|
-
mutate("PUT", topic, id, items);
|
96
|
-
}
|
97
|
-
|
98
|
-
/**
|
99
|
-
* Ensures the absence of the specified items from the specified itemset.q
|
100
|
-
*
|
101
|
-
* @param topic A Vayacondios topic has many ids. See vayacondios
|
102
|
-
* documentation for further details.
|
103
|
-
* @param id A Vayacondios id, together with the server,
|
104
|
-
* organization, and topic, specifies a unique
|
105
|
-
* itemset.
|
106
|
-
* @param items items whose absence should be ensured in the set.
|
107
|
-
*/
|
108
|
-
public void remove(String topic,
|
109
|
-
String id,
|
110
|
-
List<Item> items) throws IOException {
|
111
|
-
mutate("DELETE", topic, id, items);
|
112
|
-
}
|
113
|
-
|
114
|
-
/**
|
115
|
-
* Updates the current value of an itemset, ensuring the existence
|
116
|
-
* of the specified items.
|
117
|
-
*
|
118
|
-
* @param topic A Vayacondios topic has many ids. See vayacondios
|
119
|
-
* documentation for further details.
|
120
|
-
* @param id A Vayacondios id, together with the server,
|
121
|
-
* organization, and topic, specifies a unique
|
122
|
-
* itemset.
|
123
|
-
* @param items items whose existence should be ensured in the set.
|
124
|
-
*/
|
125
|
-
public void update(String topic,
|
126
|
-
String id,
|
127
|
-
List<Item> items) throws IOException {
|
128
|
-
mutate("PATCH", topic, id, items);
|
129
|
-
}
|
130
|
-
|
131
|
-
//----------------------------------------------------------------------------
|
132
|
-
// API HTTP path components
|
133
|
-
//----------------------------------------------------------------------------
|
134
|
-
|
135
|
-
String getOrganization() {
|
136
|
-
return ((Organization)getDelegate()).getOrganization();
|
137
|
-
}
|
138
|
-
|
139
|
-
//----------------------------------------------------------------------------
|
140
|
-
|
141
|
-
protected void mutate(String method,
|
142
|
-
String topic,
|
143
|
-
String id,
|
144
|
-
List<Item> items) throws IOException {
|
145
|
-
_vcdLink.mutate(method, topic, id, items);
|
146
|
-
}
|
147
|
-
|
148
|
-
private LinkType _vcdLink;
|
149
|
-
private Organization _org;
|
150
|
-
|
151
|
-
private static final Logger LOG = getLogger();
|
152
|
-
|
153
|
-
//============================================================================
|
154
|
-
// Topic
|
155
|
-
//============================================================================
|
156
|
-
|
157
|
-
/**
|
158
|
-
* A Topic may have many ids, each of which points to a unique
|
159
|
-
* Vayacondios itemset.
|
160
|
-
*/
|
161
|
-
public static class Topic extends ItemSets {
|
162
|
-
public Topic(PathBuilder delegate) { super(delegate); }
|
163
|
-
|
164
|
-
public Topic(ItemSets sets, String topic) {
|
165
|
-
super(sets);
|
166
|
-
_sets = sets;
|
167
|
-
_topic = topic;
|
168
|
-
}
|
169
|
-
|
170
|
-
//--------------------------------------------------------------------------
|
171
|
-
// next in path hierarchy
|
172
|
-
//--------------------------------------------------------------------------
|
173
|
-
|
174
|
-
/**
|
175
|
-
* @param id Vayacondios id. see Vayacondios documentation for
|
176
|
-
* details.
|
177
|
-
* @return new itemset for this topic
|
178
|
-
*/
|
179
|
-
public ItemSet itemSet(String id) { return new ItemSet(this, id); }
|
180
|
-
|
181
|
-
//--------------------------------------------------------------------------
|
182
|
-
// public operations
|
183
|
-
//--------------------------------------------------------------------------
|
184
|
-
|
185
|
-
/**
|
186
|
-
* @see ItemSets#fetch
|
187
|
-
*/
|
188
|
-
public List<Item> fetch(String id) throws IOException {
|
189
|
-
return fetch(getTopic(), id);
|
190
|
-
}
|
191
|
-
|
192
|
-
/**
|
193
|
-
* @see ItemSets::create
|
194
|
-
*/
|
195
|
-
public void create(String id, List<Item> items) throws IOException {
|
196
|
-
create(getTopic(), id, items);
|
197
|
-
}
|
198
|
-
|
199
|
-
/**
|
200
|
-
* @see ItemSets#remove
|
201
|
-
*/
|
202
|
-
public void remove(String id, List<Item> items) throws IOException {
|
203
|
-
remove(getTopic(), id, items);
|
204
|
-
}
|
205
|
-
|
206
|
-
/**
|
207
|
-
* @see ItemSets#update
|
208
|
-
*/
|
209
|
-
public void update(String id, List<Item> items) throws IOException {
|
210
|
-
update(getTopic(), id, items);
|
211
|
-
}
|
212
|
-
|
213
|
-
//--------------------------------------------------------------------------
|
214
|
-
// API HTTP path components
|
215
|
-
//--------------------------------------------------------------------------
|
216
|
-
|
217
|
-
protected String getTopic() { return _topic; }
|
218
|
-
|
219
|
-
//--------------------------------------------------------------------------
|
220
|
-
// fields
|
221
|
-
//--------------------------------------------------------------------------
|
222
|
-
|
223
|
-
private ItemSets _sets;
|
224
|
-
private String _topic;
|
225
|
-
}
|
226
|
-
|
227
|
-
//============================================================================
|
228
|
-
// ItemSet
|
229
|
-
//============================================================================
|
230
|
-
|
231
|
-
/**
|
232
|
-
* A Vayacodios Itemset is manipulated using four API methods
|
233
|
-
* implemented in terms of the Vayacondios API.
|
234
|
-
*/
|
235
|
-
public static class ItemSet extends Topic {
|
236
|
-
public ItemSet(PathBuilder delegate) { super(delegate); }
|
237
|
-
|
238
|
-
public ItemSet(Topic topic, String id) {
|
239
|
-
super(topic);
|
240
|
-
_topic = topic;
|
241
|
-
_id = id;
|
242
|
-
}
|
243
|
-
|
244
|
-
//--------------------------------------------------------------------------
|
245
|
-
// public operations
|
246
|
-
//--------------------------------------------------------------------------
|
247
|
-
|
248
|
-
/**
|
249
|
-
* @see ItemSets#fetch
|
250
|
-
*/
|
251
|
-
public List<Item> fetch() throws IOException {
|
252
|
-
return fetch(getId());
|
253
|
-
}
|
254
|
-
|
255
|
-
/**
|
256
|
-
* @see ItemSets#create
|
257
|
-
*/
|
258
|
-
public void create(List<Item> items) throws IOException {
|
259
|
-
create(getId(), items);
|
260
|
-
}
|
261
|
-
|
262
|
-
/**
|
263
|
-
* @see ItemSets#remove
|
264
|
-
*/
|
265
|
-
public void remove(List<Item> items) throws IOException {
|
266
|
-
remove(getId(), items);
|
267
|
-
}
|
268
|
-
|
269
|
-
/**
|
270
|
-
* @see ItemSets#update
|
271
|
-
*/
|
272
|
-
public void update(List<Item> items) throws IOException {
|
273
|
-
update(getId(), items);
|
274
|
-
}
|
275
|
-
|
276
|
-
//--------------------------------------------------------------------------
|
277
|
-
// API HTTP path components
|
278
|
-
//--------------------------------------------------------------------------
|
279
|
-
|
280
|
-
protected String getId() {
|
281
|
-
return _id;
|
282
|
-
}
|
283
|
-
|
284
|
-
protected String getTopic() {
|
285
|
-
return ((Topic)getDelegate()).getTopic();
|
286
|
-
}
|
287
|
-
|
288
|
-
//--------------------------------------------------------------------------
|
289
|
-
// fields
|
290
|
-
//--------------------------------------------------------------------------
|
291
|
-
|
292
|
-
private Topic _topic;
|
293
|
-
private String _id;
|
294
|
-
}
|
295
|
-
|
296
|
-
//============================================================================
|
297
|
-
// Item
|
298
|
-
//============================================================================
|
299
|
-
|
300
|
-
/**
|
301
|
-
* A Vayacondios item can be a boolean, a number, or a string.
|
302
|
-
*/
|
303
|
-
public static class Item {
|
304
|
-
public static class Serializer implements JsonSerializer {
|
305
|
-
public JsonElement serialize(Object item,
|
306
|
-
Type typeOfId,
|
307
|
-
JsonSerializationContext context) {
|
308
|
-
return GSON.toJsonTree(Item.class.isAssignableFrom(item.getClass()) ?
|
309
|
-
((Item)item).getObject() : item);
|
310
|
-
}
|
311
|
-
private static final Gson GSON = new Gson();
|
312
|
-
private static final Logger LOG = getLogger();
|
313
|
-
}
|
314
|
-
|
315
|
-
public Item(Boolean b) {
|
316
|
-
_item = b;
|
317
|
-
_type = TYPE.BOOLEAN;
|
318
|
-
}
|
319
|
-
|
320
|
-
public Item(Number n) {
|
321
|
-
_item = n;
|
322
|
-
_type = TYPE.NUMBER;
|
323
|
-
}
|
324
|
-
|
325
|
-
public Item(String s) {
|
326
|
-
_item = s;
|
327
|
-
_type = TYPE.STRING;
|
328
|
-
}
|
329
|
-
|
330
|
-
public Boolean getAsBoolean() {
|
331
|
-
if (_type != TYPE.BOOLEAN)
|
332
|
-
throw new ClassCastException("item is not a boolean");
|
333
|
-
return (Boolean)_item;
|
334
|
-
}
|
335
|
-
|
336
|
-
public Number getAsNumber() {
|
337
|
-
if (_type != TYPE.NUMBER)
|
338
|
-
throw new ClassCastException("item is not a number");
|
339
|
-
return (Number)_item;
|
340
|
-
}
|
341
|
-
|
342
|
-
public String getAsString() {
|
343
|
-
if (_type != TYPE.STRING)
|
344
|
-
throw new ClassCastException("item is not a string");
|
345
|
-
return (String)_item;
|
346
|
-
}
|
347
|
-
|
348
|
-
public Boolean isBoolean() { return (_type == TYPE.BOOLEAN); }
|
349
|
-
public Boolean isNumber() { return (_type == TYPE.NUMBER ); }
|
350
|
-
public Boolean isString() { return (_type == TYPE.STRING ); }
|
351
|
-
|
352
|
-
public Object getObject() { return _item; }
|
353
|
-
|
354
|
-
public TYPE getType() { return _type; }
|
355
|
-
|
356
|
-
public String toString() {
|
357
|
-
return _item.toString() + ":" + _type;
|
358
|
-
}
|
359
|
-
|
360
|
-
public boolean equals(Object other) {
|
361
|
-
return (Item.class.isAssignableFrom(other.getClass())) ?
|
362
|
-
_item.equals(((Item)other).getObject()) : _item.equals(other);
|
363
|
-
}
|
364
|
-
|
365
|
-
//--------------------------------------------------------------------------
|
366
|
-
// fields
|
367
|
-
//--------------------------------------------------------------------------
|
368
|
-
|
369
|
-
private Object _item;
|
370
|
-
private TYPE _type;
|
371
|
-
private enum TYPE {BOOLEAN, NUMBER, STRING}
|
372
|
-
}
|
373
|
-
}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
package com.infochimps.vayacondios;
|
2
|
-
|
3
|
-
import java.util.List;
|
4
|
-
import java.io.IOException;
|
5
|
-
import static com.infochimps.vayacondios.ItemSets.Item;
|
6
|
-
|
7
|
-
public abstract class LinkToVCD {
|
8
|
-
public abstract List<Item> fetch(String topic, String id) throws IOException;
|
9
|
-
public abstract void mutate(String method,
|
10
|
-
String topic,
|
11
|
-
String id,
|
12
|
-
List<Item> items) throws IOException;
|
13
|
-
|
14
|
-
protected ItemSets getParent() { return _parent; }
|
15
|
-
public void setParent(ItemSets parent) { _parent = parent; }
|
16
|
-
|
17
|
-
private ItemSets _parent;
|
18
|
-
}
|
@@ -1,84 +0,0 @@
|
|
1
|
-
package com.infochimps.vayacondios;
|
2
|
-
|
3
|
-
import com.google.gson.Gson;
|
4
|
-
import com.google.gson.GsonBuilder;
|
5
|
-
import com.google.gson.JsonElement;
|
6
|
-
import com.google.gson.JsonIOException;
|
7
|
-
import com.google.gson.JsonObject;
|
8
|
-
import com.google.gson.JsonParser;
|
9
|
-
import com.google.gson.JsonPrimitive;
|
10
|
-
import com.google.gson.JsonParseException;
|
11
|
-
import com.google.gson.JsonSerializer;
|
12
|
-
import com.google.gson.JsonSerializationContext;
|
13
|
-
import com.google.gson.JsonSyntaxException;
|
14
|
-
|
15
|
-
import java.io.BufferedReader;
|
16
|
-
import java.io.FileNotFoundException;
|
17
|
-
import java.io.InputStream;
|
18
|
-
import java.io.OutputStream;
|
19
|
-
import java.io.IOException;
|
20
|
-
import java.net.HttpURLConnection;
|
21
|
-
import java.nio.charset.Charset;
|
22
|
-
import java.util.ArrayList;
|
23
|
-
import java.util.HashMap;
|
24
|
-
import java.util.List;
|
25
|
-
import java.util.Map;
|
26
|
-
|
27
|
-
import java.net.URL;
|
28
|
-
|
29
|
-
import org.slf4j.Logger;
|
30
|
-
|
31
|
-
import static com.infochimps.util.CurrentClass.getLogger;
|
32
|
-
import static com.infochimps.vayacondios.ItemSets.Item;
|
33
|
-
|
34
|
-
public class MemoryVCDShim extends LinkToVCD {
|
35
|
-
public MemoryVCDShim() {
|
36
|
-
_topics = new HashMap<String, Map<String, List<Item>>>();
|
37
|
-
}
|
38
|
-
|
39
|
-
public List<Item> fetch(String topicName, String id) {
|
40
|
-
Map<String, List<Item>> topic = _topics.get(topicName);
|
41
|
-
List<Item> result;
|
42
|
-
|
43
|
-
LOG.trace("topics before fetch: {}", _topics);
|
44
|
-
|
45
|
-
if (topic == null || (result = topic.get(id)) == null) {
|
46
|
-
LOG.debug("couldn't find {}.{}. returning empty list", topicName, id);
|
47
|
-
return new ArrayList<Item>();
|
48
|
-
} else {
|
49
|
-
LOG.debug("returning {}.{} => {}", topicName, id, result);
|
50
|
-
return result;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
public void mutate(String method,
|
55
|
-
String topicName,
|
56
|
-
String id,
|
57
|
-
List<Item> items) {
|
58
|
-
LOG.trace("topics before mutate: {}", _topics);
|
59
|
-
|
60
|
-
Map<String, List<Item>> topic = _topics.get(topicName);
|
61
|
-
if (topic == null) {
|
62
|
-
LOG.debug("creating topic {}.", topicName);
|
63
|
-
_topics.put(topicName, topic = new HashMap<String, List<Item>>());
|
64
|
-
}
|
65
|
-
|
66
|
-
if (method.equals("DELETE")) {
|
67
|
-
LOG.trace("removing {} from {}.{}", items, topicName, id);
|
68
|
-
topic.get(id).removeAll(items);
|
69
|
-
}
|
70
|
-
else if (method.equals("PATCH")) {
|
71
|
-
LOG.trace("adding {} to {}.{}", items, topicName, id);
|
72
|
-
topic.get(id).addAll(items);
|
73
|
-
}
|
74
|
-
else if (method.equals("PUT")) {
|
75
|
-
LOG.trace("creating {}.{} with {}", topicName, id, items);
|
76
|
-
topic.put(id, items);
|
77
|
-
}
|
78
|
-
|
79
|
-
LOG.trace("topics after mutate: {}", _topics);
|
80
|
-
}
|
81
|
-
|
82
|
-
private Map<String, Map<String, List<Item>>> _topics;
|
83
|
-
private static final Logger LOG = getLogger();
|
84
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
package com.infochimps.vayacondios;
|
2
|
-
|
3
|
-
import java.util.Collection;
|
4
|
-
|
5
|
-
/**
|
6
|
-
* An organization is the last commmon class in the Vayacondios
|
7
|
-
* hierarchy between the itemset and stash interface.
|
8
|
-
*/
|
9
|
-
public class Organization<LinkType extends LinkToVCD>
|
10
|
-
extends VayacondiosClient {
|
11
|
-
public Organization(PathBuilder delegate) { super(delegate); }
|
12
|
-
|
13
|
-
public Organization(VayacondiosClient server, String organization) {
|
14
|
-
super(server);
|
15
|
-
_server = server;
|
16
|
-
_organization = organization;
|
17
|
-
}
|
18
|
-
|
19
|
-
//----------------------------------------------------------------------------
|
20
|
-
// next in path hierarchy
|
21
|
-
//----------------------------------------------------------------------------
|
22
|
-
|
23
|
-
/**
|
24
|
-
* @return new ItemSets path builder for this organization
|
25
|
-
*/
|
26
|
-
public ItemSets<LinkType> itemsets() {
|
27
|
-
return itemsets(new StandardVCDLink());
|
28
|
-
}
|
29
|
-
|
30
|
-
|
31
|
-
/**
|
32
|
-
* @param linkType link type to use to
|
33
|
-
*
|
34
|
-
* @return new ItemSets path builder for this organization
|
35
|
-
*/
|
36
|
-
public ItemSets<LinkType> itemsets(LinkToVCD linkToVCD) {
|
37
|
-
return new ItemSets(this, linkToVCD);
|
38
|
-
}
|
39
|
-
|
40
|
-
//----------------------------------------------------------------------------
|
41
|
-
// API HTTP path components
|
42
|
-
//----------------------------------------------------------------------------
|
43
|
-
|
44
|
-
protected String urlString(String type, String topic, String id) {
|
45
|
-
return urlString(getOrganization(), type, topic, id);
|
46
|
-
}
|
47
|
-
|
48
|
-
protected int getPort() {
|
49
|
-
return ((VayacondiosClient)getDelegate()).getPort();
|
50
|
-
}
|
51
|
-
protected String getServerName() {
|
52
|
-
return ((VayacondiosClient)getDelegate()).getServerName();
|
53
|
-
}
|
54
|
-
String getOrganization() { return _organization; }
|
55
|
-
|
56
|
-
//----------------------------------------------------------------------------
|
57
|
-
// fields
|
58
|
-
//----------------------------------------------------------------------------
|
59
|
-
|
60
|
-
private VayacondiosClient _server;
|
61
|
-
private String _organization;
|
62
|
-
}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
package com.infochimps.vayacondios;
|
2
|
-
|
3
|
-
class PathBuilder {
|
4
|
-
public PathBuilder() {}
|
5
|
-
|
6
|
-
public PathBuilder(PathBuilder delegate) {
|
7
|
-
_delegate = delegate;
|
8
|
-
}
|
9
|
-
|
10
|
-
protected PathBuilder getDelegate() { return _delegate; }
|
11
|
-
|
12
|
-
private PathBuilder _delegate;
|
13
|
-
}
|