/*
* 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;
}