@@ -220,12 +220,11 @@ void cacheMeasurementClass(final Class<?>... classVarAgrs) {
220
220
if (influxColumnAndFieldMap == null ) {
221
221
influxColumnAndFieldMap = initialMap ;
222
222
}
223
- //sj_todo change var name.
224
- ConcurrentMap <String , Method > initialMap2 = new ConcurrentHashMap <>();
225
- //sj_todo change var name.
226
- ConcurrentMap <String , Method > influxColumnAndFieldMap2 = CLASS_SETTERS_CACHE .putIfAbsent (clazz .getName (), initialMap2 );
227
- if (influxColumnAndFieldMap2 == null ) {
228
- influxColumnAndFieldMap2 = initialMap2 ;
223
+
224
+ ConcurrentMap <String , Method > classFieldSetters = new ConcurrentHashMap <>();
225
+ ConcurrentMap <String , Method > fieldSetters = CLASS_SETTERS_CACHE .putIfAbsent (clazz .getName (), classFieldSetters );
226
+ if (fieldSetters == null ) {
227
+ fieldSetters = classFieldSetters ;
229
228
}
230
229
231
230
Class <?> c = clazz ;
@@ -237,9 +236,8 @@ void cacheMeasurementClass(final Class<?>... classVarAgrs) {
237
236
String setterName = "set" .concat (fieldName .substring (0 ,1 ).toUpperCase ().concat (fieldName .substring (1 )));
238
237
try {
239
238
Method setter = c .getDeclaredMethod (setterName , field .getType ());
240
- influxColumnAndFieldMap2 .put (colAnnotation .name (), setter );
239
+ fieldSetters .put (colAnnotation .name (), setter );
241
240
} catch (NoSuchMethodException e ) {
242
- //e.printStackTrace();
243
241
//sj_todo ignore? maybe print a warning that no setter found?
244
242
}
245
243
influxColumnAndFieldMap .put (colAnnotation .name (), field );
@@ -335,6 +333,9 @@ <T> void setFieldValue(final T object, final Field field, final Method fieldSett
335
333
if (!field .isAccessible ()) {
336
334
field .setAccessible (true );
337
335
}
336
+ if (!fieldSetter .isAccessible ()) {
337
+ fieldSetter .setAccessible (true );
338
+ }
338
339
if (assignInstant (fieldType , field , fieldSetter , object , value , precision )
339
340
|| assignString (fieldType , field , fieldSetter , object , value )
340
341
|| assignDouble (fieldType , field , fieldSetter , object , value )
@@ -467,122 +468,6 @@ <T> boolean assignBoolean(final Class<?> fieldType, final Field field, final Met
467
468
return isBooleanAssigned ;
468
469
}
469
470
470
- /*<T> boolean fieldValueModified(final Class<?> fieldType, final Field field, final Method fieldSetter, final T object, final Object value,
471
- final TimeUnit precision)
472
- throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
473
- if (String.class.isAssignableFrom(fieldType)) {
474
- final String stringValue = String.valueOf(value);
475
- if (fieldSetter != null) {
476
- fieldSetter.invoke(object, stringValue);
477
- } else {
478
- field.set(object, stringValue);
479
- }
480
- return true;
481
- }
482
- if (Instant.class.isAssignableFrom(fieldType)) {
483
- Instant instant;
484
- if (value instanceof String) {
485
- instant = Instant.from(RFC3339_FORMATTER.parse(String.valueOf(value)));
486
- } else if (value instanceof Long) {
487
- instant = Instant.ofEpochMilli(toMillis((long) value, precision));
488
- } else if (value instanceof Double) {
489
- instant = Instant.ofEpochMilli(toMillis(((Double) value).longValue(), precision));
490
- } else if (value instanceof Integer) {
491
- instant = Instant.ofEpochMilli(toMillis(((Integer) value).longValue(), precision));
492
- } else {
493
- throw new InfluxDBMapperException("Unsupported type " + field.getClass() + " for field " + field.getName());
494
- }
495
- if (fieldSetter != null) {
496
- fieldSetter.invoke(object, instant);
497
- } else {
498
- field.set(object, instant);
499
- }
500
- return true;
501
- }
502
- return false;
503
- }
504
-
505
- <T> boolean fieldValueForPrimitivesModified(final Class<?> fieldType, final Field field, final Method fieldSetter, final T object,
506
- final Object value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
507
- if (double.class.isAssignableFrom(fieldType)) {
508
- final double doubleValue = (Double) value;
509
- if (fieldSetter != null) {
510
- fieldSetter.invoke(object, doubleValue);
511
- } else {
512
- field.setDouble(object, doubleValue);
513
- }
514
- return true;
515
- }
516
- if (long.class.isAssignableFrom(fieldType)) {
517
- final long longValue = ((Double) value).longValue();
518
- if (fieldSetter != null) {
519
- fieldSetter.invoke(object, longValue);
520
- } else {
521
- field.setLong(object, longValue);
522
- }
523
- return true;
524
- }
525
- if (int.class.isAssignableFrom(fieldType)) {
526
- final int intValue = ((Double) value).intValue();
527
- if(fieldSetter != null) {
528
- fieldSetter.invoke(object, intValue);
529
- } else {
530
- field.setInt(object, intValue);
531
- }
532
- return true;
533
- }
534
- if (boolean.class.isAssignableFrom(fieldType)) {
535
- final boolean boolValue = Boolean.parseBoolean(String.valueOf(value));
536
- if (fieldSetter != null) {
537
- fieldSetter.invoke(object, boolValue);
538
- } else {
539
- field.setBoolean(object, boolValue);
540
- }
541
- return true;
542
- }
543
- return false;
544
- }
545
-
546
- <T> boolean fieldValueForPrimitiveWrappersModified(final Class<?> fieldType, final Field field, final Method fieldSetter, final T object,
547
- final Object value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
548
- if (Double.class.isAssignableFrom(fieldType)) {
549
- if (fieldSetter != null) {
550
- fieldSetter.invoke(object, value);
551
- } else {
552
- field.set(object, value);
553
- }
554
- return true;
555
- }
556
- if (Long.class.isAssignableFrom(fieldType)) {
557
- final long longValue = ((Double) value).longValue();
558
- if (fieldSetter != null) {
559
- fieldSetter.invoke(object, longValue);
560
- } else {
561
- field.set(object, longValue);
562
- }
563
- return true;
564
- }
565
- if (Integer.class.isAssignableFrom(fieldType)) {
566
- final int intValue = ((Double) value).intValue();
567
- if (fieldSetter != null) {
568
- fieldSetter.invoke(object, intValue);
569
- } else {
570
- field.set(object, intValue);
571
- }
572
- return true;
573
- }
574
- if (Boolean.class.isAssignableFrom(fieldType)) {
575
- final boolean boolValue = Boolean.parseBoolean(String.valueOf(value));
576
- if (fieldSetter != null) {
577
- fieldSetter.invoke(object, boolValue);
578
- } else {
579
- field.set(object, boolValue);
580
- }
581
- return true;
582
- }
583
- return false;
584
- }*/
585
-
586
471
private Long toMillis (final long value , final TimeUnit precision ) {
587
472
588
473
return TimeUnit .MILLISECONDS .convert (value , precision );
0 commit comments