RpcConfigs { public static <T> T getOrDefaultValue(String primaryKey, T defaultValue) { Object val = CFG.get(primaryKey); if (val == null) { return defaultValue; } else { Class<?> type = defaultValue == null ? null : defaultValue.getClass(); return (T) CompatibleTypeUtils.convert(val, type); } }  static void putValue(String key, Object newValue); static boolean getBooleanValue(String primaryKey); static boolean getBooleanValue(String primaryKey, String secondaryKey); static int getIntValue(String primaryKey); static int getIntValue(String primaryKey, String secondaryKey); static T getEnumValue(String primaryKey, Class<T> enumClazz); static String getStringValue(String primaryKey); static String getStringValue(String primaryKey, String secondaryKey); static List getListValue(String primaryKey); static T getOrDefaultValue(String primaryKey, T defaultValue); static synchronized void subscribe(String key, RpcConfigListener listener); static synchronized void unSubscribe(String key, RpcConfigListener listener);  }
@Test public void getOrDefaultValue() { boolean xxx = RpcConfigs.getOrDefaultValue("xxx", true); Assert.assertTrue(xxx); RpcConfigs.putValue("xxx", "false"); try { xxx = RpcConfigs.getOrDefaultValue("xxx", true); Assert.assertFalse(xxx); } finally { RpcConfigs.removeValue("xxx"); } xxx = RpcConfigs.getOrDefaultValue("xxx", true); Assert.assertTrue(xxx); int yyy = RpcConfigs.getOrDefaultValue("yyy", 111); Assert.assertTrue(yyy == 111); RpcConfigs.putValue("yyy", "123"); try { yyy = RpcConfigs.getOrDefaultValue("yyy", 111); Assert.assertTrue(yyy == 123); } finally { RpcConfigs.removeValue("yyy"); } yyy = RpcConfigs.getOrDefaultValue("yyy", 123); Assert.assertTrue(yyy == 123); }