package org.hsweb.web.core.authorize;
import org.hsweb.web.core.authorize.annotation.Authorize;
import java.util.*;
/**
* Created by zhouhao on 16-4-28.
*/
public interface AuthorizeValidatorConfig {
AuthorizeValidatorConfig setModules(Set<String> modules);
AuthorizeValidatorConfig setRoles(Set<String> roles);
AuthorizeValidatorConfig setActions(Set<String> actions);
AuthorizeValidatorConfig setMod(Authorize.MOD mod);
AuthorizeValidatorConfig addExpression(String expression, String language);
@Deprecated
AuthorizeValidatorConfig setApiSupport(boolean apiSupport);
@Deprecated
boolean isApiSupport();
boolean isEmpty();
default AuthorizeValidatorConfig addAnnotation(Set<Authorize> authorizes) {
Set<String> modules = new LinkedHashSet<>();
Set<String> roles = new LinkedHashSet<>();
Set<String> actions = new LinkedHashSet<>();
authorizes.forEach(tmp -> {
modules.addAll(Arrays.asList(tmp.module()));
roles.addAll(Arrays.asList(tmp.role()));
actions.addAll(Arrays.asList(tmp.action()));
setMod(tmp.mod());
addExpression(tmp.expression(), tmp.expressionLanguage());
setApiSupport(tmp.api());
});
setActions(actions).setModules(modules).setRoles(roles);
return this;
}
}