/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ package com.sleepycat.persist; import com.sleepycat.bind.EntryBinding; import com.sleepycat.db.DatabaseEntry; /** * A ValueAdapter where the "value" is the key (the primary key in a primary * index or the secondary key in a secondary index). * * @author Mark Hayes */ class KeyValueAdapter<V> implements ValueAdapter<V> { private EntryBinding keyBinding; KeyValueAdapter(Class<V> keyClass, EntryBinding keyBinding) { this.keyBinding = keyBinding; } public DatabaseEntry initKey() { return new DatabaseEntry(); } public DatabaseEntry initPKey() { return null; } public DatabaseEntry initData() { return BasicIndex.NO_RETURN_ENTRY; } public void clearEntries(DatabaseEntry key, DatabaseEntry pkey, DatabaseEntry data) { key.setData(null); } public V entryToValue(DatabaseEntry key, DatabaseEntry pkey, DatabaseEntry data) { return (V) keyBinding.entryToObject(key); } public void valueToData(V value, DatabaseEntry data) { throw new UnsupportedOperationException ("Cannot change the data in a key-only index"); } }