@Override public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { JsonAdapter<?> adapter = moshi.adapter(type, jsonAnnotations(parameterAnnotations)); if (lenient) { adapter = adapter.lenient(); } if (failOnUnknown) { adapter = adapter.failOnUnknown(); } if (serializeNulls) { adapter = adapter.serializeNulls(); } return new MoshiRequestBodyConverter<>(adapter); }
@Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { JsonAdapter<?> adapter = moshi.adapter(type, jsonAnnotations(annotations)); if (lenient) { adapter = adapter.lenient(); } if (failOnUnknown) { adapter = adapter.failOnUnknown(); } if (serializeNulls) { adapter = adapter.serializeNulls(); } return new MoshiResponseBodyConverter<>(adapter); }
public static InfluxDBException buildExceptionForErrorState(final String errorBody) { try { Moshi moshi = new Moshi.Builder().build(); JsonAdapter<ErrorMessage> adapter = moshi.adapter(ErrorMessage.class).lenient(); ErrorMessage errorMessage = adapter.fromJson(errorBody); return InfluxDBException.buildExceptionFromErrorMessage(errorMessage.error); } catch (Exception e) { return new InfluxDBException(errorBody); } }
@Override protected Node readValue(String source, String label, boolean lenient) { try { JsonAdapter<Object> adapter = moshi.adapter(Object.class); if (lenient) { adapter = adapter.lenient(); } return newNode(adapter.fromJson(source)); } catch (IOException e) { throw new IllegalArgumentException("Can not parse " + label + " value.", e); } }
@Override protected Node readValue(String source, String label, boolean lenient) { try { JsonAdapter<Object> adapter = moshi.adapter(Object.class); if (lenient) { adapter = adapter.lenient(); } return newNode(adapter.fromJson(source)); } catch (IOException e) { throw new IllegalArgumentException("Can not parse " + label + " value.", e); } }
@SuppressWarnings("unchecked") private JsonAdapter<Phone> phoneAdapter() { return (JsonAdapter<Phone>) PhoneJsonAdapter.FACTORY.create( Phone.class, Collections.<Annotation>emptySet(), moshi).lenient(); } }
@SuppressWarnings({"unchecked", "ConstantConditions"}) private <T extends Calendar> JsonAdapter<T> calendarAdapter() { return (JsonAdapter<T>) SafeCalendarJsonAdapter.FACTORY.create( SafeCalendar.class, Collections.<Annotation>emptySet(), moshi).lenient(); } }
@Test public void enumAdapter() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("\"ROCK\"")).isEqualTo(Roshambo.ROCK); assertThat(adapter.toJson(Roshambo.PAPER)).isEqualTo("\"PAPER\""); }
@Test public void annotatedEnum() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("\"scr\"")).isEqualTo(Roshambo.SCISSORS); assertThat(adapter.toJson(Roshambo.SCISSORS)).isEqualTo("\"scr\""); }
@Test public void asRegularEnumAdapter() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("\"ROCK\"")).isEqualTo(Roshambo.ROCK); assertThat(adapter.toJson(Roshambo.PAPER)).isEqualTo("\"PAPER\""); // Check annotated value assertThat(adapter.fromJson("\"scr\"")).isEqualTo(Roshambo.SCISSORS); assertThat(adapter.toJson(Roshambo.SCISSORS)).isEqualTo("\"scr\""); }
@Override public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { JsonAdapter<?> adapter = moshi.adapter(type, jsonAnnotations(parameterAnnotations)); if (lenient) { adapter = adapter.lenient(); } if (failOnUnknown) { adapter = adapter.failOnUnknown(); } if (serializeNulls) { adapter = adapter.serializeNulls(); } return new MoshiRequestBodyConverter<>(adapter); }
private <C extends Collection<String>> C fromJson(Type collectionType, String json) throws IOException { JsonAdapter<C> jsonAdapter = validCsAdapter(collectionType); //noinspection ConstantConditions At this point the adapter should not be null. return jsonAdapter.lenient().fromJson(json); }
@Test public void fallbackEnum() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("\"SPOCK\"")).isEqualTo(Roshambo.UNKNOWN); }
@Test public void ignoresUnannotatedEnums() throws Exception { JsonAdapter<Regular> adapter = moshi.adapter(Regular.class).lenient(); assertThat(adapter.fromJson("\"ONE\"")).isEqualTo(Regular.ONE); try { adapter.fromJson("\"TWO\""); fail(); } catch (JsonDataException expected) { assertThat(expected).hasMessage( "Expected one of [ONE] but was TWO at path $"); } }
public static InfluxDBException buildExceptionForErrorState(final String errorBody) { try { Moshi moshi = new Moshi.Builder().build(); JsonAdapter<ErrorMessage> adapter = moshi.adapter(ErrorMessage.class).lenient(); ErrorMessage errorMessage = adapter.fromJson(errorBody); return InfluxDBException.buildExceptionFromErrorMessage(errorMessage.error); } catch (Exception e) { return new InfluxDBException(errorBody); } }
@Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { JsonAdapter<?> adapter = moshi.adapter(type, jsonAnnotations(annotations)); if (lenient) { adapter = adapter.lenient(); } if (failOnUnknown) { adapter = adapter.failOnUnknown(); } if (serializeNulls) { adapter = adapter.serializeNulls(); } return new MoshiResponseBodyConverter<>(adapter); }
@Test public void nullEnum() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("null")).isNull(); assertThat(adapter.toJson(null)).isEqualTo("null"); }
@Test public void nullEnum() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("null")).isNull(); assertThat(adapter.toJson(null)).isEqualTo("null"); }
@Test public void invalidEnum() throws Exception { JsonAdapter<Roshambo> adapter = moshi.adapter(Roshambo.class).lenient(); assertThat(adapter.fromJson("\"SPOCK\"")).isNull(); }
private <C extends Collection<String>> String toJson(Type collectionType, C collection) throws IOException { JsonAdapter<C> jsonAdapter = validCsAdapter(collectionType); Buffer buffer = new Buffer(); JsonWriter jsonWriter = JsonWriter.of(buffer); jsonWriter.setSerializeNulls(true); //noinspection ConstantConditions At this point the adapter should not be null. jsonAdapter.lenient().toJson(jsonWriter, collection); return buffer.readUtf8(); }