package com.plexobject.rbac.repository; import com.plexobject.rbac.domain.Domain; import com.plexobject.rbac.domain.Subject; /** * This class interface as a factory for repositories to add subjects, roles, * permissions and domains. * */ public interface RepositoryFactory { /** * * @return instance of security repository */ SecurityMappingRepository getSecurityMappingRepository(String domain); /** * * @return instance of domain repository to manage domains */ DomainRepository getDomainRepository(); /** * * @return high level domain for this application */ Subject getSuperAdmin(); /** * * @return high level domain for this application */ Domain getDefaultDomain(); /** * * @param domain * @return repository of roles for specific domain */ RoleRepository getRoleRepository(String domain); /** * * @param domain * @return repository of permissions for given domain */ PermissionRepository getPermissionRepository(String domain); /** * * @param domain * @return repository of security errors for given domain */ SecurityErrorRepository getSecurityErrorRepository(String domain); /** * * @param domain * @return repository of subjects for given domain */ SubjectRepository getSubjectRepository(String domain); /** * * @return */ SubjectRepository getDefaultSubjectRepository(); }