if (text.length() == 0 || (text = text.trim()).length() == 0) { return _deserializeFromEmptyString(); return _deserialize(text, ctxt); } catch (IllegalArgumentException | MalformedURLException e) { cause = e; return _deserializeFromArray(p, ctxt); return (T) ob; return _deserializeEmbedded(ob, ctxt);
@Override public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { // For most types, use super impl; but GregorianCalendar also allows // integer value (timestamp), which needs separate handling if (_kind == TYPE_G_CALENDAR) { if (p.hasToken(JsonToken.VALUE_NUMBER_INT)) { return _gregorianFromDate(ctxt, _parseDate(p, ctxt)); } } return super.deserialize(p, ctxt); }
kind = TYPE_CLASS; } else if (raw == Locale.class) { FromStringDeserializer<?> deser = FromStringDeserializer.findDeserializer(Locale.class); return new StdKeyDeserializer(TYPE_LOCALE, raw, deser); } else if (raw == Currency.class) { FromStringDeserializer<?> deser = FromStringDeserializer.findDeserializer(Currency.class); return new StdKeyDeserializer(TYPE_CURRENCY, raw, deser); } else if (raw == byte[].class) {
final T value = deserialize(jp, ctxt); if (jp.nextToken() != JsonToken.END_ARRAY) { throw ctxt.wrongTokenException(jp, JsonToken.END_ARRAY, if (text.length() == 0 || (text = text.trim()).length() == 0) { return _deserializeFromEmptyString(); T result = _deserialize(text, ctxt); if (result != null) { return result; return (T) ob; return _deserializeEmbedded(ob, ctxt);
T result = _deserialize(text, ctxt); if (result != null) { return result; return (T) ob; return _deserializeEmbedded(ob, ctxt);
@Override protected UUID _deserializeEmbedded(Object ob, DeserializationContext ctxt) throws IOException { if (ob instanceof byte[]) { return _fromBytes((byte[]) ob, ctxt); } super._deserializeEmbedded(ob, ctxt); return null; // never gets here }
case TYPE_LOCALE: try { return _deser._deserialize(key, ctxt); } catch (IllegalArgumentException e) { return _weirdKey(ctxt, key, e); return _deser._deserialize(key, ctxt); } catch (IllegalArgumentException e) { return _weirdKey(ctxt, key, e);
@Override protected Object _deserializeFromEmptyString() throws IOException { // As per [databind#398], URI requires special handling if (_kind == STD_URI) { return URI.create(""); } // As per [databind#1123], Locale too if (_kind == STD_LOCALE) { return Locale.ROOT; } if (_kind == STD_STRING_BUILDER) { return new StringBuilder(); } return super._deserializeFromEmptyString(); }
final T value = deserialize(jp, ctxt); if (jp.nextToken() != JsonToken.END_ARRAY) { throw ctxt.wrongTokenException(jp, JsonToken.END_ARRAY, if (text.length() == 0 || (text = text.trim()).length() == 0) { return _deserializeFromEmptyString(); T result = _deserialize(text, ctxt); if (result != null) { return result; return (T) ob; return _deserializeEmbedded(ob, ctxt);
T result = _deserialize(text, ctxt); if (result != null) { return result; return (T) ob; return _deserializeEmbedded(ob, ctxt);
@Override protected UUID _deserializeEmbedded(Object ob, DeserializationContext ctxt) throws IOException { if (ob instanceof byte[]) { return _fromBytes((byte[]) ob, ctxt); } super._deserializeEmbedded(ob, ctxt); return null; // never gets here }
case TYPE_LOCALE: try { return _deser._deserialize(key, ctxt); } catch (IOException e) { return ctxt.handleWeirdKey(_keyClass, key, "unable to parse key as locale"); return _deser._deserialize(key, ctxt); } catch (IOException e) { return ctxt.handleWeirdKey(_keyClass, key, "unable to parse key as currency");
@Override protected Object _deserializeFromEmptyString() throws IOException { // As per [#398], URI requires special handling if (_kind == STD_URI) { return URI.create(""); } return super._deserializeFromEmptyString(); } }
if (text.length() == 0 || (text = text.trim()).length() == 0) { return _deserializeFromEmptyString(); return _deserialize(text, ctxt); } catch (IllegalArgumentException | MalformedURLException e) { cause = e; return _deserializeFromArray(p, ctxt); return (T) ob; return _deserializeEmbedded(ob, ctxt);
@Override protected UUID _deserializeEmbedded(Object ob, DeserializationContext ctxt) throws IOException { if (ob instanceof byte[]) { return _fromBytes((byte[]) ob, ctxt); } super._deserializeEmbedded(ob, ctxt); return null; // never gets here }
case TYPE_LOCALE: try { return _deser._deserialize(key, ctxt); } catch (IOException e) { throw ctxt.weirdKeyException(_keyClass, key, "unable to parse key as locale"); return _deser._deserialize(key, ctxt); } catch (IOException e) { throw ctxt.weirdKeyException(_keyClass, key, "unable to parse key as currency");
@Override public HostAndPort deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { // Need to override this method, which otherwise would work just fine, // since we have legacy JSON Object format to support too: if (jp.getCurrentToken() == JsonToken.START_OBJECT) { // old style JsonNode root = jp.readValueAsTree(); String host = root.path("hostText").asText(); JsonNode n = root.get("port"); if (n == null) { return HostAndPort.fromString(host); } return HostAndPort.fromParts(host, n.asInt()); } return super.deserialize(jp, ctxt); }
public static JsonDeserializer<?> find(Class<?> rawType, String clsName) { if (_classNames.contains(clsName)) { JsonDeserializer<?> d = FromStringDeserializer.findDeserializer(rawType); if (d != null) { return d; } if (rawType == UUID.class) { return new UUIDDeserializer(); } if (rawType == StackTraceElement.class) { return new StackTraceElementDeserializer(); } if (rawType == AtomicBoolean.class) { // (note: AtomicInteger/Long work due to single-arg constructor. For now? return new AtomicBooleanDeserializer(); } if (rawType == ByteBuffer.class) { return new ByteBufferDeserializer(); } if (rawType == Void.class) { return NullifyingDeserializer.instance; } } return null; } }
@Override protected Object _deserializeFromEmptyString() throws IOException { // As per [#398], URI requires special handling if (_kind == STD_URI) { return URI.create(""); } return super._deserializeFromEmptyString(); } }
if (text.length() == 0 || (text = text.trim()).length() == 0) { return _deserializeFromEmptyString(); T result = _deserialize(text, ctxt); if (result != null) { return result; return _deserializeFromArray(p, ctxt); return (T) ob; return _deserializeEmbedded(ob, ctxt);