1/*-
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 2000,2008 Oracle.  All rights reserved.
5 *
6 * $Id: MarshalledTupleEntry.java,v 12.6 2008/01/08 20:58:36 bostic Exp $
7 */
8
9package com.sleepycat.bind.tuple;
10
11/**
12 * A marshalling interface implemented by key, data or entity classes that
13 * are represented as tuples.
14 *
15 * <p>Key classes implement this interface to marshal their key entry.  Data or
16 * entity classes implement this interface to marshal their data entry.
17 * Implementations of this interface must have a public no arguments
18 * constructor so that they can be instantiated by a binding, prior to calling
19 * the {@link #unmarshalEntry} method.</p>
20 *
21 * <p>Note that implementing this interface is not necessary when the object is
22 * a Java simple type, for example: String, Integer, etc. These types can be
23 * used with built-in bindings returned by {@link
24 * TupleBinding#getPrimitiveBinding}.</p>
25 *
26 * @author Mark Hayes
27 * @see TupleTupleMarshalledBinding
28 */
29public interface MarshalledTupleEntry {
30
31    /**
32     * Construct the key or data tuple entry from the key or data object.
33     *
34     * @param dataOutput is the output tuple.
35     */
36    void marshalEntry(TupleOutput dataOutput);
37
38    /**
39     * Construct the key or data object from the key or data tuple entry.
40     *
41     * @param dataInput is the input tuple.
42     */
43    void unmarshalEntry(TupleInput dataInput);
44}
45