Permissions
Permissions (권한 묶음)
서로 다른 타입의 Permission 객체들이 PermissionCollection 객체들로 조직된 이질(heterogeneous) 권한 컬렉션을 나타내는 클래스입니다.
본문
Permissions는 여러 타입의 권한을 담는 컬렉션입니다. 예를 들어 java.io.FilePermission 객체가 이 클래스의 인스턴스에 추가되면 모두 하나의 PermissionCollection(FilePermission의 newPermissionCollection 메서드가 반환하는 컬렉션)에 저장됩니다. 마찬가지로 java.lang.RuntimePermission 객체들도 각각의 컬렉션에 저장됩니다.
add 메서드로 권한을 추가하면 해당 권한은 적절한 PermissionCollection에 저장됩니다. 아직 컬렉션이 없으면 권한 객체의 클래스를 확인해 newPermissionCollection 메서드를 호출하고, 그 결과가 null이면 내부적으로 hashtable을 사용하는 기본 PermissionCollection을 만들어 사용합니다. 이 경우 hashtable의 각 엔트리는 키와 값 모두 Permission 객체입니다.
elements로 반환되는 열거는 fail-fast가 아니므로, 열거하는 동안 컬렉션을 수정하면 안 됩니다.
Permissions가 제공하는 메서드는 다음과 같습니다.
public void add(Permission permission)— 권한이 속한 클래스의PermissionCollection에Permission객체를 추가합니다. 예를 들어FilePermission이면 이Permissions객체에 저장된FilePermissionCollection에 추가됩니다. 적절한 컬렉션이 없으면 새로 만들어 권한을 추가합니다.public boolean implies(Permission permission)— 이 객체에 있는 해당 권한 클래스의PermissionCollection이 지정된 권한을 포함하는지 검사합니다. 예를 들어/tmp하위의 모든 파일에 "read" 권한을 주는FilePermission과/tmp/scratch/foo디렉터리의 모든 파일에 "write" 권한을 주는FilePermission이 있다면,/tmp/scratch/foo디렉터리 파일에 "read"와 "write" 접근을 요구하는 권한에 대해true를 반환합니다. 이 컬렉션에AllPermission이 있으면 항상true를 반환합니다.public Enumeration<Permission> elements()— 이Permissions객체의 모든PermissionCollection에 있는 모든Permission객체를 열거합니다.