dblevins commented on code in PR #91:
URL: https://github.com/apache/johnzon/pull/91#discussion_r866057577
##########
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:
I think it's very fair to be concerned about people's exception handling in
a patch release, no matter how brittle. I'd probably lean toward the 1.3 as
well so we had the flexibility to make changes we feel are the best changes.
What kind of coverage do we think we'd want for a 1.3? Happy to hack up a
serious number of tests :) I just need a list of scenarios to work from.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]