// Path: service/src/main/java/info/rolandkrueger/userservice/model/Authority.java
// @Entity
// public class Authority implements GrantedAuthority {
//     private Long id;
//     @Version
//     Long version;
//     @LastModifiedDate
//     LocalDateTime lastModified;
// 
//     @NotBlank
//     private String authority;
// 
//     private String description;
// 
//     private Authority() {
//         lastModified = LocalDateTime.now();
//         version = 1L;
//     }
// 
//     public Authority(String authority) {
//         this();
//         setAuthority(authority);
//     }
// 
//     public Authority(String authority, String description) {
//         this(authority);
//         this.description = description;
//     }
// 
//     @Id
//     @GeneratedValue
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     protected void setAuthority(String authority) {
//         Preconditions.checkArgument(!Strings.isNullOrEmpty(MoreObjects.firstNonNull(authority, "").trim()));
//         this.authority = authority;
//     }
// 
//     @Override
//     @Column(unique = true)
//     public String getAuthority() {
//         return authority;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public Long getVersion() {
//         return version;
//     }
// 
//     public void setVersion(Long version) {
//         this.version = version;
//     }
// 
//     public LocalDateTime getLastModified() {
//         return lastModified;
//     }
// 
//     public void setLastModified(LocalDateTime lastModified) {
//         this.lastModified = lastModified;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(Authority.class)
//                 .add("authority", authority)
//                 .toString();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (obj == null || !(obj instanceof Authority)) {
//             return false;
//         }
//         if (obj == this) {
//             return true;
//         }
//         Authority other = (Authority) obj;
//         return Objects.equals(authority, other.authority);
//     }
// 
//     @Override
//     public int hashCode() {
//         return authority.hashCode();
//     }
// }
// 
// Path: service/src/main/java/info/rolandkrueger/userservice/repository/AuthorityRepository.java
// public interface AuthorityRepository extends PagingAndSortingRepository<Authority, Long> {
//     Authority findByAuthority(@Param(RestApiConstants.AUTHORITY_PARAM) String authority);
// 
//     @RestResource(exported = false)
//     @Override Iterable<Authority> findAll();
// }


import com.google.common.base.Preconditions;
import info.rolandkrueger.userservice.model.Authority;
import info.rolandkrueger.userservice.repository.AuthorityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.List;
package info.rolandkrueger.userservice.service;



/**
 * @author Roland Krüger
 */
@Service
public class AuthorityServiceImpl implements AuthorityService {

    private AuthorityRepository authorityRepository;

    @Override
// Path: service/src/main/java/info/rolandkrueger/userservice/model/Authority.java
// @Entity
// public class Authority implements GrantedAuthority {
//     private Long id;
//     @Version
//     Long version;
//     @LastModifiedDate
//     LocalDateTime lastModified;
// 
//     @NotBlank
//     private String authority;
// 
//     private String description;
// 
//     private Authority() {
//         lastModified = LocalDateTime.now();
//         version = 1L;
//     }
// 
//     public Authority(String authority) {
//         this();
//         setAuthority(authority);
//     }
// 
//     public Authority(String authority, String description) {
//         this(authority);
//         this.description = description;
//     }
// 
//     @Id
//     @GeneratedValue
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     protected void setAuthority(String authority) {
//         Preconditions.checkArgument(!Strings.isNullOrEmpty(MoreObjects.firstNonNull(authority, "").trim()));
//         this.authority = authority;
//     }
// 
//     @Override
//     @Column(unique = true)
//     public String getAuthority() {
//         return authority;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// 
//     public Long getVersion() {
//         return version;
//     }
// 
//     public void setVersion(Long version) {
//         this.version = version;
//     }
// 
//     public LocalDateTime getLastModified() {
//         return lastModified;
//     }
// 
//     public void setLastModified(LocalDateTime lastModified) {
//         this.lastModified = lastModified;
//     }
// 
//     @Override
//     public String toString() {
//         return MoreObjects.toStringHelper(Authority.class)
//                 .add("authority", authority)
//                 .toString();
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (obj == null || !(obj instanceof Authority)) {
//             return false;
//         }
//         if (obj == this) {
//             return true;
//         }
//         Authority other = (Authority) obj;
//         return Objects.equals(authority, other.authority);
//     }
// 
//     @Override
//     public int hashCode() {
//         return authority.hashCode();
//     }
// }
// 
// Path: service/src/main/java/info/rolandkrueger/userservice/repository/AuthorityRepository.java
// public interface AuthorityRepository extends PagingAndSortingRepository<Authority, Long> {
//     Authority findByAuthority(@Param(RestApiConstants.AUTHORITY_PARAM) String authority);
// 
//     @RestResource(exported = false)
//     @Override Iterable<Authority> findAll();
// }


// Path: service/src/main/java/info/rolandkrueger/userservice/service/AuthorityServiceImpl.java
import com.google.common.base.Preconditions;
import info.rolandkrueger.userservice.model.Authority;
import info.rolandkrueger.userservice.repository.AuthorityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import java.util.List;

package info.rolandkrueger.userservice.service;



/**
 * @author Roland Krüger
 */
@Service
public class AuthorityServiceImpl implements AuthorityService {

    private AuthorityRepository authorityRepository;

    @Override
    public Authority findByAuthority(String authority) {