All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.restassured.internal.path.json.mapping.JsonPathJsonbObjectDeserializer Maven / Gradle / Ivy

The newest version!
package io.restassured.internal.path.json.mapping;

import groovy.lang.Closure;
import io.restassured.common.mapper.ObjectDeserializationContext;
import io.restassured.internal.common.assertion.AssertParameter;
import io.restassured.path.json.mapper.factory.JsonbObjectMapperFactory;
import io.restassured.path.json.mapping.JsonPathObjectDeserializer;
import org.codehaus.groovy.runtime.IOGroovyMethods;

import javax.json.bind.Jsonb;
import java.io.Reader;
import java.lang.reflect.Type;

public class JsonPathJsonbObjectDeserializer implements JsonPathObjectDeserializer {
    public JsonPathJsonbObjectDeserializer(JsonbObjectMapperFactory factory) {
        AssertParameter.notNull(factory, "JsonbObjectMapperFactory");
        this.factory = factory;
    }

    @Override
    public  T deserialize(ObjectDeserializationContext context) {
        final Type cls = context.getType();
        try (Jsonb mapper = factory.create(cls, context.getCharset())) {
            return IOGroovyMethods.withReader(context.getDataToDeserialize().asInputStream(), new Closure(this, this) {
                public Object doCall(Object reader) {
                    return mapper.fromJson((Reader) reader, cls);
                }

            });
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private final JsonbObjectMapperFactory factory;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy