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

org.zalando.logbook.json.ParsingJsonCompactor Maven / Gradle / Ivy

package org.zalando.logbook.json;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;

import java.io.IOException;
import java.io.StringWriter;

@AllArgsConstructor
final class ParsingJsonCompactor implements JsonCompactor {

    private final JsonFactory factory;

    @Override
    public String compact(final String json) throws IOException {
        final StringWriter output = new StringWriter(json.length());
        final JsonParser parser = factory.createParser(json);

        final JsonGenerator generator = factory.createGenerator(output);

        // https://github.com/jacoco/jacoco/wiki/FilteringOptions
        //noinspection TryFinallyCanBeTryWithResources - jacoco can't handle try-with correctly
        try {
            while (parser.nextToken() != null) {
                generator.copyCurrentEvent(parser);
            }
        } finally {
            generator.close();
        }

        return output.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy