/* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 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: * http://www.osor.eu/eupl/ * * 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.egovernment.moa.id.storage; import java.util.Date; import java.util.List; import at.gv.egovernment.moa.id.auth.exception.AuthenticationException; import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; /** * @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 */ public 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 timeout_ms Defines the period of time a data object is kept within the storage * @throws MOADatabaseException In case of store operation failed */ public void put(String key, Object value, int timeout_ms) throws MOADatabaseException; /** * Get a data object from transaction storage * * @param key key Id which identifiers the data object * @return The transaction-data object, or null * @throws MOADatabaseException In case of load operation failed */ public Object get(String key) throws MOADatabaseException; /** * 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 MOADatabaseException In case of load operation failed */ public T get(String key, final Class clazz) throws MOADatabaseException; /** * 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 Data-object timeout in [ms] * @return The transaction-data object from type class, or null * @throws MOADatabaseException In case of load operation failed * @throws AuthenticationException In case of data-object timeout occurs */ public T get(String key, final Class clazz, long dataTimeOut) throws MOADatabaseException, AuthenticationException; /** * 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 MOADatabaseException In case of store operation failed */ public void changeKey(String oldKey, String newKey, Object value) throws MOADatabaseException; /** * Remove a data object from transaction storage * * @param key Id which identifiers the data object */ public 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 */ public List clean(Date now, long dataTimeOut); /** * Get whole AssertionStoreObject, required for SLO *
* IMPORTANT: This method does NOT decrypt information before storage * * @param key key Id which identifiers the data object * @return The transaction-data object, or null * @throws MOADatabaseException In case of load operation failed */ public Object getAssertionStore(String key) throws MOADatabaseException; /** * Put whole AssertionStoreObject to db, required for SLO *
* IMPORTANT: This method does NOT encrypt information before storage * * @param element assertion store object */ public void putAssertionStore(Object element) throws MOADatabaseException; }