package karma.model;
/**
* Persistent store to contain ReputationHolder entries.
*
* @author Hakan.Dilek
*
* @param <R>
* the Reputation type
* @param <RH>
* the Reputation Holder type
*/
public interface ReputationHolderStore<R extends Reputable, RH extends ReputationHolder> {
/**
* Retrieves an existing reputation holder for the given subject
*
* @param subject
* the reputation subject
* @return associated reputation holder
*/
RH get(R subject);
/**
* Creates a new reputation holder and associates with the given subject
*
* @param subject
* the reputation subject
* @return a new reputation holder
*/
RH create(R subject);
/**
* Updates the given reputation holder in the store
*
* @param holder
* the holder to update
*/
void update(RH holder);
}