액세스 제한사항

Eclipse 3.1 런타임은 플러그인 개발자에게 패키지 기준으로 다운스트림 플러그인에 대한 플러그인 코드의 가시성을 제어하는 옵션을 제공합니다.

패키지는 다음 중 하나로 분류할 수 있습니다.

  1. 액세스 가능
  2. 금지
  3. 내부
  4. 일원이 있는 내부

PDE는 컴파일을 수행할 때 런타임 가시성 규칙을 컴파일러 액세스 제한 규칙으로 변환합니다. 결과적으로, 가시성 규칙을 위반하면 위반의 심각도에 따라 컴파일러가 경고 또는 오류 플래그를 표시합니다.

컴파일 수행 시 이러한 지원의 사용가능성으로, 런타임 시 클래스 로드 오류가 발생해도 놀라지 않고 항상 내부 유형 참조 시기를 인식합니다.

 

액세스 가능한 패키지

액세스 가능한 패키지는 무조건 다운스트림 플러그인에 표시 가능합니다.    API 패키지는 명백하게 이 카테고리에 속해야 하는 반면, 이 레벨의 가시성이 제공되도록 할 플러그인이 내보내는 다른 패키지를 결정하는 것은 완전히 개발자에게 달려 있습니다.

패키지를 액세스 가능하도록 선언하려면, 플러그인 Manifest 편집기의 런타임에서 내보낸 패키지 섹션에 패키지를 나열하고 기본 가시성 설정 그대로 두어야 합니다.

액세스 가능한 패키지

 

금지된 패키지

플러그인 Manifest 편집기의 런타임 페이지에 있는 내보낸 패키지 섹션의 목록에서 제외시켜서 항상 다운스트림 플러그인으로부터 패키지를 숨길 수 있습니다.

금지된 패키지의 유형을 참조하면 런타임 시 클래스 로드 오류가 발생합니다.

 이와 같은 원하지 않는 상황이 발생하지 않도록 하려면 다음을 수행하십시오.

  1. 컴파일러는 금지된 패키지에 대한 참조 ERROR 플래그를 표시합니다.
  2. 금지된 패키지의 유형은 컨텐츠 지원에 제시된 대로 사용할 수 없습니다.

참고:

  1. Eclipse SDK의 모든 플러그인은 내보낸 패키지 섹션에 있는 해당되는 모든 패키지를 열거합니다.   따라서 SDK의 어떤 패키지도 금지된 액세스가 수반되지 않습니다.
  2. 금지된 참조에 대한 심각도 레벨은 Java > 컴파일러 > 오류/경고 > 폐기 및 제한된 API 환경 설정 페이지에서 설정됩니다.

    금지된 참조의 심각도는 ERROR로 유지해야 합니다.

    금지 환경 설정

내부 패키지

내부 패키지는 다운스트림 플러그인이 사용하지 않도록 할 패키지입니다. 이 패키지는 기본적으로 다운스트림 플러그인에 표시 가능합니다.

내부 패키지는 Eclipse가 strict 모드에서 시작될 경우(즉, -Dosgi.resolverMode=strict VM 인수로 시작할 경우)에만 다운스트림 플러그인에 표시되지 않습니다.

내부 패키지는 hidden 옵션이 선택된 플러그인 Manifest 편집기의 런타임 페이지에 있는 내보낸 패키지 섹션에 나열되어야 합니다.

권장되지 않는 액세스

다운스트림 플러그인이 내부 패키지를 참조하지 못하도록 하기 위해 두 가지 조치가 사용됩니다.

권장되지 않는 액세스

권장되지 않는 컨텐츠 지원

권장되지 않는 참조에 대한 심각도 레벨은 Java > 컴파일러 > 오류/경고 > 폐기 및 제한된 API 환경 설정 페이지에서 설정할 수 있습니다.

권장되지 않는 환경 설정

 

일원이 있는 내부 패키지

지정된 "일원" 플러그인에 내부 패키지에 대한 전체 액세스를 부여할 수 있는 것은 플러그인에 중요합니다. 예를 들어, PDE 코드는 여러 플러그인 사이에 분할되어 있고 org.eclipse.pde.ui 플러그인은 org.eclipse.pde.core의 내부 패키지에 대해 전체 액세스를 가지고 있어야 합니다.

아래의 예제에서, 일원(org.eclipse.pdeorg.eclipse.pde.ui 플러그인)은 org.eclipse.pde.core 플러그인의 org.eclipse.pde.internal.core.bundle 패키지에 대해 전체 액세스 권한을 갖습니다.

일원

일원은 컴파일러가 인정한 org.eclipse.pde.internal.core.bundle 패키지의 모든 유형을 자유롭게 참조할 수 있습니다.

한편, 다른 플러그인인 org.eclipse.pde.internal.core.bundle 패키지의 유형을 참조할 경우 컴파일러는 이전 섹션에 설명된 대로 참조에 권장되지 않는 참조 플래그를 표시합니다.

 

액세스 제한사항을 사용하는 방법

PDE 액세스 제한사항 지원을 이용할 경우 유일한 요구사항은 해당되는 플러그인에 OSGi 번들 manifest.mf가 포함되어 있어야 한다는 것입니다. 그러면 플러그인 클래스 경로를 관리하는 PDE가 나머지를 관리합니다.

플러그인에 manifest.mf 파일이 없을 경우 이 파일은 다음과 같이 작성할 수 있습니다.

  1. 플러그인 Manifest 편집기에서 plugin.xml을 여십시오.
  2. 개요 페이지의 플러그인 컨텐츠 섹션에서 'OSGi 번들 Manifest 작성' 링크를 클릭하십시오.

manifest.mf로 변환

 

액세스 규칙 검사

플러그인 프로젝트의 Java 빌드 경로 특성 페이지에서 PDE에 의해 각 클래스 경로 항목에 포함된 액세스 제한사항 규칙을 검사할 수 있습니다.

Java 빌드 경로 특성