public abstract class KeySerializer<KeyT extends Key,SerializationT extends Serialization> extends Object
Key objects into Serialization objects of a certain kind.
This class should eventually be in Tinks public API -- however, it might still change before that.
| Modifier and Type | Class and Description |
|---|---|
static interface |
KeySerializer.KeySerializationFunction<KeyT extends Key,SerializationT extends Serialization>
A function which serializes a key.
|
| Modifier and Type | Method and Description |
|---|---|
static <KeyT extends Key,SerializationT extends Serialization> |
create(KeySerializer.KeySerializationFunction<KeyT,SerializationT> function,
Class<KeyT> keyClass,
Class<SerializationT> serializationClass)
Creates a KeySerializer object.
|
Class<KeyT> |
getKeyClass() |
Class<SerializationT> |
getSerializationClass() |
abstract SerializationT |
serializeKey(KeyT key,
SecretKeyAccess access) |
public abstract SerializationT serializeKey(KeyT key, @Nullable SecretKeyAccess access) throws GeneralSecurityException
GeneralSecurityExceptionpublic Class<SerializationT> getSerializationClass()
public static <KeyT extends Key,SerializationT extends Serialization> KeySerializer<KeyT,SerializationT> create(KeySerializer.KeySerializationFunction<KeyT,SerializationT> function, Class<KeyT> keyClass, Class<SerializationT> serializationClass)
In order to create a KeySerializer object, one typically writes a function
class MyClass {
private static MySerialization serialize(MyKey key, @Nullable SecretKeyAccess access)
throws GeneralSecurityException {
...
}
}
This function can then be used to create a KeySerializer:
KeySerializer<MyKey, MySerialization> serializer =
KeySerializer.create(MyClass::serialize, MyKey.class, MySerialization.class);
Note that calling this function twice will result in objects which are not equal according
to Object.equals, and hence cannot be used to re-register a previously registered
object.