package com.sleepycat.bind.tuple; import com.sleepycat.je.DatabaseEntry; import de.ovgu.cide.jakutil.*; /** * A concrete <code>TupleBinding</code> for a <code>Byte</code> primitive * wrapper or a <code>byte</code> primitive. * <p> * There are two ways to use this class: * </p> * <ol> * <li>When using the {@link com.sleepycat.je} package directly, the static * methods in this class can be used to convert between primitive values and{@link DatabaseEntry} objects.</li> * <li>When using the {@link com.sleepycat.collections} package, an instance of * this class can be used with any stored collection. The easiest way to obtain * a binding instance is with the {@link TupleBinding#getPrimitiveBinding}method.</li> * </ol> */ public class ByteBinding extends TupleBinding { private static final int BYTE_SIZE=1; public Object entryToObject( TupleInput input){ return new Byte(input.readByte()); } public void objectToEntry( Object object, TupleOutput output){ output.writeByte(((Number)object).byteValue()); } protected TupleOutput getTupleOutput( Object object){ return sizedOutput(); } /** * Converts an entry buffer into a simple <code>byte</code> value. * @param entryis the source entry buffer. * @return the resulting value. */ public static byte entryToByte( DatabaseEntry entry){ return entryToInput(entry).readByte(); } /** * Converts a simple <code>byte</code> value into an entry buffer. * @param valis the source value. * @param entryis the destination entry buffer. */ public static void byteToEntry( byte val, DatabaseEntry entry){ outputToEntry(sizedOutput().writeByte(val),entry); } /** * Returns a tuple output object of the exact size needed, to avoid wasting * space when a single primitive is output. */ private static TupleOutput sizedOutput(){ return new TupleOutput(new byte[BYTE_SIZE]); } }