From 1d1bdea7e5b8b36b31aebcb97b710954792ffb4d Mon Sep 17 00:00:00 2001 From: sjoshid Date: Sat, 9 May 2020 13:49:42 -0400 Subject: [PATCH 1/3] PR for https://github.com/influxdata/influxdb-java/issues/670 1) Calling field setters if available before falling back to setting fields directly. --- .../influxdb/impl/InfluxDBResultMapper.java | 180 ++++++++++++------ 1 file changed, 126 insertions(+), 54 deletions(-) diff --git a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java index c94d848bf..3bb829bd0 100644 --- a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java +++ b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java @@ -21,6 +21,8 @@ package org.influxdb.impl; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; @@ -51,6 +53,8 @@ public class InfluxDBResultMapper { private static final ConcurrentMap> CLASS_FIELD_CACHE = new ConcurrentHashMap<>(); + private static final ConcurrentMap> CLASS_SETTERS_CACHE = new ConcurrentHashMap<>(); + private static final int FRACTION_MIN_WIDTH = 0; private static final int FRACTION_MAX_WIDTH = 9; private static final boolean ADD_DECIMAL_POINT = true; @@ -217,11 +221,25 @@ void cacheMeasurementClass(final Class... classVarAgrs) { influxColumnAndFieldMap = initialMap; } + ConcurrentMap classFieldSetters = new ConcurrentHashMap<>(); + ConcurrentMap fieldSetters = CLASS_SETTERS_CACHE.putIfAbsent(clazz.getName(), classFieldSetters); + if (fieldSetters == null) { + fieldSetters = classFieldSetters; + } + Class c = clazz; while (c != null) { for (Field field : c.getDeclaredFields()) { Column colAnnotation = field.getAnnotation(Column.class); if (colAnnotation != null) { + String fieldName = field.getName(); + String setterName = "set".concat(fieldName.substring(0,1).toUpperCase().concat(fieldName.substring(1))); + try { + Method setter = c.getDeclaredMethod(setterName, field.getType()); + fieldSetters.put(colAnnotation.name(), setter); + } catch (NoSuchMethodException e) { + //sj_todo ignore? maybe print a warning that no setter found? + } influxColumnAndFieldMap.put(colAnnotation.name(), field); } } @@ -254,16 +272,18 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, final TimeUnit precision) { int columnSize = series.getColumns().size(); ConcurrentMap colNameAndFieldMap = CLASS_FIELD_CACHE.get(clazz.getName()); + ConcurrentMap fieldSettersMap = CLASS_SETTERS_CACHE.get(clazz.getName()); try { T object = null; for (List row : series.getValues()) { for (int i = 0; i < columnSize; i++) { + Method fieldSetter = fieldSettersMap.get(series.getColumns().get(i)); Field correspondingField = colNameAndFieldMap.get(series.getColumns().get(i)/*InfluxDB columnName*/); - if (correspondingField != null) { + if (correspondingField != null || fieldSetter != null) { if (object == null) { object = clazz.newInstance(); } - setFieldValue(object, correspondingField, row.get(i), precision); + setFieldValue(object, correspondingField, fieldSetter, row.get(i), precision); } } // When the "GROUP BY" clause is used, "tags" are returned as Map and @@ -273,9 +293,10 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, if (series.getTags() != null && !series.getTags().isEmpty()) { for (Entry entry : series.getTags().entrySet()) { Field correspondingField = colNameAndFieldMap.get(entry.getKey()/*InfluxDB columnName*/); - if (correspondingField != null) { + Method fieldSetter = fieldSettersMap.get(entry.getKey()); + if (correspondingField != null || fieldSetter != null ) { // I don't think it is possible to reach here without a valid "object" - setFieldValue(object, correspondingField, entry.getValue(), precision); + setFieldValue(object, correspondingField, fieldSetter, entry.getValue(), precision); } } } @@ -284,7 +305,7 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, object = null; } } - } catch (InstantiationException | IllegalAccessException e) { + } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { throw new InfluxDBMapperException(e); } return result; @@ -302,8 +323,8 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, * @throws IllegalArgumentException * @throws IllegalAccessException */ - void setFieldValue(final T object, final Field field, final Object value, final TimeUnit precision) - throws IllegalArgumentException, IllegalAccessException { + void setFieldValue(final T object, final Field field, final Method fieldSetter, final Object value, final TimeUnit precision) + throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { if (value == null) { return; } @@ -312,9 +333,15 @@ void setFieldValue(final T object, final Field field, final Object value, fi if (!field.isAccessible()) { field.setAccessible(true); } - if (fieldValueModified(fieldType, field, object, value, precision) - || fieldValueForPrimitivesModified(fieldType, field, object, value) - || fieldValueForPrimitiveWrappersModified(fieldType, field, object, value)) { + if (!fieldSetter.isAccessible()) { + fieldSetter.setAccessible(true); + } + if (assignInstant(fieldType, field, fieldSetter, object, value, precision) + || assignString(fieldType, field, fieldSetter, object, value) + || assignDouble(fieldType, field, fieldSetter, object, value) + || assignInteger(fieldType, field, fieldSetter, object, value) + || assignLong(fieldType, field, fieldSetter, object, value) + || assignBoolean(fieldType, field, fieldSetter, object, value)) { return; } String msg = "Class '%s' field '%s' is from an unsupported type '%s'."; @@ -328,14 +355,9 @@ void setFieldValue(final T object, final Field field, final Object value, fi } } - boolean fieldValueModified(final Class fieldType, final Field field, final T object, final Object value, - final TimeUnit precision) - throws IllegalArgumentException, IllegalAccessException { - if (String.class.isAssignableFrom(fieldType)) { - field.set(object, String.valueOf(value)); - return true; - } - if (Instant.class.isAssignableFrom(fieldType)) { + boolean assignInstant(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value, final TimeUnit precision) throws InvocationTargetException, IllegalAccessException { + boolean isInstantAssigned = false; + if(Instant.class.isAssignableFrom(fieldType)) { Instant instant; if (value instanceof String) { instant = Instant.from(RFC3339_FORMATTER.parse(String.valueOf(value))); @@ -348,52 +370,102 @@ boolean fieldValueModified(final Class fieldType, final Field field, fina } else { throw new InfluxDBMapperException("Unsupported type " + field.getClass() + " for field " + field.getName()); } - field.set(object, instant); - return true; + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, instant); + isInstantAssigned = true; + } else { + field.set(object, instant); + isInstantAssigned = true; + } } - return false; + return isInstantAssigned; } - boolean fieldValueForPrimitivesModified(final Class fieldType, final Field field, final T object, - final Object value) throws IllegalArgumentException, IllegalAccessException { - if (double.class.isAssignableFrom(fieldType)) { - field.setDouble(object, ((Double) value).doubleValue()); - return true; - } - if (long.class.isAssignableFrom(fieldType)) { - field.setLong(object, ((Double) value).longValue()); - return true; - } - if (int.class.isAssignableFrom(fieldType)) { - field.setInt(object, ((Double) value).intValue()); - return true; - } - if (boolean.class.isAssignableFrom(fieldType)) { - field.setBoolean(object, Boolean.valueOf(String.valueOf(value)).booleanValue()); - return true; + boolean assignString(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean isStringAssigned = false; + if(String.class.isAssignableFrom(fieldType)) { + final String stringValue = String.valueOf(value); + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, stringValue); + isStringAssigned = true; + } else { + field.set(object, stringValue); + isStringAssigned = true; + } } - return false; + return isStringAssigned; } - boolean fieldValueForPrimitiveWrappersModified(final Class fieldType, final Field field, final T object, - final Object value) throws IllegalArgumentException, IllegalAccessException { - if (Double.class.isAssignableFrom(fieldType)) { - field.set(object, value); - return true; + boolean assignDouble(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean isDoubleAssigned = false; + if(double.class.isAssignableFrom(fieldType) || Double.class.isAssignableFrom(fieldType)) { + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, value); + isDoubleAssigned = true; + } else if(double.class.isAssignableFrom(fieldType)) { + final double doubleValue = (Double) value; + field.setDouble(object, doubleValue); + isDoubleAssigned = true; + } else if(Double.class.isAssignableFrom(fieldType)) { + field.set(object, value); + isDoubleAssigned = true; + } } - if (Long.class.isAssignableFrom(fieldType)) { - field.set(object, Long.valueOf(((Double) value).longValue())); - return true; + return isDoubleAssigned; + } + + boolean assignLong(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean isLongAssigned = false; + if(long.class.isAssignableFrom(fieldType) || Long.class.isAssignableFrom(fieldType)) { + final long longValue = ((Double) value).longValue(); + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, longValue); + isLongAssigned = true; + } else if(long.class.isAssignableFrom(fieldType)) { + field.setLong(object, longValue); + isLongAssigned = true; + } else if(Long.class.isAssignableFrom(fieldType)) { + field.set(object, longValue); + isLongAssigned = true; + } } - if (Integer.class.isAssignableFrom(fieldType)) { - field.set(object, Integer.valueOf(((Double) value).intValue())); - return true; + return isLongAssigned; + } + + boolean assignInteger(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean isIntegerAssigned = false; + if(int.class.isAssignableFrom(fieldType) || Integer.class.isAssignableFrom(fieldType)) { + final int intValue = ((Double) value).intValue(); + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, intValue); + isIntegerAssigned = true; + } else if(int.class.isAssignableFrom(fieldType)) { + field.setInt(object, intValue); + isIntegerAssigned = true; + } else if(Integer.class.isAssignableFrom(fieldType)) { + field.set(object, intValue); + isIntegerAssigned = true; + } } - if (Boolean.class.isAssignableFrom(fieldType)) { - field.set(object, Boolean.valueOf(String.valueOf(value))); - return true; + return isIntegerAssigned; + } + + boolean assignBoolean(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean isBooleanAssigned = false; + if(boolean.class.isAssignableFrom(fieldType) || Boolean.class.isAssignableFrom(fieldType)) { + final boolean boolValue = Boolean.parseBoolean(String.valueOf(value)); + if(fieldSetter != null && fieldSetter.isAccessible()) { + fieldSetter.invoke(object, boolValue); + isBooleanAssigned = true; + } else if(boolean.class.isAssignableFrom(fieldType)) { + field.setBoolean(object, boolValue); + isBooleanAssigned = true; + } else if(Boolean.class.isAssignableFrom(fieldType)) { + field.set(object, boolValue); + isBooleanAssigned = true; + } } - return false; + return isBooleanAssigned; } private Long toMillis(final long value, final TimeUnit precision) { From 0db6460f37ac60477fa42bf9d9f1b4ef8d7d1c7c Mon Sep 17 00:00:00 2001 From: sjoshid Date: Sun, 10 May 2020 15:57:22 -0400 Subject: [PATCH 2/3] PR for https://github.com/influxdata/influxdb-java/issues/670 1) Handling NPE --- .../org/influxdb/impl/InfluxDBResultMapper.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java index 3bb829bd0..48e618d7b 100644 --- a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java +++ b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java @@ -333,9 +333,6 @@ void setFieldValue(final T object, final Field field, final Method fieldSett if (!field.isAccessible()) { field.setAccessible(true); } - if (!fieldSetter.isAccessible()) { - fieldSetter.setAccessible(true); - } if (assignInstant(fieldType, field, fieldSetter, object, value, precision) || assignString(fieldType, field, fieldSetter, object, value) || assignDouble(fieldType, field, fieldSetter, object, value) @@ -370,7 +367,7 @@ boolean assignInstant(final Class fieldType, final Field field, final Met } else { throw new InfluxDBMapperException("Unsupported type " + field.getClass() + " for field " + field.getName()); } - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, instant); isInstantAssigned = true; } else { @@ -385,7 +382,7 @@ boolean assignString(final Class fieldType, final Field field, final Meth boolean isStringAssigned = false; if(String.class.isAssignableFrom(fieldType)) { final String stringValue = String.valueOf(value); - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, stringValue); isStringAssigned = true; } else { @@ -399,7 +396,7 @@ boolean assignString(final Class fieldType, final Field field, final Meth boolean assignDouble(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { boolean isDoubleAssigned = false; if(double.class.isAssignableFrom(fieldType) || Double.class.isAssignableFrom(fieldType)) { - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, value); isDoubleAssigned = true; } else if(double.class.isAssignableFrom(fieldType)) { @@ -418,7 +415,7 @@ boolean assignLong(final Class fieldType, final Field field, final Method boolean isLongAssigned = false; if(long.class.isAssignableFrom(fieldType) || Long.class.isAssignableFrom(fieldType)) { final long longValue = ((Double) value).longValue(); - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, longValue); isLongAssigned = true; } else if(long.class.isAssignableFrom(fieldType)) { @@ -436,7 +433,7 @@ boolean assignInteger(final Class fieldType, final Field field, final Met boolean isIntegerAssigned = false; if(int.class.isAssignableFrom(fieldType) || Integer.class.isAssignableFrom(fieldType)) { final int intValue = ((Double) value).intValue(); - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, intValue); isIntegerAssigned = true; } else if(int.class.isAssignableFrom(fieldType)) { @@ -454,7 +451,7 @@ boolean assignBoolean(final Class fieldType, final Field field, final Met boolean isBooleanAssigned = false; if(boolean.class.isAssignableFrom(fieldType) || Boolean.class.isAssignableFrom(fieldType)) { final boolean boolValue = Boolean.parseBoolean(String.valueOf(value)); - if(fieldSetter != null && fieldSetter.isAccessible()) { + if(fieldSetter != null) { fieldSetter.invoke(object, boolValue); isBooleanAssigned = true; } else if(boolean.class.isAssignableFrom(fieldType)) { From 5c9bd272d18bf423fba7935db580d2623af04566 Mon Sep 17 00:00:00 2001 From: sjoshid Date: Sun, 10 May 2020 16:39:33 -0400 Subject: [PATCH 3/3] PR for https://github.com/influxdata/influxdb-java/issues/670 1) Fixing Checkstyle errors. --- .../influxdb/impl/InfluxDBResultMapper.java | 69 +++++++++++-------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java index 48e618d7b..2c3e05ff0 100644 --- a/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java +++ b/src/main/java/org/influxdb/impl/InfluxDBResultMapper.java @@ -53,7 +53,8 @@ public class InfluxDBResultMapper { private static final ConcurrentMap> CLASS_FIELD_CACHE = new ConcurrentHashMap<>(); - private static final ConcurrentMap> CLASS_SETTERS_CACHE = new ConcurrentHashMap<>(); + private static final + ConcurrentMap> CLASS_SETTERS_CACHE = new ConcurrentHashMap<>(); private static final int FRACTION_MIN_WIDTH = 0; private static final int FRACTION_MAX_WIDTH = 9; @@ -233,7 +234,7 @@ void cacheMeasurementClass(final Class... classVarAgrs) { Column colAnnotation = field.getAnnotation(Column.class); if (colAnnotation != null) { String fieldName = field.getName(); - String setterName = "set".concat(fieldName.substring(0,1).toUpperCase().concat(fieldName.substring(1))); + String setterName = "set".concat(fieldName.substring(0, 1).toUpperCase().concat(fieldName.substring(1))); try { Method setter = c.getDeclaredMethod(setterName, field.getType()); fieldSetters.put(colAnnotation.name(), setter); @@ -294,7 +295,7 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, for (Entry entry : series.getTags().entrySet()) { Field correspondingField = colNameAndFieldMap.get(entry.getKey()/*InfluxDB columnName*/); Method fieldSetter = fieldSettersMap.get(entry.getKey()); - if (correspondingField != null || fieldSetter != null ) { + if (correspondingField != null || fieldSetter != null) { // I don't think it is possible to reach here without a valid "object" setFieldValue(object, correspondingField, fieldSetter, entry.getValue(), precision); } @@ -323,7 +324,8 @@ List parseSeriesAs(final QueryResult.Series series, final Class clazz, * @throws IllegalArgumentException * @throws IllegalAccessException */ - void setFieldValue(final T object, final Field field, final Method fieldSetter, final Object value, final TimeUnit precision) + void setFieldValue(final T object, final Field field, final Method fieldSetter, final Object value, + final TimeUnit precision) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException { if (value == null) { return; @@ -352,9 +354,11 @@ void setFieldValue(final T object, final Field field, final Method fieldSett } } - boolean assignInstant(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value, final TimeUnit precision) throws InvocationTargetException, IllegalAccessException { + boolean assignInstant(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value, final TimeUnit precision) throws InvocationTargetException, + IllegalAccessException { boolean isInstantAssigned = false; - if(Instant.class.isAssignableFrom(fieldType)) { + if (Instant.class.isAssignableFrom(fieldType)) { Instant instant; if (value instanceof String) { instant = Instant.from(RFC3339_FORMATTER.parse(String.valueOf(value))); @@ -367,7 +371,7 @@ boolean assignInstant(final Class fieldType, final Field field, final Met } else { throw new InfluxDBMapperException("Unsupported type " + field.getClass() + " for field " + field.getName()); } - if(fieldSetter != null) { + if (fieldSetter != null) { fieldSetter.invoke(object, instant); isInstantAssigned = true; } else { @@ -378,11 +382,12 @@ boolean assignInstant(final Class fieldType, final Field field, final Met return isInstantAssigned; } - boolean assignString(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean assignString(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value) throws InvocationTargetException, IllegalAccessException { boolean isStringAssigned = false; - if(String.class.isAssignableFrom(fieldType)) { + if (String.class.isAssignableFrom(fieldType)) { final String stringValue = String.valueOf(value); - if(fieldSetter != null) { + if (fieldSetter != null) { fieldSetter.invoke(object, stringValue); isStringAssigned = true; } else { @@ -393,17 +398,18 @@ boolean assignString(final Class fieldType, final Field field, final Meth return isStringAssigned; } - boolean assignDouble(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean assignDouble(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value) throws InvocationTargetException, IllegalAccessException { boolean isDoubleAssigned = false; - if(double.class.isAssignableFrom(fieldType) || Double.class.isAssignableFrom(fieldType)) { - if(fieldSetter != null) { + if (double.class.isAssignableFrom(fieldType) || Double.class.isAssignableFrom(fieldType)) { + if (fieldSetter != null) { fieldSetter.invoke(object, value); isDoubleAssigned = true; - } else if(double.class.isAssignableFrom(fieldType)) { + } else if (double.class.isAssignableFrom(fieldType)) { final double doubleValue = (Double) value; field.setDouble(object, doubleValue); isDoubleAssigned = true; - } else if(Double.class.isAssignableFrom(fieldType)) { + } else if (Double.class.isAssignableFrom(fieldType)) { field.set(object, value); isDoubleAssigned = true; } @@ -411,17 +417,18 @@ boolean assignDouble(final Class fieldType, final Field field, final Meth return isDoubleAssigned; } - boolean assignLong(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean assignLong(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value) throws InvocationTargetException, IllegalAccessException { boolean isLongAssigned = false; - if(long.class.isAssignableFrom(fieldType) || Long.class.isAssignableFrom(fieldType)) { + if (long.class.isAssignableFrom(fieldType) || Long.class.isAssignableFrom(fieldType)) { final long longValue = ((Double) value).longValue(); - if(fieldSetter != null) { + if (fieldSetter != null) { fieldSetter.invoke(object, longValue); isLongAssigned = true; - } else if(long.class.isAssignableFrom(fieldType)) { + } else if (long.class.isAssignableFrom(fieldType)) { field.setLong(object, longValue); isLongAssigned = true; - } else if(Long.class.isAssignableFrom(fieldType)) { + } else if (Long.class.isAssignableFrom(fieldType)) { field.set(object, longValue); isLongAssigned = true; } @@ -429,17 +436,18 @@ boolean assignLong(final Class fieldType, final Field field, final Method return isLongAssigned; } - boolean assignInteger(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean assignInteger(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value) throws InvocationTargetException, IllegalAccessException { boolean isIntegerAssigned = false; - if(int.class.isAssignableFrom(fieldType) || Integer.class.isAssignableFrom(fieldType)) { + if (int.class.isAssignableFrom(fieldType) || Integer.class.isAssignableFrom(fieldType)) { final int intValue = ((Double) value).intValue(); - if(fieldSetter != null) { + if (fieldSetter != null) { fieldSetter.invoke(object, intValue); isIntegerAssigned = true; - } else if(int.class.isAssignableFrom(fieldType)) { + } else if (int.class.isAssignableFrom(fieldType)) { field.setInt(object, intValue); isIntegerAssigned = true; - } else if(Integer.class.isAssignableFrom(fieldType)) { + } else if (Integer.class.isAssignableFrom(fieldType)) { field.set(object, intValue); isIntegerAssigned = true; } @@ -447,17 +455,18 @@ boolean assignInteger(final Class fieldType, final Field field, final Met return isIntegerAssigned; } - boolean assignBoolean(final Class fieldType, final Field field, final Method fieldSetter, final T object, final Object value) throws InvocationTargetException, IllegalAccessException { + boolean assignBoolean(final Class fieldType, final Field field, final Method fieldSetter, final T object, + final Object value) throws InvocationTargetException, IllegalAccessException { boolean isBooleanAssigned = false; - if(boolean.class.isAssignableFrom(fieldType) || Boolean.class.isAssignableFrom(fieldType)) { + if (boolean.class.isAssignableFrom(fieldType) || Boolean.class.isAssignableFrom(fieldType)) { final boolean boolValue = Boolean.parseBoolean(String.valueOf(value)); - if(fieldSetter != null) { + if (fieldSetter != null) { fieldSetter.invoke(object, boolValue); isBooleanAssigned = true; - } else if(boolean.class.isAssignableFrom(fieldType)) { + } else if (boolean.class.isAssignableFrom(fieldType)) { field.setBoolean(object, boolValue); isBooleanAssigned = true; - } else if(Boolean.class.isAssignableFrom(fieldType)) { + } else if (Boolean.class.isAssignableFrom(fieldType)) { field.set(object, boolValue); isBooleanAssigned = true; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy