Skip to content

Commit 0f01388

Browse files
committed
支持配置JSON,并自动转成相应类型(2)-补全单元测试并修改异常返回值
1 parent adc1f54 commit 0f01388

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

disconf-client/src/main/java/com/baidu/disconf/client/support/utils/ClassUtils.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public static Object getValeByType(Class<?> type, Object value)
116116
}
117117

118118
// trim
119-
String dataValue = (String) value;
119+
String dataValue = String.valueOf(value);
120120
dataValue = dataValue.trim();
121121

122122
// process
@@ -126,15 +126,15 @@ public static Object getValeByType(Class<?> type, Object value)
126126
if (typeName.equals("int") || typeName.equals("java.lang.integer")) {
127127

128128
if (value.equals("")) {
129-
value = "0";
129+
return 0;
130130
}
131131

132132
return Integer.valueOf(dataValue);
133133

134134
} else if (typeName.equals("long") || typeName.equals("java.lang.long")) {
135135

136136
if (value.equals("")) {
137-
value = "0";
137+
return 0L;
138138
}
139139

140140
return Long.valueOf(dataValue);
@@ -143,7 +143,7 @@ public static Object getValeByType(Class<?> type, Object value)
143143
|| typeName.equals("java.lang.boolean")) {
144144

145145
if (value.equals("")) {
146-
value = "false";
146+
return false;
147147
}
148148

149149
return Boolean.valueOf(dataValue);
@@ -152,7 +152,7 @@ public static Object getValeByType(Class<?> type, Object value)
152152
|| typeName.equals("java.lang.double")) {
153153

154154
if (value.equals("")) {
155-
value = "0.0";
155+
return 0.0D;
156156
}
157157

158158
return Double.valueOf(dataValue);
@@ -170,7 +170,8 @@ public static Object getValeByType(Class<?> type, Object value)
170170
} catch (Exception ex) {
171171
ex.printStackTrace();
172172
}
173-
return value;
173+
// JSON解析异常的情况下,返回null,防止待会转换继续抛异常
174+
return null;
174175
}
175176
}
176177

disconf-client/src/test/java/com/baidu/disconf/client/support/utils/ClassUtilsTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,20 @@ public class ClassUtilsTest {
1313
@Test
1414
public void testGetValeByType() throws Exception {
1515
assertTrue(ClassUtils.getValeByType(Integer.class, "10086").equals(new Integer(10086)));
16+
assertTrue(ClassUtils.getValeByType(Integer.class, "").equals(new Integer(0)));
17+
assertTrue(ClassUtils.getValeByType(Integer.class, 0).equals(new Integer(0)));
1618
assertTrue(ClassUtils.getValeByType(Long.class, "1688").equals(new Long(1688)));
19+
assertTrue(ClassUtils.getValeByType(Long.class, "").equals(new Long(0)));
1720
assertTrue(ClassUtils.getValeByType(Boolean.class, "true").equals(new Boolean(true)));
21+
assertTrue(ClassUtils.getValeByType(Boolean.class, "").equals(new Boolean(false)));
1822
assertTrue(ClassUtils.getValeByType(Double.class, "234.4").equals(new Double(234.4)));
23+
assertTrue(ClassUtils.getValeByType(Double.class, "").equals(new Double(0.0)));
1924
assertTrue(ClassUtils.getValeByType(String.class, "234.4").equals(String.valueOf(234.4)));
2025
List<Integer> list = (List<Integer>) ClassUtils.getValeByType(List.class, "[100,200,300]");
2126
assertTrue(list.contains(new Double(100)));
2227
Map<String, String> map = (Map<String, String>) ClassUtils.getValeByType(Map.class, "{\"name\":\"zxh\",\"city\":\"shenzhen\"}");
2328
assertTrue(map.get("name").equals("zxh"));
29+
assertTrue(ClassUtils.getValeByType(List.class, "234.4,123") == null);
2430
}
2531

2632
}

0 commit comments

Comments
 (0)