From c84795155c1907f17643f39bf59cba783608cbc9 Mon Sep 17 00:00:00 2001 From: Silvio Hermann Date: Mon, 30 Sep 2024 12:55:57 +0200 Subject: [PATCH] #550 Do not rely on exceptions for flow control in HISinOneResolver#getFieldValue --- .../uni_jena/thunibib/his/xml/HISinOneResolver.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/de/uni_jena/thunibib/his/xml/HISinOneResolver.java b/common/src/main/java/de/uni_jena/thunibib/his/xml/HISinOneResolver.java index 72b5881e..9f7f878e 100644 --- a/common/src/main/java/de/uni_jena/thunibib/his/xml/HISinOneResolver.java +++ b/common/src/main/java/de/uni_jena/thunibib/his/xml/HISinOneResolver.java @@ -42,6 +42,7 @@ import java.lang.reflect.Field; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -842,10 +843,12 @@ protected Object getFieldValue(SysValue sysValue, String fieldName) { /* lookup field in class hierarchy */ while (clazz != null && field == null) { - try { - LOGGER.debug("Checking for field {} in {}", fieldName, clazz.getSimpleName()); - field = clazz.getDeclaredField(fieldName); - } catch (Exception e) { + LOGGER.debug("Checking for field {} in {}", fieldName, clazz.getSimpleName()); + Optional f = Arrays.stream(clazz.getDeclaredFields()) + .filter(df -> df.getName().equals(fieldName)).findFirst(); + if (f.isPresent()) { + field = f.get(); + } else { LOGGER.debug("Field {} could not be obtained from {}. Checking superclass {}", fieldName, clazz.getSimpleName(), clazz.getSuperclass().getSimpleName());