Permissions

Permissions (권한 묶음)

서로 다른 타입의 Permission 객체들이 PermissionCollection 객체들로 조직된 이질(heterogeneous) 권한 컬렉션을 나타내는 클래스입니다.

출처: Java API Reference

본문

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) — 권한이 속한 클래스의 PermissionCollectionPermission 객체를 추가합니다. 예를 들어 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 객체를 열거합니다.

더 알아보기 (Learn more)

Java 공식 API