com.fasterxml.clustermate.service.store.StoredEntryConverter Maven / Gradle / Ivy
Show all versions of clustermate-service Show documentation
package com.fasterxml.clustermate.service.store;
import com.fasterxml.storemate.shared.ByteContainer;
import com.fasterxml.storemate.store.Storable;
import com.fasterxml.clustermate.api.EntryKey;
import com.fasterxml.clustermate.api.EntryKeyConverter;
import com.fasterxml.clustermate.api.msg.ListItem;
/**
* Converter used by store for handling conversions between
* low-level {@link Storable} (things stored in StoreMate store),
* and ClusterMate-level {@link StoredEntry} instances.
*
* Custom sub-classing is needed to support additional metadata for
* systems implementations.
*/
public abstract class StoredEntryConverter,
L extends ListItem
>
{
// // // Key conversion
public abstract EntryKeyConverter keyConverter();
// // // Entry conversion
public abstract E entryFromStorable(Storable raw);
public abstract E entryFromStorable(K key, final Storable raw);
public abstract E entryFromStorable(K key, Storable raw,
byte[] buffer, int offset, int length);
/**
* Method for constructing implementation minimal {@link ListItem} instances
* (subtypes) from raw {@link Storable}
*/
public ListItem minimalListItemFromStorable(Storable raw) {
return defaultMinimalListItemFromStorable(raw);
}
/**
* Method for constructing implementation implementation-specific
* full {@link ListItem} instances (subtypes) from raw {@link Storable}
*/
public abstract L fullListItemFromStorable(Storable raw);
// // // Metadata handling
/**
* Method called to construct "custom metadata" section to be
* used for constructing a new Storable
instance.
*/
public abstract ByteContainer createMetadata(long creationTime,
byte lastAccessUpdateMethod,
int minTTLSecs, int maxTTLSecs);
/*
/**********************************************************************
/* Default implementations (mostly for unit tests)
/**********************************************************************
*/
/**
* Helper method that can be used as the baseline implementation for
* {@link #listItemFromStorable(Storable)} by tests.
*/
protected ListItem defaultMinimalListItemFromStorable(Storable raw) {
return new ListItem(raw.getKey(), raw.getContentHash(), raw.getActualUncompressedLength());
}
}