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

com.fitbur.jackson.core.io.SegmentedStringWriter Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package com.fitbur.jackson.core.io;

import java.io.*;

import com.fitbur.jackson.core.util.BufferRecycler;
import com.fitbur.jackson.core.util.TextBuffer;

/**
 * Efficient alternative to {@link StringWriter}, based on using segmented
 * internal buffer. Initial input buffer is also recyclable.
 *

* This class is most useful when serializing JSON content as a String: * if so, instance of this class can be given as the writer to * JsonGenerator. */ public final class SegmentedStringWriter extends Writer { final protected TextBuffer _buffer; public SegmentedStringWriter(BufferRecycler br) { super(); _buffer = new TextBuffer(br); } /* /********************************************************** /* java.io.Writer implementation /********************************************************** */ @Override public Writer append(char c) { write(c); return this; } @Override public Writer append(CharSequence csq) { String str = csq.toString(); _buffer.append(str, 0, str.length()); return this; } @Override public Writer append(CharSequence csq, int start, int end) { String str = csq.subSequence(start, end).toString(); _buffer.append(str, 0, str.length()); return this; } @Override public void close() { } // NOP @Override public void flush() { } // NOP @Override public void write(char[] cbuf) { _buffer.append(cbuf, 0, cbuf.length); } @Override public void write(char[] cbuf, int off, int len) { _buffer.append(cbuf, off, len); } @Override public void write(int c) { _buffer.append((char) c); } @Override public void write(String str) { _buffer.append(str, 0, str.length()); } @Override public void write(String str, int off, int len) { _buffer.append(str, off, len); } /* /********************************************************** /* Extended API /********************************************************** */ /** * Main access method that will construct a String that contains * all the contents, release all internal buffers we may have, * and return result String. * Note that the method is not idempotent -- if called second time, * will just return an empty String. */ public String getAndClear() { String result = _buffer.contentsAsString(); _buffer.releaseBuffers(); return result; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy