PermissionCollection
PermissionCollection (권한 컬렉션)
Permission 객체들의 집합을 나타내는 추상 클래스입니다. 권한 컬렉션을 사용하면 권한을 추가하고, 특정 권한이 포함(implied)되는지 확인하고, 모든 권한을 열거할 수 있습니다.
본문
PermissionCollection은 여러 Permission 객체를 하나로 묶어 관리하는 추상 클래스입니다. 다음과 같은 작업을 할 수 있습니다.
add메서드로 권한을 컬렉션에 추가합니다.implies메서드로 특정 권한이 컬렉션에 포함되는지 확인합니다.elements메서드로 모든 권한을 열거합니다.
같은 타입의 Permission 객체 여러 개를 함께 묶고 싶을 때는 해당 권한 타입의 newPermissionCollection 메서드를 먼저 호출해야 합니다. Permission 클래스의 기본 동작은 null을 반환하는 것입니다. 하위 클래스는 특정 PermissionCollection에 권한을 저장해야 하는 경우 이 메서드를 오버라이드합니다.
Permission.newPermissionCollection이 반환하는 컬렉션은 단일 권한 타입만 저장하는 동질(homogeneous) 컬렉션입니다. 반면 Permissions는 다양한 권한 타입을 담는 이질(heterogeneous) 컬렉션입니다. 예를 들어 모든 FilePermission을 위한 컬렉션, 모든 SocketPermission을 위한 컬렉션 등을 각각 보관합니다.
PermissionCollection 하위 클래스는 여러 스레드에서 동시에 호출될 수 있으므로 적절히 동기화되어야 합니다. elements가 반환한 열거는 fail-fast가 아니며, 열거 중에 컬렉션을 수정하면 안 됩니다.
PermissionCollection의 주요 메서드는 다음과 같습니다.
public abstract void add(Permission permission)— 권한 객체를 현재 권한 컬렉션에 추가합니다. 컬렉션이 읽기 전용이거나 동질 컬렉션에 잘못된 타입이면 예외가 발생합니다.public abstract boolean implies(Permission permission)— 지정된 권한이 이 컬렉션에 포함되는지 검사합니다.public abstract Enumeration<Permission> elements()— 컬렉션의 모든Permission객체를 열거합니다.public Stream<Permission> elementsAsStream()— 컬렉션의 모든 권한을 스트림으로 반환합니다.public void setReadOnly()— 이 컬렉션을 "읽기 전용"으로 표시합니다. 이후에는add로 권한을 추가할 수 없습니다.public boolean isReadOnly()— 이 컬렉션이 읽기 전용인지 여부를 반환합니다. 기본값은 읽기 전용이 아닙니다.public String toString()— 이 컬렉션을 설명하는 문자열을 반환합니다.