JOHNZON-372 Entire json value serialized in exception
diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DeserializationExceptionMessagesTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DeserializationExceptionMessagesTest.java
index 5e1bef9..a61db08 100644
--- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DeserializationExceptionMessagesTest.java
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/DeserializationExceptionMessagesTest.java
@@ -229,70 +229,70 @@
public void booleanFromObject() throws Exception {
assertMessage("{ \"bool\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Widget property 'bool' of type Boolean cannot be mapped to json object value: {\"red\":255,\"green\":1.." +
- ".\nUnable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
+ ".\nUnable to parse json object value to boolean: {\"red\":255,\"green\":1...");
}
@Test
public void booleanFromString() throws Exception {
assertMessage("{ \"bool\" : \"Supercalifragilisticexpialidocious\" }",
"Widget property 'bool' of type Boolean cannot be mapped to json string value: \"Supercalifragilisti.." +
- ".\nUnable to parse \"Supercalifragilisticexpialidocious\" to boolean");
+ ".\nUnable to parse json string value to boolean: \"Supercalifragilisti...");
}
@Test
public void booleanFromNumber() throws Exception {
assertMessage("{ \"bool\" : 122333444455555.666666777777788888888 }",
"Widget property 'bool' of type Boolean cannot be mapped to json numeric value: 122333444455555.6666." +
- "..\nUnable to parse 122333444455555.666666777777788888888 to boolean");
+ "..\nUnable to parse json numeric value to boolean: 122333444455555.6666...");
}
@Test
public void booleanFromArrayOfObject() throws Exception {
assertMessage("{ \"bool\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Widget property 'bool' of type Boolean cannot be mapped to json array value: [{\"red\":255,\"green\":..." +
- "\nUnable to parse [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] to boolean");
+ "\nUnable to parse json array value to boolean: [{\"red\":255,\"green\":...");
}
@Test
public void booleanFromArrayOfString() throws Exception {
assertMessage("{ \"bool\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Widget property 'bool' of type Boolean cannot be mapped to json array value: [\"Klaatu\",\"barada\",\"..." +
- "\nUnable to parse [\"Klaatu\",\"barada\",\"nikto\"] to boolean");
+ "\nUnable to parse json array value to boolean: [\"Klaatu\",\"barada\",\"...");
}
@Test
public void booleanFromArrayOfNumber() throws Exception {
assertMessage("{ \"bool\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Widget property 'bool' of type Boolean cannot be mapped to json array value: [2,3,5,7,11,13,17,19..." +
- "\nUnable to parse [2,3,5,7,11,13,17,19,23,29] to boolean");
+ "\nUnable to parse json array value to boolean: [2,3,5,7,11,13,17,19...");
}
@Test
public void booleanFromArrayOfBoolean() throws Exception {
assertMessage("{ \"bool\" : [true,false,true,true,false] }",
"Widget property 'bool' of type Boolean cannot be mapped to json array value: [true,false,true,tru..." +
- "\nUnable to parse [true,false,true,true,false] to boolean");
+ "\nUnable to parse json array value to boolean: [true,false,true,tru...");
}
@Test
public void boolPrimitiveFromObject() throws Exception {
assertMessage("{ \"boolPrimitive\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json object value: {\"red\":255,\"g" +
- "reen\":1...\nUnable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
+ "reen\":1...\nUnable to parse json object value to boolean: {\"red\":255,\"green\":1...");
}
@Test
public void boolPrimitiveFromString() throws Exception {
assertMessage("{ \"boolPrimitive\" : \"Supercalifragilisticexpialidocious\" }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json string value: \"Supercalifra" +
- "gilisti...\nUnable to parse \"Supercalifragilisticexpialidocious\" to boolean");
+ "gilisti...\nUnable to parse json string value to boolean: \"Supercalifragilisti...");
}
@Test
public void boolPrimitiveFromNumber() throws Exception {
assertMessage("{ \"boolPrimitive\" : 122333444455555.666666777777788888888 }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json numeric value: 122333444455" +
- "555.6666...\nUnable to parse 122333444455555.666666777777788888888 to boolean");
+ "555.6666...\nUnable to parse json numeric value to boolean: 122333444455555.6666...");
}
@Test
@@ -307,29 +307,28 @@
public void boolPrimitiveFromArrayOfObject() throws Exception {
assertMessage("{ \"boolPrimitive\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json array value: [{\"red\":255,\"g" +
- "reen\":...\nUnable to parse [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] to bool" +
- "ean");
+ "reen\":...\nUnable to parse json array value to boolean: [{\"red\":255,\"green\":...");
}
@Test
public void boolPrimitiveFromArrayOfString() throws Exception {
assertMessage("{ \"boolPrimitive\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json array value: [\"Klaatu\",\"bar" +
- "ada\",\"...\nUnable to parse [\"Klaatu\",\"barada\",\"nikto\"] to boolean");
+ "ada\",\"...\nUnable to parse json array value to boolean: [\"Klaatu\",\"barada\",\"...");
}
@Test
public void boolPrimitiveFromArrayOfNumber() throws Exception {
assertMessage("{ \"boolPrimitive\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json array value: [2,3,5,7,11,13" +
- ",17,19...\nUnable to parse [2,3,5,7,11,13,17,19,23,29] to boolean");
+ ",17,19...\nUnable to parse json array value to boolean: [2,3,5,7,11,13,17,19...");
}
@Test
public void boolPrimitiveFromArrayOfBoolean() throws Exception {
assertMessage("{ \"boolPrimitive\" : [true,false,true,true,false] }",
"Widget property 'boolPrimitive' of type boolean cannot be mapped to json array value: [true,false,tr" +
- "ue,tru...\nUnable to parse [true,false,true,true,false] to boolean");
+ "ue,tru...\nUnable to parse json array value to boolean: [true,false,true,tru...");
}
@Test
@@ -637,21 +636,21 @@
public void arrayOfBooleanFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Widget property 'arrayOfBoolean' of type Boolean[] cannot be mapped to json array value: [{\"red\":255" +
- ",\"green\":...\nUnable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
+ ",\"green\":...\nUnable to parse json object value to boolean: {\"red\":255,\"green\":1...");
}
@Test
public void arrayOfBooleanFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Widget property 'arrayOfBoolean' of type Boolean[] cannot be mapped to json array value: [\"Klaatu\",\"" +
- "barada\",\"...\nUnable to parse \"Klaatu\" to boolean");
+ "barada\",\"...\nUnable to parse json string value to boolean: \"Klaatu\"");
}
@Test
public void arrayOfBooleanFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Widget property 'arrayOfBoolean' of type Boolean[] cannot be mapped to json array value: [2,3,5,7,11" +
- ",13,17,19...\nUnable to parse 2 to boolean");
+ ",13,17,19...\nUnable to parse json numeric value to boolean: 2");
}
@Test
@@ -687,21 +686,21 @@
public void arrayOfBooleanPrimitiveFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Widget property 'arrayOfBooleanPrimitive' of type boolean[] cannot be mapped to json array value: [{" +
- "\"red\":255,\"green\":...\nUnable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
+ "\"red\":255,\"green\":...\nUnable to parse json object value to boolean: {\"red\":255,\"green\":1...");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Widget property 'arrayOfBooleanPrimitive' of type boolean[] cannot be mapped to json array value: [\"" +
- "Klaatu\",\"barada\",\"...\nUnable to parse \"Klaatu\" to boolean");
+ "Klaatu\",\"barada\",\"...\nUnable to parse json string value to boolean: \"Klaatu\"");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Widget property 'arrayOfBooleanPrimitive' of type boolean[] cannot be mapped to json array value: [2" +
- ",3,5,7,11,13,17,19...\nUnable to parse 2 to boolean");
+ ",3,5,7,11,13,17,19...\nUnable to parse json numeric value to boolean: 2");
}
@Ignore("JOHNZON-371")
@@ -908,21 +907,21 @@
public void listOfBooleanFromArrayOfObject() throws Exception {
assertMessage("{ \"listOfBoolean\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Widget property 'listOfBoolean' of type List<Boolean> cannot be mapped to json array value: [{\"red\":" +
- "255,\"green\":...\nUnable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
+ "255,\"green\":...\nUnable to parse json object value to boolean: {\"red\":255,\"green\":1...");
}
@Test
public void listOfBooleanFromArrayOfString() throws Exception {
assertMessage("{ \"listOfBoolean\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Widget property 'listOfBoolean' of type List<Boolean> cannot be mapped to json array value: [\"Klaatu" +
- "\",\"barada\",\"...\nUnable to parse \"Klaatu\" to boolean");
+ "\",\"barada\",\"...\nUnable to parse json string value to boolean: \"Klaatu\"");
}
@Test
public void listOfBooleanFromArrayOfNumber() throws Exception {
assertMessage("{ \"listOfBoolean\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Widget property 'listOfBoolean' of type List<Boolean> cannot be mapped to json array value: [2,3,5,7" +
- ",11,13,17,19...\nUnable to parse 2 to boolean");
+ ",11,13,17,19...\nUnable to parse json numeric value to boolean: 2");
}
private void assertMessage(final String json, final String expected) throws Exception {
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
index 26ee13f..87b96b7 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
@@ -631,7 +631,9 @@
if (JsonValue.ValueType.FALSE == valueType) {
return false;
}
- throw new MapperException("Unable to parse " + jsonValue + " to boolean");
+ final String snippet = config.getSnippet().of(jsonValue);
+ final String description = ExceptionMessages.description(valueType);
+ throw new MapperException("Unable to parse " + description + " to boolean: " + snippet);
}
if (config.isTreatByteArrayAsBase64() && jsonValue.getValueType() == JsonValue.ValueType.STRING && (type == byte[].class /*|| type == Byte[].class*/)) {