Manifest dei plug-in della piattaforma Eclipse

Versione 2.1 - Ultima revisione 17 marzo 2003

Le definizioni dei tag manifest di seguito riportate utilizzano diversi token e identificativi dei nomi. Per evitare equivoci, sono state fornite alcune regole relative alla loro impostazione. Di solito, tutti gli identificativi sono sensibili al maiuscolo/minuscolo.

SimpleToken := sequenza dei caratteri 'a-z','A-Z','0-9' 
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) 
JavaClassName := ComposedToken 
PlugInId := ComposedToken
PlugInPrereq := PlugInId | 'export' PlugInId 
ExtensionId := SimpleToken 
ExtensionPointId := SimpleToken 
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)

Il resto di questa sezione descrive la struttura del file plugin.xml come una serie di frammenti DTD. Il file plugin.dtd presenta l'intera definizione DTD.

<?xml encoding="US-ASCII"?> 
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)> 
<!ATTLIST plugin 
  name                CDATA #REQUIRED 
  id                  CDATA #REQUIRED 
  version             CDATA #REQUIRED 
  provider-name       CDATA #IMPLIED
  class               CDATA #IMPLIED 
>

L'elemento <plugin> definisce il corpo del manifest. Esso può contenere definizioni di esecuzione, definizioni di altri plug-in necessarie per questo, dichiarazioni di qualsiasi nuovo punto di estensione introdotto da un plug-in oppure la configurazione di estensioni funzionali (configurate nei punti di estensione definiti da un altro plug-in o introdotti da questo plug-in). Gli attributi <plugin> sono:

La regola di costruzione DTD XMLelement* indica zero o più occorrenze dell'elemento; element? indica nessuna o una occorrenza dell'elemento; element+ (riportato di seguito) indica una o più occorrenze dell'elemento. Facendo riferimento alla precedente definizione <plugin>, si nota che un plug-in, contenente una sola definizione di esecuzione e nessuna dichiarazione di un punto di estensione o configurazione di estensione, è valido (ad esempio, librerie comuni da cui dipendono altri plug-in). Analogamente, è valido anche un plug-in che contenga solo configurazioni di estensione e nessuna definizione di esecuzione o punto di estensione, come avviene, ad esempio, quando classi inviate in altri plug-in vengono configurate in punti di estensione dichiarati in altri plug-in.

La sezione del manifest <requires> riporta tutti gli elementi dipendenti da altri plug-in.

<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
 plugin               CDATA #REQUIRED
 version              CDATA #IMPLIED
 match                 (perfect | equivalent | compatible | greaterOrEqual) "compatible"
 export               (true | false) "false"
 optional             (true | false) "false"
>

Ogni dipendenza viene specificata utilizzando un elemento <import>, che contiene i seguenti attributi:

La sezione <runtime> del manifest contiene una definizione di una o più librerie che compongono il run-time del plug-in. Queste librerie vengono utilizzate dai meccanismi di esecuzione della piattaforma (il caricatore di classe del plug-in) per caricare ed eseguire il codice corretto richiesto dal plug-in.

<!ELEMENT runtime (library+)> 
<!ELEMENT library (export*, packages?)>
<!ATTLIST library 
  name               CDATA #REQUIRED 
  type               (code | resource) "code"
>
<!ELEMENT export EMPTY> 
<!ATTLIST export
  name               CDATA #REQUIRED 
>
<!ELEMENT packages EMPTY>
<!ATTLIST packages
  prefixes           CDATA #REQUIRED
>

L'elemento <runtime> non ha attributi.

Gli elementi <library> definiscono insieme l'esecuzione del plug-in. Almeno un elemento <library> deve essere specificato. Ogni elemento <library> possiede i seguenti attributi:

Ogni elemento <library> può specificare la parte della libreria da esportare. Le regole di esportazione vengono specificate come un gruppo di maschere di esportazione. Per impostazione predefinita, dal momento che non è specificata nessuna regola di esportazione, la libreria viene considerata riservata. Gli attributi degli elementi <export> sono:

Ogni libreria può anche specificare i prefissi di pacchetto. Questi sono utilizzati per migliorare le prestazioni di caricamento delle classi per il plug-in e/o frammento. Se non è specificato l'elemento <packages>, per impostazione predefinita non viene utilizzato il potenziamento del caricamento classi. L'elemento <packages> presenta il seguente attributo:

Informazioni più dettagliate sui prefissi di pacchetto sono disponibili qui.

L'architettura della piattaforma si basa sui punti di estensione configurabili. La piattaforma definisce un gruppo di punti di estensione che svolgono le attività di estensione della piattaforma e del desktop, come ad esempio l'aggiunta di voci di menu o l'inserimento di editor incorporati. In aggiunta ai punti di estensione predefiniti, ogni plug-in supportato può dichiarare ulteriori punti di estensione. A questo scopo, il plug-in deve poter configurare la funzione plug-in con le estensioni fornite dall'esterno. Ad esempio, il plug-in Page Builder può dichiarare un punto di estensione per l'aggiunta di nuovi DTC (Design Time Control) nella propria tavolozza del generatore. In questo modo il plug-in definisce un'architettura per un DTC e implementa il codice che ricerca le estensioni DTC configurate nei punti di estensione.

<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name               CDATA #REQUIRED 
  id                 CDATA #REQUIRED    
  schema             CDATA #IMPLIED 
>

L'elemento <extension-point> presenta i seguenti attributi:

Le estensioni attuali sono configurate nei punti di estensione (predefinite o dichiarate dal plug-in) nella sezione <extension>. Le informazioni di configurazione vengono specificate come XML correttamente formattati e contenuti tra i tag <extension> e </extension>. La piattaforma non specifica la forma attuale del tag di configurazione, salvo prevedere la corretta formattazione XML. I tag vengono definiti dalle informazioni ulteriori del plug-in che ha dichiarato il punto di estensione. La piattaforma, nel momento in cui la logica del punto di estensione richiede tutte le proprie estensioni configurate, non analizza i tag di configurazione, ma si limita a inviare le informazioni di configurazione al plug-in, come parte dell'elaborazione del punto di estensione.

<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point              CDATA #REQUIRED 
  id                 CDATA #IMPLIED 
  name               CDATA #IMPLIED 
>

Gli attributi dell'elemento <extension> sono:

Importante: il contenuto dell'elemento <extension> viene dichiarato utilizzando la regola ANY. Così, ogni XML formattato correttamente può essere specificato nella sezione di configurazione dell'estensione (tra i tag <extension> e </extension>).

I frammenti vengono utilizzati per ampliare l'ambito di un plug-in.  Un esempio potrebbe essere incorporare dati come messaggi o etichette in un'altra lingua.

<?xml encoding="US-ASCII"?> 
<!ELEMENT fragment (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST fragment
  name                CDATA #REQUIRED
  id                  CDATA #REQUIRED
  version             CDATA #REQUIRED
  provider-name       CDATA #IMPLIED
   plugin-id            CDATA #REQUIRED
   plugin-version       CDATA #REQUIRED
   match                (perfect | equivalent | compatible | greaterOrEqual) "compatible"
>

Ogni frammento deve essere associato a un plug-in specifico. I plug-in associati vengono identificati attraverso <plugin-id>, <plugin-version> e, facoltativamente, <match>. Si noti che se questa specifica corrisponde a più di un plug-in, verrà utilizzato quello con il numero di versione più alto.

I componenti <requires>, <runtime>, <extension-point> e <extension> di un frammento verranno aggiunti in modo logico al plug-in corrispondente.

Gli attributi di <fragment> sono i seguenti:

Copyright IBM Corporation e altri 2000, 2003.