Manifeste des plug-ins de la plateforme Eclipse

Version 2.1 - Dernière révision : 17 mars 2003

Les définitions des marques du manifeste ci-dessous utilisent divers jetons et identificateurs de noms. Pour supprimer toute ambiguïté, les règles de production qui s'y appliquent sont énoncées ci-dessous. En règle générale, tous les identificateurs font une distinction entre les minuscules et les majuscules.

SimpleToken := sequence of characters from ('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)

Le reste de cette section décrit la structure du fichier plugin.xml en tant que série de fragments DTD. Le fichier plugin.dtd présente la définition du DTD dans son intégralité.

<?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'élément <plugin> définit le corps du manifeste. Il peut en option contenir des définitions pour l'exécution du plug-in, des définitions des plug-ins requis par celui-ci, des déclarations de tous les nouveaux points d'extension introduits par le plug-in, ainsi que la configuration des extensions fonctionnelles (configurées dans des points d'extension définis par d'autres plug-ins ou introduites par le plug-in en question). Les attributs <plugin> sont les suivants :

Dans la règle de construction DTD XML, l'élément* signifie aucune ou plusieurs occurrences de l'élément. L'élément? signifie aucune ou une occurrence de l'élément et l'élément+ (utilisé ci-dessous) signifie une ou plusieurs occurrences de l'élément. En fonction de la définition de <plugin> ci-dessus, ceci signifie par exemple qu'un plug-in contenant uniquement une définition d'exécution et aucune déclaration de point d'extension ou de configuration d'extension est valide (par exemple, des bibliothèques courantes dont dépendent d'autres plug-ins).De même, un plug-in contenant uniquement des configurations d'extension et aucune exécution de point d'extension qui lui soit propre est également valide (par exemple, la configuration de classes fournies dans d'autres plug-ins dans des points d'extension déclarés dans d'autres plug-ins).

La section <requires> du manifeste déclare les dépendances envers d'autres plug-ins.

<!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"
>

Chaque dépendance est spécifiée à l'aide d'un élément <import>. Il contient les attributs suivants :

La section <runtime> du manifeste contient une définition d'une ou de plusieurs bibliothèques qui constituent l'exécution du plug-in. Les bibliothèques référencées sont utilisées par les mécanismes d'exécution de la plateforme (le chargeur de classe du plug-in) pour charger et exécuter le code correct requis par le 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'élément <runtime> n'a pas d'attribut.

Les éléments <library> définissent collectivement l'exécution du plug-in. Au moins un élément <library> doit être spécifié. Chaque élément <library> comporte les attributs suivants :

Chaque élément <library> peut spécifier la portion de bibliothèque à exporter. Les règles d'exportation sont spécifiées en tant que jeu de masques d'exportation. Par défaut, (aucune règle d'exportation spécifiée), la bibliothèque est considérée comme étant privée. L'élément <export> comporte les attributs suivants :

Chaque bibliothèque peut également spécifier les préfixes de package. Ces derniers sont utilisés pour améliorer les performances du chargement des classes pour le plug-in et/ou le fragment. Si l'élément <packages> n'est pas spécifié, alors les améliorations du chargement des classes ne sont pas utilisées par défaut. L'élément <packages> comporte l'attribut suivant :

Des informations plus détaillées sur les préfixes de package sont disponibles ici.

L'architecture de la plateforme est basée sur la notion de points d'extension configurables. La plateforme définit un jeu de points d'extension qui couvre les tâches d'extension de la plateforme et du bureau (par exemple, l'ajout d'actions de menu, la contribution d'un éditeur imbriqué). En plus des points d'extension prédéfinis, chaque plug-in fourni peut déclarer des points d'extension supplémentaires. En déclarant un point d'extension, le plug-in signale essentiellement la capacité de configurer la fonction du plug-in avec des extensions fournies de l'extérieur. Par exemple, le plug-in Page Builder peut déclarer un point d'extension pour l'ajout de nouveaux DTC dans sa palette de générateur. Ceci signifie que Page Builder a défini une architecture pour ce qui est censé être un DTC et a implémenté le code qui recherche les extensions DTC ayant été configurées dans les points d'extension.

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

L'élément <extension-point> comporte les attributs suivants :

Les extensions réelles sont configurées dans des points d'extension (prédéfinis ou nouvellement déclarés dans le plug-in) à la section <extension>. Les informations de configuration sont spécifiées au format XML, entre les marques <extension> et </extension>. La plateforme ne spécifie pas le format réel de la marque de configuration (autre que devant être du XML syntaxiquement correct). Les marques sont définies par le fournisseur du plug-in ayant déclaré le point d'extension. La plateforme n'interprète pas réellement les marques de configuration. Elle transmet simplement les informations de configuration au plug-in en tant que part du traitement du point d'extension (au moment où le point d'extension demande la totalité de ses extensions configurées).

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

L'élément <extension> comporte les attributs suivants :

Important : le contenu de l'élément <extension> est déclaré à l'aide de la règle ANY. Ceci signifie que tout XML syntaxiquement correct peut être spécifié dans la section de configuration de l'extension (entre les marques <extension> et </extension>).

Les fragments permettent d'étendre la portée d'un plug-in.  Par exemple, d'y introduire des données telles que des messages ou des libellés dans une autre langue.

<?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"
>

Chaque fragment doit être associé à un plug-in spécifique. Le plug-in associé est identifié par <plugin-id>, <plugin-version> et éventuellement <match>. Si cette spécification correspond à plusieurs plug-in, le plug-in correspondant dont le numéro de version est le plus élevé est utilisé.

Les composants <requires>, <runtime>, <extension-point> et <extension> d'un fragment sont ajoutés logiquement au plug-in correspondant.

Les attributs <fragment> sont les suivants :

Copyright IBM Corporation and others 2000, 2003.