### Question:
JavaPropertyNameProcessor implements PropertyNameProcessor { @Override @SuppressWarnings("rawtypes") public String processPropertyName(Class beanClass, String name) { if (name == null || name.length() == 0) { return name; } name = name.toLowerCase(Locale.ENGLISH); String[] array = name.split("_"); if (array.length == 1) { return array[0]; } StringBuilder sb = new StringBuilder(); if (array[0].length() == 1) { sb.append(Character.toUpperCase(array[0].charAt(0))); } else { sb.append(array[0]); } for (int i = 1; i < array.length; i++) { sb.append(Character.toUpperCase(array[i].charAt(0))).append(array[i].substring(1)); } return sb.toString(); }  @Override @SuppressWarnings("rawtypes") String processPropertyName(Class beanClass, String name);  }### Answer:
@Test public void testProcessPropertyName() { assertEquals(null, processor.processPropertyName(null, null)); assertEquals("", processor.processPropertyName(null, "")); assertEquals("aaa", processor.processPropertyName(null, "aaa")); assertEquals("aaaBbb", processor.processPropertyName(null, "aaa_bbb")); assertEquals("aaaBbbCcc", processor.processPropertyName(null, "aaa_bbb_ccc")); assertEquals("ABC", processor.processPropertyName(null, "a_b_c")); assertEquals("aaBC", processor.processPropertyName(null, "aa_b_c")); }