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

org.codehaus.jackson.io.SegmentedStringWriter Maven / Gradle / Ivy

The newest version!
package org.codehaus.jackson.io;

import java.io.*;

import org.codehaus.jackson.util.BufferRecycler;
import org.codehaus.jackson.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. * * @since 1.3 */ public final class SegmentedStringWriter extends Writer { final 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, 0, str.length()); } /* ///////////////////////////////////////////////////////////// // 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