19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load;
29fc12334a7d14347cd6951d0653264b2597bd3a0Sam Judd
3a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Juddimport java.io.UnsupportedEncodingException;
4a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Juddimport java.security.MessageDigest;
5a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd
6a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd/**
77d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd * An interface that uniquely identifies some set of data. Implementations must implement {@link Object#equals(Object)}
87d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd * and {@link Object#hashCode()}. Implementations are generally expected to add all uniquely identifying information
97d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd * used in in {@link java.lang.Object#equals(Object)}} and {@link Object#hashCode()}} to the given
107d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd * {@link java.security.MessageDigest} in {@link #updateDiskCacheKey(java.security.MessageDigest)}}, although this
117d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd * requirement is not as strict for partial cache key signatures.
12a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd */
139fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpublic interface Key {
147d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd    String STRING_CHARSET_NAME = "UTF-8";
157d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd
16a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd    /**
17a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd     * Adds all uniquely identifying information to the given digest.
187d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd     *
197d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd     * <p>
207d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd     *     Note - Using {@link java.security.MessageDigest#reset()} inside of this method will result in undefined
217d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd     *     behavior.
227d7d03dceae92dc32a9b84dee665a34c300017a7Sam Judd     * </p>
23a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd     */
24aa857fbd6c71f37b4e2a3ba590e61965a37218b5Robert Papp    void updateDiskCacheKey(MessageDigest messageDigest) throws UnsupportedEncodingException;
25aa857fbd6c71f37b4e2a3ba590e61965a37218b5Robert Papp
2660b06578a99c3b29998be855e5e636e6e624850bSam Judd    @Override
27aa857fbd6c71f37b4e2a3ba590e61965a37218b5Robert Papp    boolean equals(Object o);
28a5e9584f75c9beef66dbc639ec1a8318a1149341Sam Judd
2960b06578a99c3b29998be855e5e636e6e624850bSam Judd    @Override
30aa857fbd6c71f37b4e2a3ba590e61965a37218b5Robert Papp    int hashCode();
319fc12334a7d14347cd6951d0653264b2597bd3a0Sam Judd}
32