You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2019/05/23 06:39:14 UTC

[incubator-pinot] branch master updated: add more types parsing for string coerceValueIntoField (#4133)

This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new cb7dab4   add more types parsing for string coerceValueIntoField (#4133)
cb7dab4 is described below

commit cb7dab4be3a5d1425c9ceb1875f5417193b3f2fb
Author: Kate Wang <ka...@gmail.com>
AuthorDate: Wed May 22 23:39:09 2019 -0700

     add more types parsing for string coerceValueIntoField (#4133)
---
 .../apache/pinot/common/config/Deserializer.java    | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/pinot-common/src/main/java/org/apache/pinot/common/config/Deserializer.java b/pinot-common/src/main/java/org/apache/pinot/common/config/Deserializer.java
index 93c4d84..794874f 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/config/Deserializer.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/config/Deserializer.java
@@ -349,17 +349,26 @@ public class Deserializer {
         } else if (value instanceof String) {
           String stringValue = (String) value;
           try {
-            if (Integer.class.isAssignableFrom(fieldType) || int.class
-                .isAssignableFrom(fieldType)) { // field instanceof int/Integer
+            if (fieldType.isAssignableFrom(Integer.class) || fieldType.isAssignableFrom(int.class)) {
               destinationValue = Integer.parseInt(stringValue);
-            } else if (Long.class.isAssignableFrom(fieldType)) { // field instanceof long/Long
+            } else if (fieldType.isAssignableFrom(Long.class) || fieldType.isAssignableFrom(long.class)) {
               destinationValue = Long.parseLong(stringValue);
-            } else if (Boolean.class.isAssignableFrom(fieldType) || boolean.class.isAssignableFrom(fieldType)) {
+            } else if (fieldType.isAssignableFrom(Boolean.class) || fieldType.isAssignableFrom(boolean.class)) {
               destinationValue = Boolean.parseBoolean(stringValue);
             } else if (Enum.class.isAssignableFrom(fieldType)) {
               destinationValue = Enum.valueOf(fieldType.asSubclass(Enum.class), stringValue.toUpperCase());
-            } else {
-              // TODO Add float/double/short/char
+            } else if (fieldType.isAssignableFrom(Float.class) || fieldType.isAssignableFrom(float.class)) {
+              destinationValue = Float.parseFloat(stringValue);
+            } else if (fieldType.isAssignableFrom(Double.class) || fieldType.isAssignableFrom(double.class)) {
+              destinationValue = Double.parseDouble(stringValue);
+            } else if (fieldType.isAssignableFrom(Short.class) || fieldType.isAssignableFrom(short.class)) {
+              destinationValue = Short.parseShort(stringValue);
+            } else if (fieldType.isAssignableFrom(Byte.class) || fieldType.isAssignableFrom(byte.class)) {
+              destinationValue = Byte.parseByte(stringValue);
+            } else if (fieldType.isAssignableFrom(Character.class) || fieldType.isAssignableFrom(char.class)) {
+              destinationValue = stringValue.charAt(0);
+            }
+            else {
               throw new RuntimeException("Unsupported conversion from " + objectType + " -> " + fieldType);
             }
           } catch (Exception e) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org