From ffea1de0c7acfac742a1ed3b6eda3fe9a1616a6f Mon Sep 17 00:00:00 2001 From: Stanislav Zholnin Date: Thu, 7 Mar 2019 18:06:40 +0000 Subject: [PATCH] Add logging when parsing fails in DeviceConfig API getters. Test: atest FrameworksCoreTests:DeviceConfigTest Change-Id: I04aee32561f8c2c3ab5fd966f49b608f1e47ae03 --- core/java/android/provider/DeviceConfig.java | 30 +++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index 261e5db493068..47bdcee5c1c88 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -31,6 +31,7 @@ import android.database.ContentObserver; import android.net.Uri; import android.provider.Settings.ResetMode; import android.util.ArrayMap; +import android.util.Log; import android.util.Pair; import com.android.internal.annotations.GuardedBy; @@ -406,6 +407,7 @@ public final class DeviceConfig { new ArrayMap<>(); @GuardedBy("sLock") private static Map> sNamespaces = new HashMap<>(); + private static final String TAG = "DeviceConfig"; // Should never be invoked private DeviceConfig() { @@ -479,9 +481,13 @@ public final class DeviceConfig { @RequiresPermission(READ_DEVICE_CONFIG) public static int getInt(String namespace, String name, int defaultValue) { String value = getProperty(namespace, name); + if (value == null) { + return defaultValue; + } try { return Integer.parseInt(value); } catch (NumberFormatException e) { + Log.e(TAG, "Parsing integer failed for " + namespace + ":" + name); return defaultValue; } } @@ -501,9 +507,13 @@ public final class DeviceConfig { @RequiresPermission(READ_DEVICE_CONFIG) public static long getLong(String namespace, String name, long defaultValue) { String value = getProperty(namespace, name); + if (value == null) { + return defaultValue; + } try { return Long.parseLong(value); } catch (NumberFormatException e) { + Log.e(TAG, "Parsing long failed for " + namespace + ":" + name); return defaultValue; } } @@ -523,11 +533,13 @@ public final class DeviceConfig { @RequiresPermission(READ_DEVICE_CONFIG) public static float getFloat(String namespace, String name, float defaultValue) { String value = getProperty(namespace, name); + if (value == null) { + return defaultValue; + } try { return Float.parseFloat(value); } catch (NumberFormatException e) { - return defaultValue; - } catch (NullPointerException e) { + Log.e(TAG, "Parsing float failed for " + namespace + ":" + name); return defaultValue; } } @@ -915,9 +927,13 @@ public final class DeviceConfig { public int getInt(@NonNull String name, int defaultValue) { Preconditions.checkNotNull(name); String value = mMap.get(name); + if (value == null) { + return defaultValue; + } try { return Integer.parseInt(value); } catch (NumberFormatException e) { + Log.e(TAG, "Parsing int failed for " + name); return defaultValue; } } @@ -933,9 +949,13 @@ public final class DeviceConfig { public long getLong(@NonNull String name, long defaultValue) { Preconditions.checkNotNull(name); String value = mMap.get(name); + if (value == null) { + return defaultValue; + } try { return Long.parseLong(value); } catch (NumberFormatException e) { + Log.e(TAG, "Parsing long failed for " + name); return defaultValue; } } @@ -951,11 +971,13 @@ public final class DeviceConfig { public float getFloat(@NonNull String name, float defaultValue) { Preconditions.checkNotNull(name); String value = mMap.get(name); + if (value == null) { + return defaultValue; + } try { return Float.parseFloat(value); } catch (NumberFormatException e) { - return defaultValue; - } catch (NullPointerException e) { + Log.e(TAG, "Parsing float failed for " + name); return defaultValue; } }