From 38001f146c5baec4023060ee9077ed863d80505e Mon Sep 17 00:00:00 2001 From: Roberto Congiu Date: Mon, 25 Aug 2014 12:52:03 -0700 Subject: [PATCH] struct and map use the same logic to determine if an object is a null, considering also an empty string / string of only spaces as a null --- .../JsonMapObjectInspector.java | 19 ++------- .../JsonObjectInspectorUtils.java | 39 +++++++++++++++++++ .../JsonStructObjectInspector.java | 8 ++-- 3 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonObjectInspectorUtils.java diff --git a/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonMapObjectInspector.java b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonMapObjectInspector.java index e8024071..4abfe64a 100644 --- a/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonMapObjectInspector.java +++ b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonMapObjectInspector.java @@ -33,7 +33,7 @@ public JsonMapObjectInspector(ObjectInspector mapKeyObjectInspector, @Override public Map getMap(Object data) { - if (checkObject(data) == null) { + if (JsonObjectInspectorUtils.checkObject(data) == null) { return null; } @@ -42,22 +42,11 @@ public JsonMapObjectInspector(ObjectInspector mapKeyObjectInspector, return new JSONObjectMapAdapter(jObj); } - protected Object checkObject(Object data) { - // just check for null first thing - if(data == null) return data; - - if(data instanceof String || - data instanceof Text) { - String str = (data instanceof String ? (String)data : ((Text)data).toString() ); - if(str.trim().isEmpty()) - return null; - } - return data; - } + @Override public int getMapSize(Object data) { - if (checkObject(data) == null) { + if (JsonObjectInspectorUtils.checkObject(data) == null) { return -1; } JSONObject jObj = (JSONObject) data; @@ -66,7 +55,7 @@ public int getMapSize(Object data) { @Override public Object getMapValueElement(Object data, Object key) { - if (checkObject(data) == null) { + if (JsonObjectInspectorUtils.checkObject(data) == null) { return -1; } diff --git a/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonObjectInspectorUtils.java b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonObjectInspectorUtils.java new file mode 100644 index 00000000..da140823 --- /dev/null +++ b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonObjectInspectorUtils.java @@ -0,0 +1,39 @@ +/* + * Copyright 2014 rcongiu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openx.data.jsonserde.objectinspector; + +import org.apache.hadoop.io.Text; + +/** + * + * @author rcongiu + */ +public class JsonObjectInspectorUtils { + public static Object checkObject(Object data) { + // just check for null first thing + if(data == null) return data; + + if(data instanceof String || + data instanceof Text) { + String str = (data instanceof String ? (String)data : ((Text)data).toString() ); + if(str.trim().isEmpty()) + return null; + } + return data; + } + +} diff --git a/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonStructObjectInspector.java b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonStructObjectInspector.java index 90ba038f..49cd84df 100644 --- a/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonStructObjectInspector.java +++ b/json-serde/src/main/java/org/openx/data/jsonserde/objectinspector/JsonStructObjectInspector.java @@ -51,7 +51,7 @@ public JsonStructObjectInspector(List structFieldNames, */ @Override public Object getStructFieldData(Object data, StructField fieldRef) { - if (data == null) { + if (JsonObjectInspectorUtils.checkObject(data) == null) { return null; } @@ -86,7 +86,7 @@ public Object getStructFieldDataFromList(List data, StructField fieldRef ) { public Object getStructFieldDataFromJsonObject(JSONObject data, StructField fieldRef ) { - if (data == null) { + if (JsonObjectInspectorUtils.checkObject(data) == null) { return null; } @@ -127,7 +127,9 @@ protected String getJsonField(StructField fr) { List values = new ArrayList(); @Override public List getStructFieldsDataAsList(Object o) { - if(o == null) return null; + if (JsonObjectInspectorUtils.checkObject(o) == null) { + return null; + } JSONObject jObj = (JSONObject) o; values.clear();