| | |
| | | * (the "License"). You may not use this file except in compliance |
| | | * with the License. |
| | | * |
| | | * You can obtain a copy of the license at |
| | | * trunk/opendj3/legal-notices/CDDLv1_0.txt |
| | | * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt |
| | | * or http://forgerock.org/license/CDDLv1.0.html. |
| | | * See the License for the specific language governing permissions |
| | | * and limitations under the License. |
| | | * |
| | | * When distributing Covered Code, include this CDDL HEADER in each |
| | | * file and include the License file at |
| | | * trunk/opendj3/legal-notices/CDDLv1_0.txt. If applicable, |
| | | * add the following below this CDDL HEADER, with the fields enclosed |
| | | * by brackets "[]" replaced with your own identifying information: |
| | | * file and include the License file at legal-notices/CDDLv1_0.txt. |
| | | * If applicable, add the following below this CDDL HEADER, with the |
| | | * fields enclosed by brackets "[]" replaced with your own identifying |
| | | * information: |
| | | * Portions Copyright [yyyy] [name of copyright owner] |
| | | * |
| | | * CDDL HEADER END |
| | |
| | | */ |
| | | package com.forgerock.opendj.util; |
| | | |
| | | |
| | | |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | |
| | | import org.forgerock.opendj.ldap.ByteStringBuilder; |
| | | |
| | | |
| | | |
| | | /** |
| | | * An adapter class that allows writing to an byte string builder with the |
| | | * outputstream interface. |
| | | */ |
| | | public final class ByteSequenceOutputStream extends OutputStream |
| | | { |
| | | public final class ByteSequenceOutputStream extends OutputStream { |
| | | |
| | | private final ByteStringBuilder buffer; |
| | | private final ByteStringBuilder buffer; |
| | | |
| | | /** |
| | | * Creates a new byte string builder output stream. |
| | | * |
| | | * @param buffer |
| | | * The underlying byte string builder. |
| | | */ |
| | | public ByteSequenceOutputStream(final ByteStringBuilder buffer) { |
| | | this.buffer = buffer; |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void close() throws IOException { |
| | | buffer.clear(); |
| | | } |
| | | |
| | | /** |
| | | * Creates a new byte string builder output stream. |
| | | * |
| | | * @param buffer |
| | | * The underlying byte string builder. |
| | | */ |
| | | public ByteSequenceOutputStream(final ByteStringBuilder buffer) |
| | | { |
| | | this.buffer = buffer; |
| | | } |
| | | /** |
| | | * Gets the length of the underlying byte string builder. |
| | | * |
| | | * @return The length of the underlying byte string builder. |
| | | */ |
| | | public int length() { |
| | | return buffer.length(); |
| | | } |
| | | |
| | | /** |
| | | * Resets this output stream such that the underlying byte string builder is |
| | | * empty. |
| | | */ |
| | | public void reset() { |
| | | buffer.clear(); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final byte[] bytes) throws IOException { |
| | | buffer.append(bytes); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void close() throws IOException |
| | | { |
| | | buffer.clear(); |
| | | } |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final byte[] bytes, final int i, final int i1) throws IOException { |
| | | buffer.append(bytes, i, i1); |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final int i) throws IOException { |
| | | buffer.append(((byte) (i & 0xFF))); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Gets the length of the underlying byte string builder. |
| | | * |
| | | * @return The length of the underlying byte string builder. |
| | | */ |
| | | public int length() |
| | | { |
| | | return buffer.length(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Resets this output stream such that the underlying byte string builder is |
| | | * empty. |
| | | */ |
| | | public void reset() |
| | | { |
| | | buffer.clear(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final byte[] bytes) throws IOException |
| | | { |
| | | buffer.append(bytes); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final byte[] bytes, final int i, final int i1) |
| | | throws IOException |
| | | { |
| | | buffer.append(bytes, i, i1); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void write(final int i) throws IOException |
| | | { |
| | | buffer.append(((byte) (i & 0xFF))); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * Writes the content of the underlying byte string builder to the provided |
| | | * output stream. |
| | | * |
| | | * @param stream |
| | | * The output stream. |
| | | * @throws IOException |
| | | * If an I/O error occurs. In particular, an {@code IOException} is |
| | | * thrown if the output stream is closed. |
| | | */ |
| | | public void writeTo(final OutputStream stream) throws IOException |
| | | { |
| | | buffer.copyTo(stream); |
| | | } |
| | | /** |
| | | * Writes the content of the underlying byte string builder to the provided |
| | | * output stream. |
| | | * |
| | | * @param stream |
| | | * The output stream. |
| | | * @throws IOException |
| | | * If an I/O error occurs. In particular, an {@code IOException} |
| | | * is thrown if the output stream is closed. |
| | | */ |
| | | public void writeTo(final OutputStream stream) throws IOException { |
| | | buffer.copyTo(stream); |
| | | } |
| | | } |