Zugriffsbeschränkungen

Die Laufzeit Eclipse 3.1 gibt dem Plug-in-Entwickler die Möglichkeit, die Sichtbarkeit des Plug-in-Codes gegenüber nachgeordneten Plug-ins auf einer Basis pro Paket zu steuern.

Ein Paket kann wie folgt klassifiziert sein:

  1. Zugänglich
  2. Verboten
  3. Intern
  4. Intern mit Freunden

PDE übersetzt diese Laufzeit-Sichtbarkeitsregeln in Compiler-Zugriffsbeschränkungsregeln zum Zeitpunkt der Kompilierung. Demzufolge wird eine Verletzung der Sichtbarkeitsregel von einem Compiler als Warnung oder Fehler markiert, je nach dem Schweregrad der Verletzung.

Dank der Verfügbarkeit dieser Unterstützung zum Zeitpunkt der Kompilierung, wird man niemals von Fehlern beim Laden der Klassen zur Laufzeitüberrascht und man ist sich dessen immer bewusst, wenn man auf interne Typen verweist.

 

Zugängliche Pakete

Zugängliche Pakete sind für nachgeordnete Plug-ins bedingungslos sichtbar.   Während API-Pakete klar in diese Kategorie fallen müssen, unterliegt es vollkommen dem Entwickler, zu entscheiden, welche anderen, von dem Plug-in exportierten Pakete diese Sichtbarkeitsstufe bekommen sollten.

Um ein Paket als zugänglich zu deklarieren, müssen Sie es in dem Abschnitt Exportierte Pakete in der Laufzeit des Editors für Plug-in-Manifeste auflisten und die Standard-Sichtbarkeitseinstellung unverändert lassen.

Zugängliche Pakete

 

Verbotene Pakete

Sie können ein Paket aus dem nachgeordneten Plug-in jederzeit ausblenden, indem Sie es ausschließen von der Liste in dem Abschnitt Exportierte Pakete auf der Seite Laufzeit des Editors für Plug-in-Manifeste.

Verweise auf Typen aus verbotenen Paketen führen zu Fehlern beim Laden der Klassen zur Laufzeit.

 Um solche unangenehmen Situationen zu vermeiden, gehen Sie wie folgt vor:

  1. Der Compiler markiert Verweise auf verbotene Pakete mit einem FEHLER.
  2. Typen aus verbotenen Paketen sind als Vorschläge in der Unterstützung für Inhalt NICHTverfügbar.

Hinweise:

  1. Alle Plug-ins in der Eclipse SDK zählen alle Ihre Pakete im Abschnitt 'Exportierte Pakete' auf.  Daher hat keines der Pakete in der SDK einen verbotenen Zugriff.
  2. Die Prioritätsstufe für verbotene Verweise wird festgelegt in den Java > Compiler > Fehler/Warnungen > Veraltete und eingeschränkte API- Benutzervorgabenseite.

    Es wird dringend empfohlen, dass der Schweregrad eines verbotenen Verweises als FEHLER gespeichert wird.

    Verbotene Benutzervorgaben

Interne Pakete

Interne Pakete sind Pakete, die nicht für den Einsatz durch nahcgeordnete Plug-ins bestimmt sind. Diese Pakete sind für nachgeordnete Plug-ins durch den Befehl Standardsichtbar.

Interne Pakete werden von nachgeordneten Plug-ins nur ausgeblendet, wenn Eclipse im Modus striktgestartet wird (z.B. wenn Sie mit dem VM-Argument -Dosgi.resolverMode=strict starten).

Interne Pakete müssen in dem Abschnitt Exportierte Pakete auf der Seite Laufzeit des Editors für Plug-in-Manifeste aufgelistet werden, wobei die ausgeblendeteOption ausgewählt ist.

Abgeratener Zugriff

Es werden zwei Maßnahmen getroffen, um von nachgeordneten Plug-ins aus verweisenden internen Paketen abzuraten:

Abgeratener Zugriff

Abgeratene Unterstützung für Inhalt

Die Prioritätsstufe für abgeratene Verweise kann auf der Benutzervorgabenseite Java > Compiler > Fehler/Warnungen > Veraltete und eingeschränkte API festgelegt werden.

Abgeratene Benutzervorgaben

 

Interne Pakete mit Freunden

Für ein Plug-in ist es wichtig, den vollständigen Zugriff auf seine internen Pakete für designierte "Freund"-Plug-ins erteilen zu können. Beispielsweise der PDE-Code ist auf mehrere Plug-ins aufgeteilt und das Plug-in org.eclipse.pde.ui sollte den vollständigen Zugriff auf die internen Pakete des Plug-ins org.eclipse.pde.core haben.

In dem nachstehenden Beispiel haben die Freunde (die Plug-ins org.eclipse.pde und org.eclipse.pde.ui) vom Plug-in org.eclipse.pde.core vollen Zugriff auf org.eclipse.pde.internal.core.bundle .

Freunde

Die Freunde können frei auf jeden beliebigen Typ des Paketes org.eclipse.pde.internal.core.bundle mit dem Vorteil des Compilers verweisen.

Wenn andererseits ein beliebiges anderes Plug-in auf einen Typen des Paketes org.eclipse.pde.internal.core.bundle verweist, m arkiert der Compiler den Verweis als einen abzuratenden Verweis, wie im vorherigen Abschnitt beschrieben.

 

Zugriffseinschränkungen aktivieren

Um die Unterstützung der PDE-Zugriffseinschränkung auszuschöpfen, ist die einzige Anforderung, dass das entsprechende Plug-in ein 'OSGi bundle manifest.mf' enthält. PDE, das den Plug-in-Klassenpfad verwaltet, kümmert sich dann um den Rest.

Wenn das Plug-in keine Datei 'manifest.mf' enthält, kann diese Datei folgendermaßen erstellt werden:

  1. Öffnen Sie die Datei 'plugin.xml' in dem Editor für Plug-in-Manifeste.
  2. Klicken Sie in dem Abschnitt Plug-in-Inhalt der Seite Übersicht auf den Link 'OSGi-Produktpaketmanifest' erstellen.

Konvertieren in manifest.mf

 

Untersuchen der Zugriffsregeln

Sie können die Regeln der Zugriffseinschränkung untersuchen, die auf jeden Klassenpfadeintrag durch PDE auf der Eigenschaftsseite Java-Erstellungspfad Ihres Plug-in-Projektes erhoben werden.

Java-Erstellungspfad-Eigenschaften