dblevins commented on code in PR #91: URL: https://github.com/apache/johnzon/pull/91#discussion_r866063602
########## johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java: ########## @@ -399,36 +403,43 @@ private Object buildObject(final Type inType, final JsonObject object, final boo final JsonValue jsonValue = jsonEntry.getValue(); final JsonValue.ValueType valueType = jsonValue != null ? jsonValue.getValueType() : null; - if (JsonValue.class == value.paramType) { - value.writer.write(t, jsonValue); - continue; - } - if (jsonValue == null) { - continue; - } + try { + if (JsonValue.class == value.paramType) { + value.writer.write(t, jsonValue); + continue; + } + if (jsonValue == null) { + continue; + } - final AccessMode.Writer setterMethod = value.writer; - if (NULL == valueType) { // forced - setterMethod.write(t, null); - } else { - Object existingInstance = null; - if (config.isReadAttributeBeforeWrite()) { - final Mappings.Getter getter = classMapping.getters.get(jsonEntry.getKey()); - if (getter != null) { - try { - existingInstance = getter.reader.read(t); - } catch (final RuntimeException re) { - // backward compatibility + final AccessMode.Writer setterMethod = value.writer; + if (NULL == valueType) { // forced + setterMethod.write(t, null); + } else { + Object existingInstance = null; + if (config.isReadAttributeBeforeWrite()) { + final Mappings.Getter getter = classMapping.getters.get(jsonEntry.getKey()); + if (getter != null) { + try { + existingInstance = getter.reader.read(t); + } catch (final RuntimeException re) { + // backward compatibility + } } } + final Object convertedValue = toValue( + existingInstance, jsonValue, value.converter, value.itemConverter, + value.paramType, value.objectConverter, + isDedup() ? new JsonPointerTracker(jsonPointer, jsonEntry.getKey()) : null, inType); + if (convertedValue != null) { + setterMethod.write(t, convertedValue); + } } - final Object convertedValue = toValue( - existingInstance, jsonValue, value.converter, value.itemConverter, - value.paramType, value.objectConverter, - isDedup() ? new JsonPointerTracker(jsonPointer, jsonEntry.getKey()) : null, inType); - if (convertedValue != null) { - setterMethod.write(t, convertedValue); - } + } catch (SetterMappingException alreadyHandled) { + throw alreadyHandled; + } catch (Exception e) { Review Comment: Here's what I've hacked on in the two PRs, which I can bring into this one: - JsonbException for invalid json, and RuntimeExceptions in setter (can add constructor and converter) - MapperException for invalid json, and RuntimeExceptions in setter, constructor, converter Any other scenarios we'd want to cover? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@johnzon.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org