import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.security.acls.model.Permission; import java.util.List; /** * ACL specific extension of {@link JpaRepository}. Extends by supporting collection filtering * based on ACL {@link Permission permissions}. * * @param Entity domain type * @param Unique identifier's type * @author 0x1C1B */ @NoRepositoryBean public interface AclJpaRepository extends JpaRepository { /** * Finds all available entities filtered by ACL permission. * * @param permission Permission filter criteria * @return Returns a list of all matching entities */ List findAll(Permission permission); /** * Fetches all available entities filtered by ACL permission as a {@link Page}. * * @param permission Permission filter criteria * @return Returns a Page of entities matching the permission criteria */ Page findAll(Pageable pageable, Permission permission); /** * Finds all available entities filtered by ACL permission and matching the given * {@link Specification}. * * @param spec Given specification * @param permission Permission filter criteria * @return Returns a list of all matching entities */ List findAll(Specification spec, Permission permission); /** * Fetches all available entities matching the given {@link Specification} and * filtered by ACL permission as a {@link Page}. * * @param spec Given specification * @param permission Permission filter criteria * @return Returns a Page of entities matching the permission criteria */ Page findAll(Specification spec, Pageable pageable, Permission permission); }