package cz.cvut.fel.adaptiverestfulapi.meta.configuration;
import cz.cvut.fel.adaptiverestfulapi.meta.model.*;
/**
* Configuration holds metadata about the model, entities and properties.
*/
public interface Configuration {
/**
* Returns global configuration value.
* @param key
* @param <T> type of value
* @return value
*/
public <T> T get(String key);
/**
* Returns model configuration value.
* @param key
* @param model
* @param <T> type of value
* @return value
*/
public <T> T get(String key, Model model);
/**
* Returns entity configuration value.
* @param key
* @param entity
* @param <T> type of value
* @return value
*/
public <T> T get(String key, Entity entity);
/**
* Returns attribute configuration value.
* @param key
* @param attribute
* @param <T> type of value
* @return value
*/
public <T> T get(String key, Attribute attribute);
/**
* Returns relationship configuration value.
* @param key
* @param relationship
* @param <T> type of value
* @return value
*/
public <T> T get(String key, Relationship relationship);
}