return read( in, new JsonDeserializationContext.Builder().build() );
}
@Override
public T read( String in, JsonDeserializationContext ctx ) throws JsonDeserializationException {
JsonReader reader = ctx.newJsonReader( in );
try {
if ( ctx.isUnwrapRootValue() ) {
if ( JsonToken.BEGIN_OBJECT != reader.peek() ) {
throw ctx.traceError( "Unwrap root value is enabled but the input is not a JSON Object", reader );
}
reader.beginObject();
if ( JsonToken.END_OBJECT == reader.peek() ) {
throw ctx.traceError( "Unwrap root value is enabled but the JSON Object is empty", reader );
}
String name = reader.nextName();
if ( !name.equals( rootName ) ) {
throw ctx.traceError( "Unwrap root value is enabled but the name '" + name + "' don't match the expected rootName " +
"'" + rootName + "'", reader );
}
T result = getDeserializer().deserialize( reader, ctx );
reader.endObject();
return result;
} else {
return getDeserializer().deserialize( reader, ctx );