blob: 4daaf42f9e6672c67395e9b68cc6e0e6f7aa64b9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.johnzon.jsonb;
import org.junit.Test;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.JsonbConfig;
import javax.json.bind.JsonbException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
public class DeserializationExceptionMessagesTest {
@Test
public void objectFromString() throws Exception {
assertMessage("{ \"object\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Col" +
"or to convert the JSON String 'Supercalifragilisticexpialidocious' . Please register a custom conver" +
"ter for it.");
}
@Test
public void objectFromNumber() throws Exception {
assertMessage("{ \"object\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class org.apache.johnzon.jsonb.Deserializat" +
"ionExceptionMessagesTest$Color");
}
@Test
public void objectFromBoolean() throws Exception {
assertMessage("{ \"object\" : true }",
"Unable to parse true to class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color");
}
@Test
public void objectFromArrayOfObject() throws Exception {
assertMessage("{ \"object\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color not supported");
}
@Test
public void objectFromArrayOfString() throws Exception {
assertMessage("{ \"object\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color not supported");
}
@Test
public void objectFromArrayOfNumber() throws Exception {
assertMessage("{ \"object\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color not supported");
}
@Test
public void objectFromArrayOfBoolean() throws Exception {
assertMessage("{ \"object\" : [true,false,true,true,false] }",
"type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color not supported");
}
@Test
public void stringFromArrayOfObject() throws Exception {
assertMessage("{ \"string\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unsupported [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] for type class java.l" +
"ang.String");
}
@Test
public void stringFromArrayOfString() throws Exception {
assertMessage("{ \"string\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unsupported [\"Klaatu\",\"barada\",\"nikto\"] for type class java.lang.String");
}
@Test
public void stringFromArrayOfNumber() throws Exception {
assertMessage("{ \"string\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unsupported [2,3,5,7,11,13,17,19,23,29] for type class java.lang.String");
}
@Test
public void stringFromArrayOfBoolean() throws Exception {
assertMessage("{ \"string\" : [true,false,true,true,false] }",
"Unsupported [true,false,true,true,false] for type class java.lang.String");
}
@Test
public void numberFromObject() throws Exception {
assertMessage("{ \"number\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Can't map JSON Object to class java.lang.Integer: {\"red\":255,\"green\":1...");
}
@Test
public void numberFromString() throws Exception {
assertMessage("{ \"number\" : \"Supercalifragilisticexpialidocious\" }",
"For input string: \"Supercalifragilisticexpialidocious\"");
}
@Test
public void numberFromBoolean() throws Exception {
assertMessage("{ \"number\" : true }",
"Unable to parse true to class java.lang.Integer");
}
@Test
public void numberFromArrayOfObject() throws Exception {
assertMessage("{ \"number\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"type class java.lang.Integer not supported");
}
@Test
public void numberFromArrayOfString() throws Exception {
assertMessage("{ \"number\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"type class java.lang.Integer not supported");
}
@Test
public void numberFromArrayOfNumber() throws Exception {
assertMessage("{ \"number\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"type class java.lang.Integer not supported");
}
@Test
public void numberFromArrayOfBoolean() throws Exception {
assertMessage("{ \"number\" : [true,false,true,true,false] }",
"type class java.lang.Integer not supported");
}
@Test
public void intPrimitiveFromObject() throws Exception {
assertMessage("{ \"intPrimitive\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Can't map JSON Object to int: {\"red\":255,\"green\":1...");
}
@Test
public void intPrimitiveFromString() throws Exception {
assertMessage("{ \"intPrimitive\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type int to convert the JSON String 'Supercalifragilisticexpialidocious' . P" +
"lease register a custom converter for it.");
}
@Test
public void intPrimitiveFromNumber() throws Exception {
assertMessage("{ \"intPrimitive\" : 122333444455555.666666777777788888888 }",
"Not an int/long, use other value readers");
}
@Test
public void intPrimitiveFromBoolean() throws Exception {
assertMessage("{ \"intPrimitive\" : true }",
"Unable to parse true to int");
}
@Test
public void intPrimitiveFromNull() throws Exception {
assertMessage("{ \"intPrimitive\" : null }",
"Error calling public void org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Widget.setIn" +
"tPrimitive(int)");
}
@Test
public void intPrimitiveFromArrayOfObject() throws Exception {
assertMessage("{ \"intPrimitive\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"type int not supported");
}
@Test
public void intPrimitiveFromArrayOfString() throws Exception {
assertMessage("{ \"intPrimitive\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"type int not supported");
}
@Test
public void intPrimitiveFromArrayOfNumber() throws Exception {
assertMessage("{ \"intPrimitive\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"type int not supported");
}
@Test
public void intPrimitiveFromArrayOfBoolean() throws Exception {
assertMessage("{ \"intPrimitive\" : [true,false,true,true,false] }",
"type int not supported");
}
@Test
public void booleanFromObject() throws Exception {
assertMessage("{ \"bool\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Unable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
}
@Test
public void booleanFromString() throws Exception {
assertMessage("{ \"bool\" : \"Supercalifragilisticexpialidocious\" }",
"Unable to parse \"Supercalifragilisticexpialidocious\" to boolean");
}
@Test
public void booleanFromNumber() throws Exception {
assertMessage("{ \"bool\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to boolean");
}
@Test
public void booleanFromArrayOfObject() throws Exception {
assertMessage("{ \"bool\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unable to parse [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] to boolean");
}
@Test
public void booleanFromArrayOfString() throws Exception {
assertMessage("{ \"bool\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unable to parse [\"Klaatu\",\"barada\",\"nikto\"] to boolean");
}
@Test
public void booleanFromArrayOfNumber() throws Exception {
assertMessage("{ \"bool\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse [2,3,5,7,11,13,17,19,23,29] to boolean");
}
@Test
public void booleanFromArrayOfBoolean() throws Exception {
assertMessage("{ \"bool\" : [true,false,true,true,false] }",
"Unable to parse [true,false,true,true,false] to boolean");
}
@Test
public void boolPrimitiveFromObject() throws Exception {
assertMessage("{ \"boolPrimitive\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Unable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
}
@Test
public void boolPrimitiveFromString() throws Exception {
assertMessage("{ \"boolPrimitive\" : \"Supercalifragilisticexpialidocious\" }",
"Unable to parse \"Supercalifragilisticexpialidocious\" to boolean");
}
@Test
public void boolPrimitiveFromNumber() throws Exception {
assertMessage("{ \"boolPrimitive\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to boolean");
}
@Test
public void boolPrimitiveFromNull() throws Exception {
assertMessage("{ \"boolPrimitive\" : null }",
"Error calling public void org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Widget.setBo" +
"olPrimitive(boolean)");
}
@Test
public void boolPrimitiveFromArrayOfObject() throws Exception {
assertMessage("{ \"boolPrimitive\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unable to parse [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] to boolean");
}
@Test
public void boolPrimitiveFromArrayOfString() throws Exception {
assertMessage("{ \"boolPrimitive\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unable to parse [\"Klaatu\",\"barada\",\"nikto\"] to boolean");
}
@Test
public void boolPrimitiveFromArrayOfNumber() throws Exception {
assertMessage("{ \"boolPrimitive\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse [2,3,5,7,11,13,17,19,23,29] to boolean");
}
@Test
public void boolPrimitiveFromArrayOfBoolean() throws Exception {
assertMessage("{ \"boolPrimitive\" : [true,false,true,true,false] }",
"Unable to parse [true,false,true,true,false] to boolean");
}
@Test
public void enumFromObject() throws Exception {
assertMessage("{ \"unit\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Can't map JSON Object to class java.lang.String: {\"red\":255,\"green\":1...");
}
@Test
public void enumFromString() throws Exception {
assertMessage("{ \"unit\" : \"Supercalifragilisticexpialidocious\" }",
"Illegal class java.util.concurrent.TimeUnit enum value: Supercalifragilisticexpialidocious, known va" +
"lues: [MILLISECONDS, MICROSECONDS, HOURS, SECONDS, NANOSECONDS, DAYS, MINUTES]");
}
@Test
public void enumFromNumber() throws Exception {
assertMessage("{ \"unit\" : 122333444455555.666666777777788888888 }",
"Illegal class java.util.concurrent.TimeUnit enum value: 122333444455555.666666777777788888888, known" +
" values: [MILLISECONDS, MICROSECONDS, HOURS, SECONDS, NANOSECONDS, DAYS, MINUTES]");
}
@Test
public void enumFromBoolean() throws Exception {
assertMessage("{ \"unit\" : true }",
"Illegal class java.util.concurrent.TimeUnit enum value: true, known values: [MILLISECONDS, MICROSECO" +
"NDS, HOURS, SECONDS, NANOSECONDS, DAYS, MINUTES]");
}
@Test
public void enumFromArrayOfObject() throws Exception {
assertMessage("{ \"unit\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unsupported [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] for type class java.l" +
"ang.String");
}
@Test
public void enumFromArrayOfString() throws Exception {
assertMessage("{ \"unit\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unsupported [\"Klaatu\",\"barada\",\"nikto\"] for type class java.lang.String");
}
@Test
public void enumFromArrayOfNumber() throws Exception {
assertMessage("{ \"unit\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unsupported [2,3,5,7,11,13,17,19,23,29] for type class java.lang.String");
}
@Test
public void enumFromArrayOfBoolean() throws Exception {
assertMessage("{ \"unit\" : [true,false,true,true,false] }",
"Unsupported [true,false,true,true,false] for type class java.lang.String");
}
@Test
public void dateFromObject() throws Exception {
assertMessage("{ \"date\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"Can't map JSON Object to class java.lang.String: {\"red\":255,\"green\":1...");
}
@Test
public void dateFromString() throws Exception {
assertMessage("{ \"date\" : \"Supercalifragilisticexpialidocious\" }",
"Text 'Supercalifragilisticexpialidocious' could not be parsed at index 0");
}
@Test
public void dateFromNumber() throws Exception {
assertMessage("{ \"date\" : 122333444455555.666666777777788888888 }",
"Text '122333444455555.666666777777788888888' could not be parsed at index 0");
}
@Test
public void dateFromBoolean() throws Exception {
assertMessage("{ \"date\" : true }",
"Text 'true' could not be parsed at index 0");
}
@Test
public void dateFromArrayOfObject() throws Exception {
assertMessage("{ \"date\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unsupported [{\"red\":255,\"green\":165,\"blue\":0},{\"red\":0,\"green\":45,\"blue\":127}] for type class java.l" +
"ang.String");
}
@Test
public void dateFromArrayOfString() throws Exception {
assertMessage("{ \"date\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unsupported [\"Klaatu\",\"barada\",\"nikto\"] for type class java.lang.String");
}
@Test
public void dateFromArrayOfNumber() throws Exception {
assertMessage("{ \"date\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unsupported [2,3,5,7,11,13,17,19,23,29] for type class java.lang.String");
}
@Test
public void dateFromArrayOfBoolean() throws Exception {
assertMessage("{ \"date\" : [true,false,true,true,false] }",
"Unsupported [true,false,true,true,false] for type class java.lang.String");
}
@Test
public void arrayOfObjectFromObject() throws Exception {
assertMessage("{ \"arrayOfObject\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"class [Lorg.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color; not instantiable");
}
@Test
public void arrayOfObjectFromString() throws Exception {
assertMessage("{ \"arrayOfObject\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class [Lorg.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$C" +
"olor; to convert the JSON String 'Supercalifragilisticexpialidocious' . Please register a custom con" +
"verter for it.");
}
@Test
public void arrayOfObjectFromNumber() throws Exception {
assertMessage("{ \"arrayOfObject\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class [Lorg.apache.johnzon.jsonb.Deserializ" +
"ationExceptionMessagesTest$Color;");
}
@Test
public void arrayOfObjectFromBoolean() throws Exception {
assertMessage("{ \"arrayOfObject\" : true }",
"Unable to parse true to class [Lorg.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color;");
}
@Test
public void arrayOfObjectFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfObject\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Missing a Converter for type class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Col" +
"or to convert the JSON String 'Klaatu' . Please register a custom converter for it.");
}
@Test
public void arrayOfObjectFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfObject\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse 2 to class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color");
}
@Test
public void arrayOfObjectFromArrayOfBoolean() throws Exception {
assertMessage("{ \"arrayOfObject\" : [true,false,true,true,false] }",
"Unable to parse true to class org.apache.johnzon.jsonb.DeserializationExceptionMessagesTest$Color");
}
@Test
public void arrayOfStringFromObject() throws Exception {
assertMessage("{ \"arrayOfString\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"class [Ljava.lang.String; not instantiable");
}
@Test
public void arrayOfStringFromString() throws Exception {
assertMessage("{ \"arrayOfString\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class [Ljava.lang.String; to convert the JSON String 'Supercalifragilis" +
"ticexpialidocious' . Please register a custom converter for it.");
}
@Test
public void arrayOfStringFromNumber() throws Exception {
assertMessage("{ \"arrayOfString\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class [Ljava.lang.String;");
}
@Test
public void arrayOfStringFromBoolean() throws Exception {
assertMessage("{ \"arrayOfString\" : true }",
"Unable to parse true to class [Ljava.lang.String;");
}
@Test
public void arrayOfStringFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfString\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Can't map JSON Object to class java.lang.String: {\"red\":255,\"green\":1...");
}
@Test
public void arrayOfStringFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfString\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse 2 to class java.lang.String");
}
@Test
public void arrayOfStringFromArrayOfBoolean() throws Exception {
assertMessage("{ \"arrayOfString\" : [true,false,true,true,false] }",
"Unable to parse true to class java.lang.String");
}
@Test
public void arrayOfNumberFromObject() throws Exception {
assertMessage("{ \"arrayOfNumber\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"class [Ljava.lang.Number; not instantiable");
}
@Test
public void arrayOfNumberFromString() throws Exception {
assertMessage("{ \"arrayOfNumber\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class [Ljava.lang.Number; to convert the JSON String 'Supercalifragilis" +
"ticexpialidocious' . Please register a custom converter for it.");
}
@Test
public void arrayOfNumberFromNumber() throws Exception {
assertMessage("{ \"arrayOfNumber\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class [Ljava.lang.Number;");
}
@Test
public void arrayOfNumberFromBoolean() throws Exception {
assertMessage("{ \"arrayOfNumber\" : true }",
"Unable to parse true to class [Ljava.lang.Number;");
}
@Test
public void arrayOfNumberFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfNumber\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"java.lang.InstantiationException");
}
@Test
public void arrayOfNumberFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfNumber\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Missing a Converter for type class java.lang.Number to convert the JSON String 'Klaatu' . Please reg" +
"ister a custom converter for it.");
}
@Test
public void arrayOfNumberFromArrayOfBoolean() throws Exception {
assertMessage("{ \"arrayOfNumber\" : [true,false,true,true,false] }",
"Unable to parse true to class java.lang.Number");
}
@Test
public void arrayOfBooleanFromObject() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"class [Ljava.lang.Boolean; not instantiable");
}
@Test
public void arrayOfBooleanFromString() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class [Ljava.lang.Boolean; to convert the JSON String 'Supercalifragili" +
"sticexpialidocious' . Please register a custom converter for it.");
}
@Test
public void arrayOfBooleanFromNumber() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class [Ljava.lang.Boolean;");
}
@Test
public void arrayOfBooleanFromBoolean() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : true }",
"Unable to parse true to class [Ljava.lang.Boolean;");
}
@Test
public void arrayOfBooleanFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
}
@Test
public void arrayOfBooleanFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unable to parse \"Klaatu\" to boolean");
}
@Test
public void arrayOfBooleanFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfBoolean\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse 2 to boolean");
}
@Test
public void arrayOfBooleanPrimitiveFromObject() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : {\"red\": 255, \"green\": 165, \"blue\":0} }",
"class [Z not instantiable");
}
@Test
public void arrayOfBooleanPrimitiveFromString() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : \"Supercalifragilisticexpialidocious\" }",
"Missing a Converter for type class [Z to convert the JSON String 'Supercalifragilisticexpialidocious" +
"' . Please register a custom converter for it.");
}
@Test
public void arrayOfBooleanPrimitiveFromNumber() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : 122333444455555.666666777777788888888 }",
"Unable to parse 122333444455555.666666777777788888888 to class [Z");
}
@Test
public void arrayOfBooleanPrimitiveFromBoolean() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : true }",
"Unable to parse true to class [Z");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfObject() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [{\"red\": 255, \"green\": 165, \"blue\":0},{\"red\": 0, \"green\": 45, \"blue\":127}] }",
"Unable to parse {\"red\":255,\"green\":165,\"blue\":0} to boolean");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfString() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [\"Klaatu\", \"barada\", \"nikto\"] }",
"Unable to parse \"Klaatu\" to boolean");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfNumber() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] }",
"Unable to parse 2 to boolean");
}
@Test
public void arrayOfBooleanPrimitiveFromArrayOfNull() throws Exception {
assertMessage("{ \"arrayOfBooleanPrimitive\" : [null,null,null,null,null,null] }",
"Cannot invoke \"java.lang.Boolean.booleanValue()\" because the return value of \"org.apache.johnzon.map" +
"per.MappingParserImpl.toObject(Object, javax.json.JsonValue, java.lang.reflect.Type, org.apache.john" +
"zon.mapper.Adapter, org.apache.johnzon.mapper.internal.JsonPointerTracker, java.lang.reflect.Type)\" " +
"is null");
}
private void assertMessage(final String json, final String expected) throws Exception {
final String message = getExceptionMessage(json);
assertEquals(expected, message);
}
public static String getExceptionMessage(final String json) {
final JsonbConfig config = new JsonbConfig();
config.setProperty("johnzon.snippetMaxLength", 20);
try (final Jsonb jsonb = JsonbBuilder.create(config)) {
final Widget widget = jsonb.fromJson(json, Widget.class);
throw new AssertionError("No exception occured");
} catch (JsonbException e) {
return e.getMessage();
} catch (AssertionError assertionError) {
throw assertionError;
} catch (Exception e) {
throw new AssertionError("Unexpected failure", e);
}
}
public static class Widget {
private Color[] arrayOfObject;
private String[] arrayOfString;
private Number[] arrayOfNumber;
private int[] arrayOfint;
private Boolean[] arrayOfBoolean;
private boolean[] arrayOfBooleanPrimitive;
private Color object;
private String string;
private Integer number;
private int intPrimitive;
private Boolean bool;
private boolean boolPrimitive;
private Date date;
private TimeUnit unit;
public Color[] getArrayOfObject() {
return arrayOfObject;
}
public void setArrayOfObject(final Color[] arrayOfObject) {
this.arrayOfObject = arrayOfObject;
}
public String[] getArrayOfString() {
return arrayOfString;
}
public void setArrayOfString(final String[] arrayOfString) {
this.arrayOfString = arrayOfString;
}
public Number[] getArrayOfNumber() {
return arrayOfNumber;
}
public void setArrayOfNumber(final Number[] arrayOfNumber) {
this.arrayOfNumber = arrayOfNumber;
}
public int[] getArrayOfint() {
return arrayOfint;
}
public void setArrayOfint(final int[] arrayOfint) {
this.arrayOfint = arrayOfint;
}
public Boolean[] getArrayOfBoolean() {
return arrayOfBoolean;
}
public void setArrayOfBoolean(final Boolean[] arrayOfBoolean) {
this.arrayOfBoolean = arrayOfBoolean;
}
public boolean[] getArrayOfBooleanPrimitive() {
return arrayOfBooleanPrimitive;
}
public void setArrayOfBooleanPrimitive(final boolean[] arrayOfBooleanPrimitive) {
this.arrayOfBooleanPrimitive = arrayOfBooleanPrimitive;
}
public Color getObject() {
return object;
}
public void setObject(final Color object) {
this.object = object;
}
public String getString() {
return string;
}
public void setString(final String string) {
this.string = string;
}
public Integer getNumber() {
return number;
}
public void setNumber(final Integer number) {
this.number = number;
}
public int getIntPrimitive() {
return intPrimitive;
}
public void setIntPrimitive(final int intPrimitive) {
this.intPrimitive = intPrimitive;
}
public Boolean getBool() {
return bool;
}
public void setBool(final Boolean bool) {
this.bool = bool;
}
public boolean isBoolPrimitive() {
return boolPrimitive;
}
public void setBoolPrimitive(final boolean boolPrimitive) {
this.boolPrimitive = boolPrimitive;
}
public Date getDate() {
return date;
}
public void setDate(final Date date) {
this.date = date;
}
public TimeUnit getUnit() {
return unit;
}
public void setUnit(final TimeUnit unit) {
this.unit = unit;
}
}
public static class Color {
int red;
int green;
int blue;
public Color() {
}
public int getRed() {
return red;
}
public void setRed(final int red) {
this.red = red;
}
public int getGreen() {
return green;
}
public void setGreen(final int green) {
this.green = green;
}
public int getBlue() {
return blue;
}
public void setBlue(final int blue) {
this.blue = blue;
}
}
}