Package com.facebook.presto.jdbc.internal.jackson.core.io

Source Code of com.facebook.presto.jdbc.internal.jackson.core.io.SegmentedStringWriter

package com.facebook.presto.jdbc.internal.jackson.core.io;

import java.io.*;

import com.facebook.presto.jdbc.internal.jackson.core.util.BufferRecycler;
import com.facebook.presto.jdbc.internal.jackson.core.util.TextBuffer;

/**
* Efficient alternative to {@link StringWriter}, based on using segmented
* internal buffer. Initial input buffer is also recyclable.
*<p>
* 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
* <code>JsonGenerator</code>.
*/
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;
    }
}
TOP

Related Classes of com.facebook.presto.jdbc.internal.jackson.core.io.SegmentedStringWriter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.