/* * Copyright 2017 Graz University of Technology EAAF-Core Components has been developed in a * cooperation between EGIZ, A-SIT Plus, A-SIT, and Graz University of Technology. * * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European * Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in * compliance with the Licence. You may obtain a copy of the Licence at: * https://joinup.ec.europa.eu/news/understanding-eupl-v12 * * Unless required by applicable law or agreed to in writing, software distributed under the Licence * is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the Licence for the specific language governing permissions and limitations under * the Licence. * * This product combines work with different licenses. See the "NOTICE" text file for details on the * various modules and licenses. The "NOTICE" text file is part of the distribution. Any derivative * works that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egiz.eaaf.core.api.storage; import java.util.Date; import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; /** * Interface to store arbitrary data. * * @author tlenz * */ public interface ITransactionStorage { /** * Check if transaction storage contains a data object with a specific key. * * @param key Key, which identifies a data object * @return true if key is found, otherwise false */ boolean containsKey(String key); /** * Store a data object with a key to transaction storage. * * @param key Id which identifiers the data object * @param value Data object which should be stored. This data must implement * the java.io.Serializable interface * @param timeoutMs Defines the period of time a data object is kept within the * storage * @throws EaafStorageException In case of store operation failed */ void put(String key, Object value, int timeoutMs) throws EaafException; /** * Get a data object from transaction storage. * * @param key key Id which identifiers the data object * @return The transaction-data object, or null * @throws EaafStorageException In case of load operation failed */ Object get(String key) throws EaafException; /** * Get a data object from transaction storage. * * @param key Id which identifiers the data object * @param clazz The class type which is stored with this key * @return The transaction-data object from type class, or null * @throws EaafStorageException In case of load operation failed */ T get(String key, final Class clazz) throws EaafException; /** * Get a data object from transaction storage. * * @param key Id which identifiers the data object * @param clazz The class type which is stored with this key * @param dataTimeOut Data-object timeout in [ms] * @return The transaction-data object from type class, or null * @throws EaafStorageException In case of load operation failed */ T get(String key, final Class clazz, long dataTimeOut) throws EaafException; /** * Change the key of a data object and store it under the new key. * * @param oldKey Old key of the data object * @param newKey New key, which should be used to store the data object * @param value Data object which should be stored * @throws EaafStorageException In case of store operation failed */ void changeKey(String oldKey, String newKey, Object value) throws EaafException; /** * Remove a data object from transaction storage. * * @param key Id which identifiers the data object */ void remove(String key); /** * Get all entries for Clean-up the transaction storage. * * @param now Current time * @param dataTimeOut Data-object timeout in [ms] * @return List of entry-keys which as a timeout */ List clean(Date now, long dataTimeOut); /** * Get a raw object from storage by using this key. * * @param key Storagekey * @return Object stored with this key, or null * @throws EaafException In case of a storage error */ @Nullable Object getRaw(String key) throws EaafException; /** * Set a raw object to storage. * * @param key Storagekey * @param element Object to store * @throws EaafException In case of a storage error */ void putRaw(@Nonnull String key, @Nonnull Object element) throws EaafException; }