From 8d668d12ecefc6be6da572fcf0222a1c86e92e24 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 10 Jan 2024 19:58:26 -0600 Subject: [PATCH] CE-781 Get fields using getFields().containsKey/get, rather than getField(String) - to avoid it throwing, to cut down on exceptions (and warn if we get a real exception, vs., we'll expect non-fields sometimes, so be okay with that) --- .../core/actions/values/QValueFormatter.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java index 860a4279..5b176bbc 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java @@ -334,24 +334,34 @@ public class QValueFormatter if(exposedJoin.getJoinTable().equals(nameParts[0])) { QTableMetaData joinTable = QContext.getQInstance().getTable(nameParts[0]); - fieldMap.put(fieldName, joinTable.getField(nameParts[1])); + if(joinTable.getFields().containsKey(nameParts[1])) + { + fieldMap.put(fieldName, joinTable.getField(nameParts[1])); + } } } } else { - fieldMap.put(fieldName, table.getField(fieldName)); + if(table.getFields().containsKey(fieldName)) + { + fieldMap.put(fieldName, table.getField(fieldName)); + } } } catch(Exception e) { - /////////////////////////////////////////////////////////// - // put an empty field in - so no formatting will be done // - /////////////////////////////////////////////////////////// - LOG.info("Error getting field for setting display value", e, logPair("fieldName", fieldName), logPair("tableName", table.getName())); - fieldMap.put(fieldName, new QFieldMetaData()); + LOG.warn("Error getting field for setting display value", e, logPair("fieldName", fieldName), logPair("tableName", table.getName())); } } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + // if we didn't find the field definition, put an empty field in the map, so no formatting will be done // + ////////////////////////////////////////////////////////////////////////////////////////////////////////// + if(!fieldMap.containsKey(fieldName)) + { + fieldMap.put(fieldName, new QFieldMetaData()); + } } setDisplayValuesInRecord(fieldMap, record);