OSDN Git Service

Add logging when parsing fails in DeviceConfig API getters.
authorStanislav Zholnin <zholnin@google.com>
Thu, 7 Mar 2019 18:06:40 +0000 (18:06 +0000)
committerStanislav Zholnin <zholnin@google.com>
Tue, 12 Mar 2019 17:10:12 +0000 (17:10 +0000)
Test: atest FrameworksCoreTests:DeviceConfigTest
Change-Id: I04aee32561f8c2c3ab5fd966f49b608f1e47ae03

core/java/android/provider/DeviceConfig.java

index 261e5db..47bdcee 100644 (file)
@@ -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<String, Pair<ContentObserver, Integer>> 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;
             }
         }