JsonContext accepts a bean as target

This commit is contained in:
Roland Praml
2022-03-28 15:38:44 +02:00
parent f95212eeb3
commit ffeb630e7e
11 changed files with 146 additions and 32 deletions
@@ -12,11 +12,18 @@ import io.ebean.bean.PersistenceContext;
*/
public interface JsonBeanReader<T> {
/**
* Read the JSON into given bean. Will update existing properties.
*/
T read(T target);
/**
* Read the JSON returning a bean.
*/
T read();
default T read() {
return read(null);
}
/**
* Create a new reader taking the context from the existing one but using a new JsonParser.
*/
@@ -58,12 +58,60 @@ public interface JsonContext {
*/
<T> T toBean(Class<T> cls, JsonParser parser, JsonReadOptions options) throws JsonIOException;
/**
* Read json parser input into a given Bean. <br>
* Note: This is a kind of "update". Only properties in the json will be modified. Embedded Lists and Maps will become new
* instances, so the object identity will not be preserved here.
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, JsonParser parser) throws JsonIOException;
/**
* Read json parser input into a given Bean additionally using JsonReadOptions.<br>
* See {@link #toBean(Class, JsonParser)} for details modified.
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, JsonParser parser, JsonReadOptions options) throws JsonIOException;
/**
* Read json reader input into a given Bean.<br>
* See {@link #toBean(Class, JsonParser)} for details
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, Reader json) throws JsonIOException;
/**
* Read json reader input into a given Bean additionally using JsonReadOptions.<br>
* See {@link #toBean(Class, JsonParser)} for details modified.
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, Reader json, JsonReadOptions options) throws JsonIOException;
/**
* Read json string input into a given Bean.<br>
* See {@link #toBean(Class, JsonParser)} for details
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, String json) throws JsonIOException;
/**
* Read json string input into a given Bean additionally using JsonReadOptions.<br>
* See {@link #toBean(Class, JsonParser)} for details
*
* @throws JsonIOException When IOException occurs
*/
<T> void toBean(T target, String json, JsonReadOptions options) throws JsonIOException;
/**
* Create and return a new bean reading for the bean type given the JSON options and source.
* <p>
* Note that JsonOption provides an option for setting a persistence context and also enabling
* further lazy loading. Further lazy loading requires a persistence context so if that is set
* on then a persistence context is created if there is not one set.
* Note that JsonOption provides an option for setting a persistence context and also enabling further lazy loading. Further lazy
* loading requires a persistence context so if that is set on then a persistence context is created if there is not one set.
*/
<T> JsonBeanReader<T> createBeanReader(Class<T> cls, JsonParser parser, JsonReadOptions options) throws JsonIOException;