Package com.sleepycat.bdb.bind.tuple

Source Code of com.sleepycat.bdb.bind.tuple.TupleMarshalledBinding

/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2000-2003
*      Sleepycat Software.  All rights reserved.
*
* $Id: TupleMarshalledBinding.java,v 1.9 2003/10/18 19:54:27 mhayes Exp $
*/

package com.sleepycat.bdb.bind.tuple;

import com.sleepycat.bdb.util.IOExceptionWrapper;
import java.io.IOException;

/**
* A concrete key or value binding that uses the {@link MarshalledTupleData}
* interface.  It works by calling the methods of the {@link
* MarshalledTupleData} interface, which must be implemented by the key or
* value class, to convert between the key or value data and the object.
* use the {@link TupleInput#TupleInput(TupleOutput)} constructor.
*
* @author Mark Hayes
*/
public class TupleMarshalledBinding extends TupleBinding {

    private Class cls;

    /**
     * Creates a tuple marshalled binding object.
     *
     * <p>The given class is used to instantiate key or value objects using
     * {@link Class#forName}, and therefore must be a public class and have a
     * public no-arguments constructor.  It must also implement the {@link
     * MarshalledTupleData} interface.</p>
     *
     * @param format is the format of the new binding.
     *
     * @param cls is the class of the key or value objects.
     */
    public TupleMarshalledBinding(TupleFormat format, Class cls) {

        super(format);
        this.cls = cls;

        // The class will be used to instantiate the object.
        //
        if (!MarshalledTupleData.class.isAssignableFrom(cls)) {
            throw new IllegalArgumentException(cls.toString() +
                        " does not implement MarshalledTupleData");
        }
    }

    // javadoc is inherited
    public Object dataToObject(TupleInput input)
        throws IOException {

        try {
            MarshalledTupleData obj =
                (MarshalledTupleData) cls.newInstance();
            obj.unmarshalData(input);
            return obj;
        } catch (IllegalAccessException e) {
            throw new IOExceptionWrapper(e);
        } catch (InstantiationException e) {
            throw new IOExceptionWrapper(e);
        }
    }

    // javadoc is inherited
    public void objectToData(Object object, TupleOutput output)
        throws IOException {

        MarshalledTupleData obj = (MarshalledTupleData) object;
        obj.marshalData(output);
    }
}
TOP

Related Classes of com.sleepycat.bdb.bind.tuple.TupleMarshalledBinding

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.