Fournisseurs de modèles

org.eclipse.core.resources.modelProviders

3.2

Un fournisseur de modèles a deux objectifs. En premier lieu, il permet de regrouper les mappages de ressources d'un modèle dans le but d'exécuter des opérations, à des fins d'affichage, etc. Par ailleurs, il permet de mapper un ensemble de ressources du système de fichiers aux mappages de ressources qui décrivent comment un modèle est associé aux ressources.

<!ELEMENT extension (modelProvider , extends-model* , enablement)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT modelProvider EMPTY>

<!ATTLIST modelProvider

class CDATA #REQUIRED>


<!ELEMENT extends-model EMPTY>

<!ATTLIST extends-model

id CDATA #REQUIRED>


<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Elément racine générique. L'élément peut être utilisé dans un point d'extension pour définir son expression d'activation. Les enfants d'une expression d'activation sont combinés à l'aide de l'opérateur and.



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

Cet élément représente une opération NOT sur le résultat d'évaluation de l'expression de son sous-élément.



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Cet élément représente une opération AND sur le résultat d'évaluation de toutes les expressions de ses sous-éléments.



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Cet élément représente une opération OR sur le résultat d'évaluation de toutes les expressions de son sous-élément.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Cet élément permet d'effectuer une instance de vérification de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si le type de l'objet est un sous-type du type spécifié par la valeur de l'attribut. Dans le cas contraire, EvaluationResult.FALSE est renvoyé.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Cet élément permet d'évaluer l'état de la propriété de l'objet concerné. L'ensemble des propriétés pouvant être testées peut être étendu à l'aide du point d'extension de testeur de propriétés. L'expression de test renvoie EvaluationResult.NOT_LOADED si le testeur de propriété effectuant le test réel n'est pas encore chargé.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Teste une propriété système en appelant la méthode System.getProperty et compare le résultat avec la valeur spécifiée via l'attribut value.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Cet élément permet d'effectuer une vérification d'égalité de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si l'objet est égal à la valeur fournie par la valeur de l'attribut. Dans le cas contraire, EvaluationResult.FALSE est renvoyé.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Cet élément permet de tester le nombre d'éléments d'une collection.



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

Cet élément remplace l'objet à contrôler pour tous ses éléments enfants par celui auquel la variable donnée fait référence. Si la variable ne peut pas être résolue, l'expression émet une exception ExpressionException lors de l'évaluation. Les enfants d'une expression with sont combinés à l'aide de l'opérateur and.



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Cet élément remplace l'objet à contrôler pour tous ses éléments enfants par celui auquel la variable donnée fait référence. Si la variable ne peut pas être résolue, l'expression émet une exception ExpressionException lors de l'évaluation. Les enfants d'une expression with sont combinés à l'aide de l'opérateur and.



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

Cet élément permet d'adapter l'objet actif en fonction du type spécifié par le type d'attribut. L'expression renvoie l'indication "non chargé" si l'adaptateur ou le type référencé n'est pas encore chargé. Elle émet une exception ExpressionException lors de la détermination de l'existence du nom du type. Les enfants d'une expression adapt sont combinés à l'aide de l'opérateur and.



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

Cet élément permet d'effectuer une itération sur une variable qui est de type java.util.Collection. Si l'objet actif n'est pas du type java.util.Collection, une exception ExpressionException sera émise lors de l'évaluation de l'expression.



L'exemple ci-dessous illustre l'utilisation du point d'extension modelProvider. (dans le fichier plugin.xml)
   

<extension id=

"modelProvider"

name=

"Library Model Provider"

point=

"org.eclipse.core.resources.modelProviders"

>

<modelProvider class=

"org.eclipse.examples.library.LibraryModelProvider"

name=

"Library Model Provider"

/>

<extends-model id=

"org.eclipse.core.resources.modelProvider"

/>

<enablement>

<with variable=

"affectedNatures"

>

<iterate operator=

"or"

>

<equals value=

"org.eclipse.team.examples.library.nature"

/>

</iterate>

</with>

<with variable=

"element"

>

<instanceof value=

"org.eclipse.core.resources.IFile"

/>

</with>

</enablement>

</extension>

La valeur de l'attribut class doit correspondre à une implémentation de org.eclipse.core.resources.mapping.ModelProvider.

La plateforme proprement dit ne comporte aucune nature prédéfinie. Un produit particulier peut inclure les fournisseurs de modèle requis.