in src/main/java/org/apache/commons/beanutils2/MappedPropertyDescriptor.java [76:120]
private Method get() {
if (methodRef == null) {
return null;
}
Method m = methodRef.get();
if (m == null) {
Class<?> clazz = classRef.get();
if (clazz == null) {
clazz = reLoadClass();
if (clazz != null) {
classRef = new WeakReference<>(clazz);
}
}
Objects.requireNonNull(clazz, () -> "Method " + methodName + " for " + className + " could not be reconstructed - class reference has gone");
Class<?>[] paramTypes = null;
if (writeParamClassNames != null) {
paramTypes = new Class[2];
paramTypes[0] = writeParamTypeRef0.get();
if (paramTypes[0] == null) {
paramTypes[0] = reLoadClass(writeParamClassNames[0]);
if (paramTypes[0] != null) {
writeParamTypeRef0 = new WeakReference<>(paramTypes[0]);
}
}
paramTypes[1] = writeParamTypeRef1.get();
if (paramTypes[1] == null) {
paramTypes[1] = reLoadClass(writeParamClassNames[1]);
if (paramTypes[1] != null) {
writeParamTypeRef1 = new WeakReference<>(paramTypes[1]);
}
}
} else {
paramTypes = STRING_CLASS_PARAMETER;
}
try {
m = clazz.getMethod(methodName, paramTypes);
// Un-comment following line for testing
// System.out.println("Recreated Method " + methodName + " for " + className);
} catch (final NoSuchMethodException e) {
throw new IllegalStateException("Method " + methodName + " for " + className + " could not be reconstructed - method not found");
}
methodRef = new SoftReference<>(m);
}
return m;
}