/* * Copyright (C) 2014 SCVNGR, Inc. d/b/a LevelUp * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.scvngr.levelup.core.ui.view; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.scvngr.levelup.core.ui.view.LevelUpQrCodeGenerator.LevelUpQrCodeImage; import net.jcip.annotations.ThreadSafe; /** * A cache for LevelUp payment codes. This is used by {@link LevelUpCodeLoader}. This cache must be * thread safe. */ @ThreadSafe public interface LevelUpCodeCache { /** * @param key the key under which to store the code. This should be unique for each code. * @param image the code image. This should be the smallest-possible code image. */ void putCode(@NonNull final String key, @NonNull final LevelUpQrCodeImage image); /** * @param key the key under which the image is stored. * @return the cached code image or {@code null} if there is no entry. */ @Nullable LevelUpQrCodeImage getCode(@NonNull final String key); /** * @param key the key under which the image is stored. * @return true if the cache has a mapping for the given key. */ boolean hasCode(@NonNull final String key); }