/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.isis.core.commons.encoding;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
public class DataOutputStreamExtended implements DataOutputExtended {
private final DataOutputStream dataOutputStream;
public DataOutputStreamExtended(final OutputStream output) {
dataOutputStream = new DataOutputStream(output);
}
@Override
public DataOutputStream getDataOutputStream() {
return dataOutputStream;
}
// ////////////////////////////////////////
// Boolean, Char
// ////////////////////////////////////////
@Override
public void writeBoolean(final boolean value) throws IOException {
FieldType.BOOLEAN.write(this, value);
}
@Override
public void writeBooleans(final boolean[] value) throws IOException {
FieldType.BOOLEAN_ARRAY.write(this, value);
}
@Override
public void writeChar(final int value) throws IOException {
FieldType.CHAR.write(this, (char) value);
}
@Override
public void writeChars(final char[] value) throws IOException {
FieldType.CHAR_ARRAY.write(this, value);
}
// ////////////////////////////////////////
// Integral Numbers
// ////////////////////////////////////////
@Override
public void write(final int value) throws IOException {
writeByte((byte) value);
}
@Override
public void writeByte(final int value) throws IOException {
FieldType.BYTE.write(this, (byte) value);
}
@Override
public void write(final byte[] value) throws IOException {
writeBytes(value);
}
@Override
public void writeBytes(final byte[] value) throws IOException {
FieldType.BYTE_ARRAY.write(this, value);
}
@Override
public void writeShort(final int value) throws IOException {
FieldType.SHORT.write(this, (short) value);
}
@Override
public void writeShorts(final short[] value) throws IOException {
FieldType.SHORT_ARRAY.write(this, value);
}
@Override
public void writeInt(final int value) throws IOException {
FieldType.INTEGER.write(this, value);
}
@Override
public void writeInts(final int[] value) throws IOException {
FieldType.INTEGER_ARRAY.write(this, value);
}
@Override
public void writeLong(final long value) throws IOException {
FieldType.LONG.write(this, value);
}
@Override
public void writeLongs(final long[] value) throws IOException {
FieldType.LONG_ARRAY.write(this, value);
}
// ////////////////////////////////////////
// Floating Point Numbers
// ////////////////////////////////////////
@Override
public void writeFloat(final float value) throws IOException {
FieldType.FLOAT.write(this, value);
}
@Override
public void writeFloats(final float[] value) throws IOException {
FieldType.FLOAT_ARRAY.write(this, value);
}
@Override
public void writeDouble(final double value) throws IOException {
FieldType.DOUBLE.write(this, value);
}
@Override
public void writeDoubles(final double[] value) throws IOException {
FieldType.DOUBLE_ARRAY.write(this, value);
}
// ////////////////////////////////////////
// Strings
// ////////////////////////////////////////
@Override
public void writeUTF(final String value) throws IOException {
FieldType.STRING.write(this, value);
}
@Override
public void writeUTFs(final String[] value) throws IOException {
FieldType.STRING_ARRAY.write(this, value);
}
// ////////////////////////////////////////
// Encodable and Serializable
// ////////////////////////////////////////
@Override
public void writeEncodable(final Object encodable) throws IOException {
FieldType.ENCODABLE.write(this, (Encodable) encodable);
}
@Override
public void writeEncodables(final Object[] objects) throws IOException {
Encodable[] encodables;
if (objects == null) {
encodables = null;
} else {
encodables = new Encodable[objects.length];
for (int i = 0; i < encodables.length; i++) {
encodables[i] = (Encodable) objects[i];
}
}
FieldType.ENCODABLE_ARRAY.write(this, encodables);
}
@Override
public void writeSerializable(final Object serializable) throws IOException {
FieldType.SERIALIZABLE.write(this, (Serializable) serializable);
}
@Override
public void writeSerializables(final Object[] objects) throws IOException {
Serializable[] serializeables;
if (objects == null) {
serializeables = null;
} else {
serializeables = new Serializable[objects.length];
for (int i = 0; i < serializeables.length; i++) {
serializeables[i] = (Serializable) objects[i];
}
}
FieldType.SERIALIZABLE_ARRAY.write(this, serializeables);
}
// ////////////////////////////////////////
// Other
// ////////////////////////////////////////
@Override
public void write(final byte[] b, final int off, final int len) throws IOException {
dataOutputStream.write(b, off, len);
}
@Override
public void writeBytes(final String str) throws IOException {
dataOutputStream.writeBytes(str);
}
@Override
public void writeChars(final String str) throws IOException {
dataOutputStream.writeChars(str);
}
// ////////////////////////////////////////
// Flushable
// ////////////////////////////////////////
@Override
public void flush() throws IOException {
dataOutputStream.flush();
}
}