addressing cognitive complextity

This commit is contained in:
marilynel 2025-07-20 11:58:30 -08:00
parent d5d82cdb87
commit 7fc41a6c0e

View File

@ -1785,18 +1785,38 @@ public class JSONObject {
populateMap(bean, Collections.newSetFromMap(new IdentityHashMap<Object, Boolean>()), jsonParserConfiguration); populateMap(bean, Collections.newSetFromMap(new IdentityHashMap<Object, Boolean>()), jsonParserConfiguration);
} }
/**
* Convert a bean into a json object
* @param bean object tobe converted
* @param objectsRecord set of all objects for this method
* @param jsonParserConfiguration json parser settings
*/
private void populateMap(Object bean, Set<Object> objectsRecord, JSONParserConfiguration jsonParserConfiguration) { private void populateMap(Object bean, Set<Object> objectsRecord, JSONParserConfiguration jsonParserConfiguration) {
Class<?> klass = bean.getClass(); Class<?> klass = bean.getClass();
// If klass is a System class then set includeSuperClass to false. // If klass is a System class then set includeSuperClass to false.
boolean includeSuperClass = klass.getClassLoader() != null; Method[] methods = getMethods(klass);
Method[] methods = includeSuperClass ? klass.getMethods() : klass.getDeclaredMethods();
for (final Method method : methods) { for (final Method method : methods) {
if (isValidMethod(method)) { if (isValidMethod(method)) {
final String key = getKeyNameFromMethod(method); final String key = getKeyNameFromMethod(method);
if (key != null && !key.isEmpty()) { if (key != null && !key.isEmpty()) {
processMethod(bean, objectsRecord, jsonParserConfiguration, method, key);
}
}
}
}
/**
* Processes method into json object entry if appropriate
* @param bean object being processed (owns the method)
* @param objectsRecord set of all objects for this method
* @param jsonParserConfiguration json parser settings
* @param method method being processed
* @param key name of the method
*/
private void processMethod(Object bean, Set<Object> objectsRecord, JSONParserConfiguration jsonParserConfiguration,
Method method, String key) {
try { try {
final Object result = method.invoke(bean); final Object result = method.invoke(bean);
if (result != null || jsonParserConfiguration.isUseNativeNulls()) { if (result != null || jsonParserConfiguration.isUseNativeNulls()) {
@ -1817,12 +1837,24 @@ public class JSONObject {
closeClosable(result); closeClosable(result);
} }
} catch (IllegalAccessException ignore) { } catch (IllegalAccessException ignore) {
// ignore exception
} catch (IllegalArgumentException ignore) { } catch (IllegalArgumentException ignore) {
// ignore exception
} catch (InvocationTargetException ignore) { } catch (InvocationTargetException ignore) {
// ignore exception
} }
} }
}
} /**
* This is a convenience method to simplify populate maps
* @param klass the name of the object being checked
* @return methods of klass
*/
private static Method[] getMethods(Class<?> klass) {
boolean includeSuperClass = klass.getClassLoader() != null;
Method[] methods = includeSuperClass ? klass.getMethods() : klass.getDeclaredMethods();
return methods;
} }
private static boolean isValidMethodName(String name) { private static boolean isValidMethodName(String name) {