Ograniczenia dostępu

Środowisko wykonawcze platformy Eclipse w wersji 3.1 udostępnia programistom modułów dodatkowych opcję kontrolowania na poziomie pakietu widoczności kodu modułu dodatkowego dla zgodnych modułów dodatkowych.

Pakiet można określić jako jeden z następujących:

  1. Dostępny
  2. Zabroniony
  3. Wewnętrzny
  4. Wewnętrzny z pakietami zaprzyjaźnionymi

Środowisko PDE tłumaczy te reguły widoczności czasu wykonywania na reguły ograniczeń dostępu kompilatora podczas kompilacji. Dzięki temu naruszenie reguły widoczności jest oznaczane przez kompilator jako ostrzeżenie lub błąd w zależności od jego istotności.

Udostępnienie takiej obsługi w trakcie kompilacji pozwala uniknąć niespodzianek w postaci błędów ładowania klas podczas wykonywania oraz zapewnia informowanie o odwołaniach do typów wewnętrznych.

 

Pakiety dostępne

Pakiety dostępne są widoczne dla zgodnych modułów dodatkowych bezwarunkowo.  Podczas gdy pakiety interfejsów API jednoznacznie należą do tej kategorii, decyzja dotycząca nadania tego poziomu widoczności pozostałym pakietom eksportowanym przez moduł dodatkowy należy wyłącznie do programisty.

Aby zadeklarować pakiet jako dostępny, należy uwzględnić go na liście w sekcji Wyeksportowane pakiety na stronie Środowisko wykonawcze edytora manifestu modułu dodatkowego i pozostawić ustawienie domyślnej widoczności bez zmian.

Pakiety dostępne

 

Pakiety zakazane

W każdym momencie można ukryć pakiet przed zgodnymi modułami dodatkowymi przez wykluczenie go z listy w sekcji Wyeksportowane pakiety na stronie Środowisko wykonawcze edytora manifestu modułu dodatkowego.

Odwołania do typów z pakietu zakazanego powodują błędy podczas ładowania klas w trakcie wykonywania.

 Aby zapobiegać takim sytuacjom, stosowane są następujące zasady:

  1. Kompilator oznacza odwołania do pakietów o zakazanym dostępie jako BŁĄD.
  2. Typy z pakietów o zakazanym dostępie NIE są dostępne jako propozycje asystenta treści.

Uwagi:

  1. Wszystkie moduły dodatkowe w pakiecie SDK platformy Eclipse zawierają listę wszystkich swoich pakietów w sekcji Wyeksportowane pakiety.  Z tego powodu żaden z pakietów w pakiecie SDK nie jest pakietem, do którego dostęp jest zakazany.
  2. Poziom istotności dla zakazanych odwołań jest ustawiany na stronie preferencji Java > Kompilator > Błędy/ostrzeżenia > Nieaktualny i ograniczony interfejs API.

    Zdecydowanie zaleca się, aby istotność zakazanych odwołań pozostała na poziomie błędu.

   Zakazane odwołania

Pakiety wewnętrzne

Pakiety wewnętrzne to pakiety nieprzeznaczone do używania przez zgodne moduły dodatkowe.Te pakiety są widoczne dla zgodnych modułów dodatkowych domyślnie.

Pakiety wewnętrzne są ukryte przed zgodnymi modułami dodatkowymi tylko w przypadku, gdy środowisko Eclipse jest uruchamiane w trybie ścisłym (tzn. gdy zostanie uruchomione z argumentem maszyny VM -Dosgi.resolverMode=strict).

Pakiety wewnętrzne muszą być uwzględnione na liście w sekcji Wyeksportowane pakiety na stronie Środowisko wykonawcze w edytorze manifestu modułu dodatkowego z zaznaczoną opcją Ukryte.

Niezalecany dostęp

Aby odwieść użytkownika od wykonywania odwołań do pakietów wewnętrznych z poziomu zgodnych modułów dodatkowych, stosowane są dwa rozwiązania:

Niezalecany dostęp

Niezalecana propozycja asystenta treści

Poziom istotności dla niezalecanych odwołań jest ustawiany na stronie preferencji Java > Kompilator > Błędy/ostrzeżenia > Nieaktualny i ograniczony interfejs API.

Niezalecane odwołania

 

Pakiety wewnętrzne z pakietami zaprzyjaźnionymi

Istotne jest, aby moduł dodatkowy mógł przyznać modułom dodatkowym określonym jako "zaprzyjaźnione" prawa pełnego dostępu do swoich pakietów wewnętrznych. Sytuacja taka ma miejsce, na przykład gdy kod środowiska PDE został podzielony między wiele modułów dodatkowych, a moduł dodatkowy org.eclipse.pde.ui powinien mieć pełny dostęp do pakietów wewnętrznych modułu dodatkowego org.eclipse.pde.core.

W przykładzie poniżej moduły zaprzyjaźnione (moduły dodatkowe org.eclipse.pde i org.eclipse.pde.ui) mają pełny dostęp do pakietu org.eclipse.pde.internal.core.bundle z modułu dodatkowego org.eclipse.pde.core .

Moduły zaprzyjaźnione

Moduły zaprzyjaźnione mogą swobodnie odwoływać się do dowolnego typu z pakietu org.eclipse.pde.internal.core.bundle, mając na to zgodę kompilatora.

Z drugiej strony, jeśli dowolny inny moduł dodatkowy odwoła się do typu z pakietu org.eclipse.pde.internal.core.bundle, kompilator oznaczy takie odwołanie jako niezalecane w sposób opisany w poprzedniej sekcji.

 

Włączanie ograniczeń dostępu

Aby korzystać z funkcji ograniczeń dostępu w środowisku PDE, jedynym wymaganiem, jakie należy spełnić, jest zapewnienie, aby dany moduł dodatkowy zawierał plik manifestu pakunku OSGi (manifest.mf). Całą resztą zajmie się środowisko PDE, które zarządza ścieżką klasy modułu dodatkowego.

Jeśli moduł dodatkowy nie zawiera pliku manifest.mf, plik ten można utworzyć w następujący sposób:

  1. Otwórz plik plugin.xml w edytorze manifestu modułu dodatkowego.
  2. W sekcji Treść modułu dodatkowego na stronie Przegląd kliknij odsyłacz Utwórz manifest pakunku OSGi.

Przekształcanie w plik manifest.mf

 

Kontrolowanie reguł dostępu

Kontrola reguł ograniczeń dostępu, narzuconych na każdy wpis ścieżki klasy przez środowisko PDE, może być przeprowadzona na stronie właściwości Ścieżka budowania Java projektu modułu dodatkowego.

Właściwości ścieżki budowania Java