26
26
import com .fasterxml .jackson .core .JsonEncoding ;
27
27
import com .fasterxml .jackson .core .JsonGenerator ;
28
28
import com .fasterxml .jackson .databind .ObjectMapper ;
29
+ import com .google .common .collect .ImmutableMap ;
29
30
import com .google .common .collect .Lists ;
30
31
import net .sf .oval .constraint .Min ;
31
32
import net .sf .oval .constraint .NotNull ;
38
39
import java .util .Arrays ;
39
40
import java .util .Collection ;
40
41
import java .util .List ;
41
- import java .util .Optional ;
42
+ import java .util .Map ;
42
43
43
44
/**
44
45
* Publishes to a KairosDbSink endpoint. This class is thread safe.
@@ -74,10 +75,8 @@ protected Collection<byte[]> serialize(final PeriodicData periodicData) {
74
75
// Extract and transform shared data
75
76
final long timestamp = periodicData .getStart ().plus (periodicData .getPeriod ()).getMillis ();
76
77
final String serializedPeriod = periodicData .getPeriod ().toString (ISOPeriodFormat .standard ());
77
- final Optional <String > host = Optional .ofNullable (periodicData .getDimensions ().get ("host" ));
78
- final Optional <String > scope = Optional .ofNullable (periodicData .getDimensions ().get ("scope" ));
79
- final Optional <String > domain = Optional .ofNullable (periodicData .getDimensions ().get ("domain" ));
80
- final Serializer serializer = new Serializer (timestamp , serializedPeriod , host , scope , domain );
78
+ final ImmutableMap <String , String > dimensions = periodicData .getDimensions ();
79
+ final Serializer serializer = new Serializer (timestamp , serializedPeriod , dimensions );
81
80
82
81
// Initialize the chunk buffer
83
82
currentChunk .put (HEADER );
@@ -164,14 +163,10 @@ private class Serializer {
164
163
Serializer (
165
164
final long timestamp ,
166
165
final String serializedPeriod ,
167
- final Optional <String > host ,
168
- final Optional <String > scope ,
169
- final Optional <String > domain ) {
166
+ final ImmutableMap <String , String > dimensions ) {
170
167
_timestamp = timestamp ;
171
168
_serializedPeriod = serializedPeriod ;
172
- _host = host ;
173
- _scope = scope ;
174
- _domain = domain ;
169
+ _dimensions = dimensions ;
175
170
}
176
171
177
172
public void serializeDatum (
@@ -190,14 +185,8 @@ public void serializeDatum(
190
185
chunkGenerator .writeNumberField ("timestamp" , _timestamp );
191
186
chunkGenerator .writeNumberField ("value" , datum .getValue ().getValue ());
192
187
chunkGenerator .writeObjectFieldStart ("tags" );
193
- if (_host .isPresent ()) {
194
- chunkGenerator .writeStringField ("host" , _host .get ());
195
- }
196
- if (_scope .isPresent ()) {
197
- chunkGenerator .writeStringField ("scope" , _scope .get ());
198
- }
199
- if (_domain .isPresent ()) {
200
- chunkGenerator .writeStringField ("domain" , _domain .get ());
188
+ for (Map .Entry <String , String > entry : _dimensions .entrySet ()) {
189
+ chunkGenerator .writeStringField (entry .getKey (), entry .getValue ());
201
190
}
202
191
chunkGenerator .writeStringField ("service" , datum .getFQDSN ().getService ());
203
192
chunkGenerator .writeStringField ("cluster" , datum .getFQDSN ().getCluster ());
@@ -261,14 +250,8 @@ private void serializeConditionStatus(
261
250
chunkGenerator .writeNumberField ("timestamp" , _timestamp );
262
251
chunkGenerator .writeNumberField ("value" , condition .isTriggered ().get () ? 1 : 0 );
263
252
chunkGenerator .writeObjectFieldStart ("tags" );
264
- if (_host .isPresent ()) {
265
- chunkGenerator .writeStringField ("host" , _host .get ());
266
- }
267
- if (_scope .isPresent ()) {
268
- chunkGenerator .writeStringField ("scope" , _scope .get ());
269
- }
270
- if (_domain .isPresent ()) {
271
- chunkGenerator .writeStringField ("domain" , _domain .get ());
253
+ for (Map .Entry <String , String > entry : _dimensions .entrySet ()) {
254
+ chunkGenerator .writeStringField (entry .getKey (), entry .getValue ());
272
255
}
273
256
chunkGenerator .writeStringField ("service" , condition .getFQDSN ().getService ());
274
257
chunkGenerator .writeStringField ("cluster" , condition .getFQDSN ().getCluster ());
@@ -294,14 +277,8 @@ private void serializeConditionThreshold(
294
277
chunkGenerator .writeNumberField ("timestamp" , _timestamp );
295
278
chunkGenerator .writeNumberField ("value" , condition .getThreshold ().getValue ());
296
279
chunkGenerator .writeObjectFieldStart ("tags" );
297
- if (_host .isPresent ()) {
298
- chunkGenerator .writeStringField ("host" , _host .get ());
299
- }
300
- if (_scope .isPresent ()) {
301
- chunkGenerator .writeStringField ("scope" , _scope .get ());
302
- }
303
- if (_domain .isPresent ()) {
304
- chunkGenerator .writeStringField ("domain" , _domain .get ());
280
+ for (Map .Entry <String , String > entry : _dimensions .entrySet ()) {
281
+ chunkGenerator .writeStringField (entry .getKey (), entry .getValue ());
305
282
}
306
283
chunkGenerator .writeStringField ("service" , condition .getFQDSN ().getService ());
307
284
chunkGenerator .writeStringField ("cluster" , condition .getFQDSN ().getCluster ());
@@ -315,9 +292,7 @@ private void serializeConditionThreshold(
315
292
316
293
private final long _timestamp ;
317
294
private final String _serializedPeriod ;
318
- private final Optional <String > _host ;
319
- private final Optional <String > _scope ;
320
- private final Optional <String > _domain ;
295
+ private final ImmutableMap <String , String > _dimensions ;
321
296
}
322
297
323
298
/**
0 commit comments