Package com.sleepycat.bind.tuple

## Class TupleTupleMarshalledKeyCreator<E extends MarshalledTupleEntry & MarshalledTupleKeyEntity>

- java.lang.Object
- - com.sleepycat.bind.tuple.TupleBase<E>
  - - com.sleepycat.bind.tuple.TupleTupleKeyCreator<E>
    - - com.sleepycat.bind.tuple.TupleTupleMarshalledKeyCreator<E>

All Implemented Interfaces:
  `ForeignKeyNullifier`, `SecondaryKeyCreator`

    public class TupleTupleMarshalledKeyCreator<E extends MarshalledTupleEntry & MarshalledTupleKeyEntity>
    extends TupleTupleKeyCreator<E>

A concrete key creator that works in conjunction with a `TupleTupleMarshalledBinding`. This key creator works by calling the methods of the `MarshalledTupleKeyEntity` interface to create and clear the index key.

Note that a marshalled tuple key creator is somewhat less efficient than a non-marshalled key tuple creator because more conversions are needed. A marshalled key creator must convert the entry to an object in order to create the key, while an unmarshalled key creator does not.

### Constructor Summary

Constructors
`TupleTupleMarshalledKeyCreator​(TupleTupleMarshalledBinding<E> binding, java.lang.String keyName)` Creates a tuple-tuple marshalled key creator.

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `createSecondaryKey​(TupleInput primaryKeyInput, TupleInput dataInput, TupleOutput indexKeyOutput)` Creates the index key from primary key tuple and data tuple.
`boolean` `nullifyForeignKey​(TupleInput dataInput, TupleOutput dataOutput)` Clears the index key in the tuple data entry.

### Methods inherited from class com.sleepycat.bind.tuple.TupleTupleKeyCreator

`createSecondaryKey, nullifyForeignKey`

### Methods inherited from class com.sleepycat.bind.tuple.TupleBase

`entryToInput, getTupleBufferSize, getTupleOutput, inputToEntry, newOutput, newOutput, outputToEntry, setTupleBufferSize`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### TupleTupleMarshalledKeyCreator

    public TupleTupleMarshalledKeyCreator​(TupleTupleMarshalledBinding<E> binding,
                                          java.lang.String keyName)

Creates a tuple-tuple marshalled key creator.

Parameters:
  `binding` - is the binding used for the tuple-tuple entity.
  `keyName` - is the key name passed to the `MarshalledTupleKeyEntity.marshalSecondaryKey(java.lang.String, com.sleepycat.bind.tuple.TupleOutput)` method to identify the index key.

### Method Detail

#### createSecondaryKey

    public boolean createSecondaryKey​(TupleInput primaryKeyInput,
                                      TupleInput dataInput,
                                      TupleOutput indexKeyOutput)

Description copied from class: `TupleTupleKeyCreator`
Creates the index key from primary key tuple and data tuple.

Specified by:
  `createSecondaryKey` in class `TupleTupleKeyCreator<E extends MarshalledTupleEntry & MarshalledTupleKeyEntity>`
Parameters:
  `primaryKeyInput` - is the `TupleInput` for the primary key entry.
  `dataInput` - is the `TupleInput` for the data entry.
  `indexKeyOutput` - is the destination index key tuple.
Returns:
  true if a key was created, or false to indicate that the key is not present.

#### nullifyForeignKey

    public boolean nullifyForeignKey​(TupleInput dataInput,
                                     TupleOutput dataOutput)

Description copied from class: `TupleTupleKeyCreator`
Clears the index key in the tuple data entry. The dataInput should be read and then written to the dataOutput, clearing the index key in the process.

The secondary key should be output or removed by this method such that `TupleTupleKeyCreator.createSecondaryKey(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry)` will return false. Other fields in the data object should remain unchanged.

Overrides:
  `nullifyForeignKey` in class `TupleTupleKeyCreator<E extends MarshalledTupleEntry & MarshalledTupleKeyEntity>`
Parameters:
  `dataInput` - is the `TupleInput` for the data entry.
  `dataOutput` - is the destination `TupleOutput`.
Returns:
  true if the key was cleared, or false to indicate that the key is not present and no change is necessary.