/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.master.config; import com.opengamma.master.AbstractChangeProvidingMaster; import com.opengamma.util.PublicSPI; /** * A general-purpose configuration master. * <p> * The configuration master provides a uniform view over storage of configuration elements. * This interface provides methods that allow the master to be searched and updated. * <p> * Many different kinds of configuration element may be stored in a single master. */ @PublicSPI public interface ConfigMaster extends AbstractChangeProvidingMaster<ConfigDocument> { /** * Searches for configuration documents matching the specified search criteria. * * @param <R> the type of the config item * @param request the search request, not null * @return the search result, not null * @throws IllegalArgumentException if the request is invalid */ <R> ConfigSearchResult<R> search(ConfigSearchRequest<R> request); /** * Queries the history of a single piece of configuration. * <p> * The request must contain an object identifier to identify the configuration. * * @param <R> the type of the config item * @param request the history request, not null * @return the configuration history, not null * @throws IllegalArgumentException if the request is invalid */ <R> ConfigHistoryResult<R> history(ConfigHistoryRequest<R> request); /** * Queries the meta-data about the master. * <p> * This can return information that is useful for drop-down lists. * * @param request the search request, not null * @return the requested meta-data, not null */ ConfigMetaDataResult metaData(ConfigMetaDataRequest request); }