package ru.hflabs.rcd.service.rule;
import ru.hflabs.rcd.RoleNames;
import ru.hflabs.rcd.model.rule.Rule;
import javax.annotation.security.RolesAllowed;
import java.util.Collection;
/**
* Интерфейс <class>IRuleService</class> декларирует методы для управления правилами перекодирования
*
* @see Rule
*/
public interface IRuleService<R extends Rule<?, ?, R>> {
/**
* Выполняет модификацию правил перекодирования по изменившимся зависимостям
*
* @param dependencyClass класс зависимости
* @param dependencies коллекцию изменившихся зависимостей
* @return Возвращает модифицированные правила перекодирования
*/
@RolesAllowed(RoleNames.ADMINISTRATOR)
<T> Collection<R> modifyByDependencies(Class<T> dependencyClass, Collection<T> dependencies);
}