### Question:
JsonPropertyNameProcessor implements PropertyNameProcessor { @Override @SuppressWarnings("rawtypes") public String processPropertyName(Class beanClass, String name) { if (name == null || name.length() == 0) { return name; } if (beanClass != null) { if (HostGetParam.class.isAssignableFrom(beanClass)) { if (name.equals("selectParentTemplates")) { return name; } else if (name.equals("selectGroups")) { return name; } } if (UserGetParam.class.isAssignableFrom(beanClass)) { if (name.equals("selectUsrgrps")) { return name; } } } StringBuilder sb = new StringBuilder(); int pos = 0; for (int i = 1; i < name.length(); i++) { if (Character.isUpperCase(name.charAt(i))) { if (sb.length() != 0) { sb.append('_'); } sb.append(name.substring(pos, i)); pos = i; } } if (sb.length() != 0) { sb.append('_'); } sb.append(name.substring(pos, name.length())); return sb.toString().toLowerCase(Locale.ENGLISH); }  @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("aaa_bbb", processor.processPropertyName(null, "aaaBbb")); assertEquals("aaa_bbb_ccc", processor.processPropertyName(null, "aaaBbbCcc")); assertEquals("a_b_c", processor.processPropertyName(null, "ABC")); assertEquals("aa_b_c", processor.processPropertyName(null, "aaBC")); }