@@ -188,6 +188,30 @@ else if (notification.getType().equals(MBeanServerNotification.UNREGISTRATION_NO
188
188
logger .debug ("Received MBean Server notification: {}: {}" , what , beanName );
189
189
}
190
190
191
+ private static void reportValue (MetricReporter reporter , String key , Long value )
192
+ {
193
+ if (value != null )
194
+ reporter .put (key , new LongValue (value ));
195
+ }
196
+
197
+ private static void reportValue (MetricReporter reporter , String key , Integer value )
198
+ {
199
+ if (value != null )
200
+ reporter .put (key , new LongValue (value ));
201
+ }
202
+
203
+ private static void reportValue (MetricReporter reporter , String key , Float value )
204
+ {
205
+ if (value != null && !value .isInfinite () && !value .isNaN ())
206
+ reporter .put (key , new DoubleValue (value ));
207
+ }
208
+
209
+ private static void reportValue (MetricReporter reporter , String key , Double value )
210
+ {
211
+ if (value != null && !value .isInfinite () && !value .isNaN ())
212
+ reporter .put (key , new DoubleValue (value ));
213
+ }
214
+
191
215
private abstract class AttributeSource implements MetricCollector
192
216
{
193
217
protected final ObjectName m_objectName ;
@@ -198,14 +222,6 @@ private AttributeSource(ObjectName objectName, String attribute)
198
222
m_objectName = objectName ;
199
223
m_attribute = attribute ;
200
224
}
201
-
202
- protected abstract MetricValue getValue ();
203
-
204
- @ Override
205
- public void reportMetric (MetricReporter metricReporter )
206
- {
207
- metricReporter .put ("value" , getValue ());
208
- }
209
225
}
210
226
211
227
@@ -217,20 +233,20 @@ private IntAttributeSource(ObjectName objectName, String attribute)
217
233
}
218
234
219
235
@ Override
220
- public MetricValue getValue ( )
236
+ public void reportMetric ( MetricReporter metricReporter )
221
237
{
222
- long value = 0 ;
238
+ Integer value = null ;
223
239
224
240
try
225
241
{
226
- value = (int )m_server .getAttribute (m_objectName , m_attribute );
242
+ value = (Integer )m_server .getAttribute (m_objectName , m_attribute );
227
243
}
228
244
catch (Exception e )
229
245
{
230
246
logger .debug ("Failed to read JMX attribute " +m_objectName +": " +m_attribute , e );
231
247
}
232
248
233
- return new LongValue ( value );
249
+ reportValue ( metricReporter , "value" , value );
234
250
}
235
251
236
252
}
@@ -243,20 +259,20 @@ private LongAttributeSource(ObjectName objectName, String attribute)
243
259
}
244
260
245
261
@ Override
246
- public MetricValue getValue ( )
262
+ public void reportMetric ( MetricReporter metricReporter )
247
263
{
248
- long value = 0 ;
264
+ Long value = null ;
249
265
250
266
try
251
267
{
252
- value = (long )m_server .getAttribute (m_objectName , m_attribute );
268
+ value = (Long )m_server .getAttribute (m_objectName , m_attribute );
253
269
}
254
270
catch (Exception e )
255
271
{
256
272
logger .debug ("Failed to read JMX attribute " +m_objectName +": " +m_attribute , e );
257
273
}
258
274
259
- return new LongValue ( value );
275
+ reportValue ( metricReporter , "value" , value );
260
276
}
261
277
}
262
278
@@ -269,20 +285,20 @@ private FloatAttributeSource(ObjectName objectName, String attribute)
269
285
}
270
286
271
287
@ Override
272
- public MetricValue getValue ( )
288
+ public void reportMetric ( MetricReporter metricReporter )
273
289
{
274
- float value = 0 ;
290
+ Float value = null ;
275
291
276
292
try
277
293
{
278
- value = (float )m_server .getAttribute (m_objectName , m_attribute );
294
+ value = (Float )m_server .getAttribute (m_objectName , m_attribute );
279
295
}
280
296
catch (Exception e )
281
297
{
282
298
logger .debug ("Failed to read JMX attribute " +m_objectName +": " +m_attribute , e );
283
299
}
284
300
285
- return new DoubleValue ( value );
301
+ reportValue ( metricReporter , "value" , value );
286
302
}
287
303
}
288
304
@@ -295,20 +311,20 @@ private DoubleAttributeSource(ObjectName objectName, String attribute)
295
311
}
296
312
297
313
@ Override
298
- public MetricValue getValue ( )
314
+ public void reportMetric ( MetricReporter metricReporter )
299
315
{
300
- double value = 0.0 ;
316
+ Double value = null ;
301
317
302
318
try
303
319
{
304
- value = (double )m_server .getAttribute (m_objectName , m_attribute );
320
+ value = (Double )m_server .getAttribute (m_objectName , m_attribute );
305
321
}
306
322
catch (Exception e )
307
323
{
308
324
logger .debug ("Failed to read JMX attribute " +m_objectName +": " +m_attribute , e );
309
325
}
310
326
311
- return new DoubleValue ( value );
327
+ reportValue ( metricReporter , "value" , value );
312
328
}
313
329
}
314
330
@@ -319,12 +335,6 @@ private CompositeAttributeSource(ObjectName objectName, String attribute)
319
335
super (objectName , attribute );
320
336
}
321
337
322
- @ Override
323
- protected MetricValue getValue ()
324
- {
325
- return null ;
326
- }
327
-
328
338
@ Override
329
339
public void reportMetric (MetricReporter metricReporter )
330
340
{
@@ -340,19 +350,19 @@ public void reportMetric(MetricReporter metricReporter)
340
350
OpenType <?> openType = type .getType (key );
341
351
if (openType == SimpleType .LONG )
342
352
{
343
- metricReporter . put ( key , new LongValue (( long ) data .get (key ) ));
353
+ reportValue ( metricReporter , key , ( Long ) data .get (key ));
344
354
}
345
355
else if (openType == SimpleType .INTEGER )
346
356
{
347
- metricReporter . put ( key , new LongValue (( int ) data .get (key ) ));
357
+ reportValue ( metricReporter , key , ( Integer ) data .get (key ));
348
358
}
349
359
else if (openType == SimpleType .FLOAT )
350
360
{
351
- metricReporter . put ( key , new DoubleValue (( float ) data .get (key ) ));
361
+ reportValue ( metricReporter , key , ( Float ) data .get (key ));
352
362
}
353
363
else if (openType == SimpleType .DOUBLE )
354
364
{
355
- metricReporter . put ( key , new DoubleValue (( double ) data .get (key ) ));
365
+ reportValue ( metricReporter , key , ( Double ) data .get (key ));
356
366
}
357
367
}
358
368
}
0 commit comments